Umbraco Site Development: .NET 8, Headless, Multisite

A .NET team gets a task to build a corporate portal with multisite structure, role-based access, and headless API for mobile apps. The choice falls on Umbraco — an open-source CMS on ASP.NET Core. But without proper architecture and performance tuning, the project turns into a swamp with constant N+

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1285
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1032
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    553

A .NET team gets a task to build a corporate portal with multisite structure, role-based access, and headless API for mobile apps. The choice falls on Umbraco — an open-source CMS on ASP.NET Core. But without proper architecture and performance tuning, the project turns into a swamp with constant N+1 queries and response times over 2 seconds. We've encountered this many times and developed an approach that yields TTFB <200 ms on Umbraco 13.

For example, a company with a multisite structure (5 domains) and headless integrations for mobile apps approached us. After an audit, we found that N+1 queries on the old solution caused lag. We redesigned the architecture, implemented NuCache and the Repository pattern — TTFB dropped from 1.2 s to 180 ms, and database load decreased fourfold.

Why Umbraco for Corporate Sites?

Umbraco is a CMS on .NET 8 with an open-source MIT license. It runs on SQL Server or SQLite and supports clustering. It's well-suited for corporate sites, portals, and multisite infrastructures — especially where the client is tied to the Microsoft stack or needs a headless CMS with enterprise capabilities. Unlike WordPress, Umbraco provides strongly-typed models and a built-in headless Delivery API. License savings compared to proprietary CMS can reach 70%. For instance, Sitecore costs from $100,000 per year, while Umbraco is free (MIT license).

In tests, Umbraco with NuCache delivers TTFB <200 ms, whereas a typical WordPress installation hits 500–800 ms. This is achieved through built-in caching and model generation at compile time.

Comparison of Umbraco with Other CMS: WordPress, Sitecore, Drupal

Criteria Umbraco WordPress Sitecore
Model type Strongly-typed (ModelsBuilder) Dynamic (WP_Query) Strongly-typed, but heavy
Headless API Built-in Delivery API Plugins (WPGraphQL) Experience Edge (expensive)
Performance TTFB <200 ms (NuCache) TTFB 500–800 ms (no cache) TTFB <300 ms (cached)
License Free (MIT) Free (GPL) ~$100,000/year
Multisite support Out of the box Via multisite plugin Built-in but complex

Umbraco is 2-3 times faster than WordPress on standard hosting and requires no license fees unlike Sitecore.

Architecture and Setup

Typical solution structure:

MyProject/ ├── MyProject.Web/ ├── MyProject.Core/ └── MyProject.Tests/ 

The key configuration file is Program.cs, where all components are wired up:

// Program.cs WebApplicationBuilder builder = WebApplication.CreateBuilder(args); builder.CreateUmbracoBuilder() .AddBackOffice() .AddWebsite() .AddDeliveryApi() .AddComposers() .Build(); WebApplication app = builder.Build(); await app.BootUmbracoAsync(); app.UseUmbraco() .WithMiddleware(u => { ... }) .WithEndpoints(u => { ... }); await app.RunAsync(); 

For adding services, we use Composers. Example service registration and handlers:

public class SiteComposer : IComposer { public void Compose(IUmbracoBuilder builder) { builder.Services.AddScoped<IArticleService, ArticleService>(); builder.Services.AddScoped<ISitemapService, SitemapService>(); builder.AddNotificationHandler<ContentPublishedNotification, SearchIndexHandler>(); } } 

Strongly-typed Models and Headless API

Umbraco generates models via ModelsBuilder. Usage in a controller:

public class ArticleController : RenderController { [HttpGet] public IActionResult Index() { if (CurrentPage is not ContentModels.Article article) return NotFound(); var viewModel = new ArticleViewModel { Title = article.Title, Body = article.Body, }; return CurrentTemplate(viewModel); } } 

For headless, we use the Delivery API, enabled in appsettings.json:

{ "Umbraco": { "CMS": { "DeliveryApi": { "Enabled": true, "PublicAccess": true, "ApiKey": "your-api-key" } } } } 

API calls: GET /umbraco/delivery/api/v2/content?contentType=article.

How to Set Up Headless Delivery API? Step-by-Step

  1. Enable Delivery API in appsettings.json.
  2. Set an API key if authorization is required.
  3. In the admin panel, mark content types available through the API.
  4. Configure CORS for external clients.
  5. (Optional) Enable caching at the CDN level.

Development Process for an Umbraco Site

Stage Duration What We Do
Analysis and prototyping 1–2 weeks Gather requirements, create content type map, UX prototype
Architecture design 1 week Design solution structure, configure NuCache, plan integrations
Implementation 2–4 weeks Build templates, develop Surface and Render controllers, set up Delivery API
Testing 1 week Conduct load testing, verify Core Web Vitals
Deployment and handover 3–5 days Set up CI/CD, deploy to production, train editors

Timelines and Scope

Project scope Timelines
Corporate site (10–15 content types) 3–5 weeks
With headless API and integrations 6–10 weeks
Redesign of existing instance from 2 weeks

Cost is calculated individually based on the scope and complexity of integrations. Contact us for a consultation to get an accurate estimate.

What is Included in the Result

  • Fully configured Umbraco on your hosting or in the cloud.
  • Source code (Git repository) with an architecture ready for scaling.
  • Documentation on content types and API.
  • Editor training (up to 4 hours).
  • 3-month warranty on identified bugs.
  • Recommendations for caching and performance optimization.

Our experience: over 5 years of Umbraco development, 15+ projects delivered, average client rating 4.9/5. We use only licensed software and follow best practices. Contact us for a consultation — we'll help you find the optimal solution.

Official Umbraco documentation: Umbraco CMS Documentation