-
andyboot
- Seamlessly Allow Segmentation by Extending uSync Imports - This code was created to automatically enable segmentation support on content types and their properties during uSync imports in Umbraco. Normally, you’d have to manually update countless document types, compositions, and properties to enable segmentation so they can be used with features like Umbraco Engage. By hooking into the uSyncImportingItemNotification, the handler ensures that whenever a content type is imported, its variation settings are corrected: Nothing becomes Segment, and Culture becomes CultureAndSegment, leaving other values untouched. This removes a repetitive manual task, ensures consistency across environments, and gives teams confidence that segmentation is always applied correctly during synchronisation.
- Strongly Typed Base Views for Umbraco Block List Items - By default, Umbraco asks you to inherit UmbracoViewPage in every block partial, which leaves you pulling Content and Settings out of Model as plain IPublishedElement and manually casting them to your Models Builder types—repetitive, messy, and error-prone. To fix that, you can treat block list items as first-class views with two simple base classes: @inherits UmbracoBlockListItemView<MyContentBlock, MySettingsBlock> when you’ve got both content and settings, or @inherits UmbracoBlockListItemView when it’s just content. With these, your partials stay clean and easy to read, because you can call @Model.Content and @Model.Settings directly as strongly typed objects, with content throwing a clear error if the wrong type sneaks in and settings handled safely as optional. This makes block views feel purpose-built, removes boilerplate casting, and keeps your Razor files focused on rendering rather than plumbing.
- Deep Dive Into Umbraco String Extension Methods - This post takes a closer look at the string extension methods provided by Umbraco, originally written for version 11. It walks through a wide range of helpers—covering everything from sanitising input, stripping HTML, and truncating text, to detecting JSON, generating safe URL segments, and working with file extensions. While the article was written with Umbraco 11 in mind, most of these methods (or their equivalents) remain just as useful in later versions, making it a handy reference for anyone working with text in Umbraco today.
- Umbraco Forms - Add additional attributes to existing field types - This blog walks through how to extend existing Umbraco Forms field types by adding new custom attributes. For example, the author shows how you can inherit from the default Textfield, add a “Span all columns?” setting, and then use that in the form view to control layout (e.g. span across two columns via CSS). It’s a great guide if you ever need to tweak or customise the built-in form fields beyond their default options.
- Debug HTTP Requests within Visual Studio - This gist shows how to set up and debug HTTP requests (e.g. APIs) directly inside Visual Studio, making it easier to test endpoints without switching to external tools. It includes sample api.http scripts (for things like POSTing JSON payloads) and guidance on configuring your debugging environment. A handy reference if you frequently work with backend APIs and want streamlined in-IDE testing capabilities.
- How to Upgrade from Umbraco 8 to 13 LTS - A walkthough the full migration journey—from a legacy .NET Framework setup in Umbraco 8 to a modern .NET 8 + Umbraco 13 architecture. It outlines why lingering on Umbraco 8 is risky (no security patches, falling behind on features), and then maps the upgrade path: first migrating to Umbraco 10, then onward to 13. Along the way it highlights key changes (e.g. switching from System.Web to ASP.NET Core, moving from Surface Controllers to View Components, adopting DI patterns, reworking old editor data with uSync migrations, etc.). The author also shares practical tips—like using Git worktrees to manage multiple codebases, and handling Umbraco Forms version jumps—to ease the process.
-
glombek
- Modifying the ExternalIndex - This sample demonstrates how to modify the default ExternalIndex Examine index.
- Exact-matching multiple strings when searching with Examine - Searching for exact strings in Examine can be a little counter-intuitive. Couple that with the confusion of multiple values (potentially using the Repeatable text strings or tag data types) and inconsistencies between the backoffice tooling and the fluent API and you've got a right potential mess on your hands!
- Umbraco AngularJS filter cheat sheet - In Umbraco v13 and below, the Block editors (list and grid), Nested Content and custom list views allow you to customise how the summarized/collapsed items appear using AngularJS templates and filters - you're not just stuck with the default!
- Migrating Rich Text Editor Macros to Blocks using uSync Migrations - Modern Umbraco allows Blocks to be added inline in the Rich Text Editor. Umbraco 14 removes support for macros. This code sample will map macros to blocks with the help of uSync Migrations.
-
jawood1
- Umbraco Mock Helper for Unit Testing - A helper class for creating mocked Umbraco objects for unit testing. Includes methods for mocking IPublishedContent, IPublishedElement, BlockList/BlockGrid items, MediaWithCrops, UmbracoHelper, and URL providers using Moq.
- Umbraco Controller Testing Base Class - Base class for testing Umbraco-based controllers with ASP.NET Core. Provides a method to create mocked IFeatureCollection with UmbracoRouteValues, allowing access to CurrentPage in controller tests. Includes proper setup for HTTP request/response features.
-
jbreuer
- Umbraco OpenID Connect example implementation - Umbraco OpenID Connect example implementation is a ready-to-run Umbraco 14+ solution demonstrating how to integrate external login providers using OpenID Connect for members, with a streamlined structure for easy setup and testing. Ideal for developers testing or implementing authentication quickly.
- Real-Time FAQs: Updating Umbraco with the Management API - Example of syncing FAQ content between Umbraco and another CMS using the Management API. Changes trigger automatically via webhooks so both systems stay up to date in real time.
- Store Sitecore XM Cloud Forms data in Umbraco with the UI Builder - Shows how to capture Sitecore XM Cloud Form submissions and store them in a custom Umbraco table. Data can then be managed easily through the Umbraco UI Builder interface.
- Umbraco headless member auth with external login providers - Demonstrates how to secure content via the Umbraco Delivery API using OpenID Connect. Adds external login support for headless member authentication in a federated setup.
- Using the Umbraco Content Delivery API with Sitecore XM Cloud Components - Integrates the Umbraco Content Delivery API with Sitecore XM Cloud to reuse content across platforms. Useful for projects running both CMSs that want to share the same data.
-
jemayn
- The problem of referenced content in Examine indexing - A common pattern when extending the Examine index is adding searchable properties from referenced nodes. This blogpost describes how to do so and what can be problematic about doing so.
-
kjac
- Protecting content with Umbraco Delivery API - A demo of handling protected content and member auth in the Umbraco Delivery API. Features a working sample project.
- The No-Code Delivery API package - Introducing the new No-Code Delivery API package for Umbraco.
- The No-Code Headless Mode package - Introducing the new No-Code Headless Mode package for Umbraco.
- Jamstack for free with Azure and Cloudflare - Building a Jamstack site and hosting it for free with Azure and Cloudflare. Built with Astro using the Umbraco Delivery API as data source.
- Quick n' dirty blog with Astro and Umbraco - Setting up an Astro blog using Umbraco as a Headless CMS, Quick and dirty and to the point. Expect cut corners and lack of perfection.
- Content editor preview for static websites - How to enable content editor preview when building static sites, featuring Umbraco and Astro.
- Umbraco to Relewise with Workers - Pushing product data from Umbraco Commerce to Relewise, using Cloudflare Workers as the integration layer.
- Routable custom data in the Delivery API - Routing custom data entities through the the Umbraco Delivery API.
- A tip, a trick and a hack for the Delivery API - Three less known ways of tailoring and extending the Delivery API.
- Lunr.js search powered by Umbraco - A guide to setting up Lunr.js search with data from the Umbraco Delivery API.
- The Delivery API is not only for headless! - The Umbraco Delivery API is not exclusively meant to be used with headless builds - it can do so much more.
- Building a search service from scratch - An experimental Node.js search service built with MiniSearch and powered by Umbraco.
- The Next.js example for Umbraco is live! - A quick run-down of the official Next.js example site for Umbraco.
- Hello, Umbraco Management API - Building an integration with the Umbraco Management API in Node.js using Client Credentials authentication.
- Crafting an SPA with Umbraco - A quick tutorial on how a SPA can be built using Umbraco and the Delivery API
- So you want to cache all the things? - An introduction to caching in Umbraco 15 and how to cache all the things without impacting the site boot time.
- Management API + NSwag = win - Consuming the Umbraco Management API with an NSwag client to recreate the Clean Starter Kit from scratch.
- Rebuilding a package for Umbraco 15 - Lessons learned while porting the No-Code Delivery API package to Umbraco 15.
- Headless Preview for Umbraco - Introducing the Headless Preview package for Umbraco
- Using UMB_UCONTEXT with Umbraco 14+ - How to authenticate Umbraco backoffice users outside the scope of the backoffice itself, without relying the UMB_UCONTEXT cookie
- Uncovering the Next.js example for Umbraco - Extending the official Next.js example site for Umbraco with additional functionality.
- Umbraco 16 brings back segments - Segments return to Umbraco with Umbraco 16. Here's a quick tutorial on how to enable them.
- Tailoring member content with segments - Segments return to Umbraco with Umbraco 16. Here's a quick tutorial on how to enable them.
- Customizing fallback for Umbraco - Building a custom solution to handle property value fallback, both for templated rendering and for the Delivery API.
- Trying out the new Umbraco Search - Creating a demo site to try out the new Umbraco Search.
- Tailored indexing for Umbraco Search - Exploring extension points for tailored content indexing in Umbraco Search.
- Migrating extensions from Umbraco 13 to 17 - Porting a custom property editor from Umbraco 13 to Umbraco 17.
-
liamgold
- Taking Stripe Payments in Umbraco Commerce - Step-by-step guide to adding Stripe to the Umbraco Commerce Demo Store (Umbraco 16, .NET 9) with screenshots, commands, and notes on webhooks and going live.
-
liamlaverty
- Create a nextjs frontend for Umbraco - A detailed guide to implementing a Next.js frontend for Umbraco via the Content Delivery API. Tested with Umbraco v13, and Next.js v14
-
luuk1983
- Add custom condition to an existing backoffice extension - This sample demonstrates how to add a custom condition to an existing backoffice extension in Umbraco.
- How to Sync NuGet and Umbraco Package versions automatically in Umbraco 14+ - Automatically sync your umbraco-package.json version with your NuGet package version in Umbraco 14+.
-
mbreas
- Umbraco Remote Filesystem implementation example - Umbraco Remote Filesystem example implementation is a ready-to-run Umbraco solution demonstrating how to integrate external filesystem that allowes you to store your Umbraco media remotely. Ideal for loadbalanced websites
-
owainjones
- How to access Composition properties on an IPublishedContent object - Umbraco's compositions are perfect for creating reusable properties across DocTypes, but how do we access these properties on an IPublishedContent object?
- Automatically Adding Member Groups to Umbraco Public Access - How to automatically add/enforce a Member group on nodes that are set to use group-based Public Access restrictions.
- How to customise media url paths - How to use a custom IMediaPathScheme to change the defaut url route of Media items.
- Adding Custom database tables to your package - How to add custom database tables to your package, using the PackageMigrationPlan class, npoco and running migrations.
- Umbraco 13 - Rich Text Editor - How to set Ignore User Start Nodes option - The 'ignore user start nodes' option is not available on the default Rich Text Editor data type. Here's how to set it via by creating a new one.
-
paulsterling
- Extend Umbraco Forms with Custom Workflows - In this example we create a custom workflow that detects and redirects form submissions containing nonsense or gibberish using a specialized classifier, and then apply a second workflow to check for disposable email addresses. Extending workflows can add significant value to Umbraco Forms by integrating custom business logic, enhancing validation, and allowing more tailored responses to form submissions.
-
rickbutterfield
- Adding 2FA (+ recovery codes) for Umbraco Members - Implementing two-factor authentication for Umbraco 13 members, including recovery codes support. Extend Umbraco's built-in 2FA functionality with proper recovery code generation and validation.
- Keeping Sessions Alive in Umbraco with Third-Party Payment Providers - Integrating with third-party payment providers in Umbraco comes with a few unique challenges, particularly around session persistence. For instance, when users complete a transaction and return to the site, they often find their session data gone.