hear what the community is talking about

Community Blogs

We’ve gathered blog posts from across the internet to highlight the many voices that make up our community. Powered by Umbraco, this space brings together diverse stories, ideas, and perspectives in one easy‑to‑explore hub. Dive in and discover what the community is creating, sharing, and talking about.

Want to add your future blog posts to the list? Submit it here!

Umbraco

Expanding the backoffice search in Umbraco - Highlighting lesser known Umbraco features

Recently, I started using Erik-Jan Westerndorp's community package "Heading". on a project. It’s one of those packages that solves a very specific problem really neatly. In this case, the client wanted editors to be able to choose the heading level for a title on an element. So, for example, one image block might need an H2, while another might need an H3, depending on where it sits on the page. The package worked great for that. But, as often happens, solving one problem uncovered another. Not long after, the client came back with a new bit of feedback: I can’t search for the custom title I’ve added. And honestly, my first reaction was: surely that should just work? So I gave it a try - and they were right. The backoffice document search was only finding results based on the page name, not on values stored in custom fields. Searching by page name returns the page Searching by page title returns no results The first thing I did was check the internal index — and the title field was there, so that allowed me to cross off one possible issue. So the content was being indexed - it just wasn’t being searched by the backoffice search. I asked a few colleagues about it, and the general feeling was that this probably wasn’t something you could change. The assumption was that Umbraco backoffice search just searches a predefined set of fields and that was that. Still, it felt like there had to be a way. And there is. The Missing Piece: UmbracoTreeSearcherFields It turns out this is already supported and documented, but it was a feature I hadn’t come across before. Since I suspect I’m not the only one, it’s worth highlighting here: Backoffice Search - A guide to customization of Backoffice Search That article introduced me to UmbracoTreeSearcherFields, which controls the indexed fields used by backoffice search. By replacing it with a custom implementation, you can expand the list of searchable fields. My first attempt looked like this: public class CustomUmbracoTreeSearcherFields(ILanguageService languageService) : UmbracoTreeSearcherFields(languageService), IUmbracoTreeSearcherFields { public new IEnumerable<string> GetBackOfficeDocumentFields() { return new List<string>(base.GetBackOfficeFields()) { "title" }; } } I restarted my environment, tried again… and it still didn’t work. Backoffice search could still only find the page by name. The Catch: Variant Field Names After taking a closer look at the index, the reason became clear: the field key wasn’t simply title. Because the property had language variants, the indexed field name includes the language ISO code. So instead of hardcoding a single field name, I updated the implementation to generate the variant field names dynamically. That also makes it more future-proof — if new languages are added later, search continues to work without any code changes. Here’s the updated version: public class CustomUmbracoTreeSearcherFields(ILanguageService languageService) : UmbracoTreeSearcherFields(languageService), IUmbracoTreeSearcherFields { private static readonly string TitleAlias = PublishedModelHelper.GetModelPropertyAlias((Page x) => x.Title); public override IEnumerable<string> GetBackOfficeDocumentFields() { return base.GetBackOfficeDocumentFields().Concat(GetVariantFieldNames(TitleAlias)); } private IEnumerable<string> GetVariantFieldNames(string alias) => languageService.GetAllAsync().GetAwaiter().GetResult().Select(l => $"{alias}_{l.IsoCode.ToLowerInvariant()}"); } And with that in place, the backoffice search started returning results based on the custom title value as well. Why I’m sharing this This is one of those things that’s probably obvious once you’ve worked with it before, but until then, it’s easy to assume backoffice search is less flexible than it actually is. If you’ve got editors relying on custom fields it’s worth checking whether those fields are included in backoffice search. If they’re already indexed, you may only need to extend UmbracoTreeSearcherFields to make them searchable. A small change, but a very useful one for editors.

by Bernadet Goey

Umbraco Codegarden 2026 Day 1: AI, Elements & Community News | manifesto

Explore key takeaways from Day 1 of Umbraco Codegarden 2026, including major product keynotes, AI governance, new Elements features, and the Umbraco Awards.

by Rich Howell

Setting up Windows Server 2025 for Umbraco

Every time I build a new server I go through the same sequence, and every time I find myself trying to remember what I did last time. So this is my reference for turning a clean Windows Server 2025 instance into something that will happily host Umbraco on IIS and SQL Express, in the order I actually do things.

by Justin Neville

Why Umbraco 17 Is More Than an End-of-Life Escape

by Diagram

A reusable deploy pipeline for Umbraco Cloud

Create a reusable deploy pipeline for Umbraco Cloud

by Owain Williams

Assume your software will outlive its end-of-life

We still run an Umbraco v4 site, on purpose. End-of-life is a date on the vendor's calendar, not a fact about your customer's business. Why the version you ship is the one worth designing for, and how to tell a managed risk from plain neglect.

by Tim Gaunt

Build a custom Umbraco Automate action

Creating a custom action in Umbraco Automate to pull tags from a blog and display them as hashtags in social connections.

by Owain Williams

No Laptop, Still Learning: An Umbraco Developer's Holiday Checklist

In a few days, I'm packing my bags for a holiday, and for the first time in ages, my laptop will stay home. No Visual Studio. No Docker containers spinning up in the background. No sneaky last-minute Git commits. And, honestly, no more of those "let me just fix this one bug real quick" moments.And to be completely honest? I can't wait.But that doesn't mean I'm putting my developer brain entirely on pause. If you've been working with Umbraco for years—like me—you know it's much more than a tool you clock in and out of each day. It's a community, an ecosystem, and, let's be real, a craft that's always changing. Even if I don't write a line of code, there's no shortage of ways to stay inspired and come back from my break with fresh perspectives.Here's how I'm planning to keep the inspiration flowing while away.

by Dave Jonker

Migrating Umbraco 13 to Umbraco 17 on Umbraco Cloud

A developer guide to upgrading an Umbraco 13 site to Umbraco 17 on Umbraco Cloud by migrating locally and deploying into a fresh Cloud project, covering the full sequence through to a low downtime go live.

by Justin Neville

Pinning docs.umbraco.com to a Specific Version with Tampermonkey

Here is a Tampermonkey userscript that pins docs.umbraco.com to whatever version you are actually working on.

by Nathaniel Nunes

How I upgraded Umbraco 13 to 17 in less than two hours!

I jumped straight from Umbraco 13 to 17 on Umbraco Cloud in under two hours, TinyMCE to Tiptap and all. Here's the full checklist of what I touched.

by Corné Hoskam

Codegarden 2026 - a little late, because it gave me something to build

A few weeks ago I was in Copenhagen for my first Codegarden, and one quiet thought has stuck with me...

by Mike Isaacs