Umbraco SEO
How to make an Umbraco site rank — what the .NET CMS handles out of the box (clean URLs, automatic 301s on rename, HTTPS), what needs a package (meta fields, XML sitemaps, robots.txt, canonical tags, noindex), and what needs custom developer work (hreflang, structured data). The package stack — SeoToolkit, SEO Checker by Soeteman Software, URL Tracker — and why uMarketingSuite (now Umbraco Engage) is not an SEO tool.
Umbraco is a .NET-based open-source CMS, and its defining SEO trait is that it's developer-led by default: unlike WordPress, where a non-developer installs a plugin, almost every meaningful SEO feature in Umbraco needs a .NET developer or a package. Think of it in three tiers. Built-in: clean URLs from node names, automatic 301 redirects when you rename a node's URL, HTTPS enforcement, basic 404 handling. Needs a package: meta fields, XML sitemaps, robots.txt editing, noindex controls, canonical tags — via SeoToolkit (free, open-source, by patrickdemooij9) or SEO Checker (commercial, by Soeteman Software — not Jumoo, who make uSync). Needs custom dev: hreflang for Language Variants, structured data, advanced canonical logic. uMarketingSuite rebranded to Umbraco Engage in November 2024 and is a CRO/personalization platform, not a technical SEO tool. As of mid-2026, Umbraco 17 (released November 2025) is the current LTS; Umbraco 13, the previous LTS, is in its Security phase and reaches end of life in December 2026 — plan an upgrade path before then. The smart play is building self-serve SEO controls into the backoffice before an SEO team ever touches the site.
Evidence for this claim The article's described umbraco-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: Umbraco CMS documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTL;DR — Umbraco is a CMS built on Microsoft’s .NET, popular with bigger and agency-built sites. The one thing to know up front: it’s developer-led. On WordPress you can install Yoast yourself and manage SEO without a developer. On Umbraco, almost every SEO feature — even meta titles and descriptions — needs either a developer or a package. It does give you clean URLs and automatic redirects when you rename a page, which is genuinely handy. Everything else you add.
What Umbraco SEO is
Umbraco is an open-source CMS, like WordPress, but built on Microsoft’s .NET framework instead of PHP. You’ll find it behind a lot of enterprise sites, agency builds, and anywhere there’s a .NET team. “Umbraco SEO” just means optimizing a site built on Umbraco so search engines can crawl it, understand it, and rank it.
The thing to know before anything else: Umbraco ships with almost no SEO functionality out of the box. People hear “Umbraco is SEO-friendly” and assume the basics are handled. They mostly aren’t. A fresh Umbraco site has no place to write a meta title or description, no XML sitemap, no robots.txt, and no structured data. You add those — either with a package or by having a developer write the code.
What you get for free
Umbraco does hand you a few useful things by default:
- Clean URLs. Umbraco turns a page’s name into a tidy, lowercase, hyphenated URL automatically.
- Automatic redirects on rename. This is the standout. When you rename a page and its URL changes, Umbraco quietly sets up a 301 redirect from the old URL to the new one — no plugin, no developer ticket. Most CMSes don’t do this.
- HTTPS and proper 404 handling.
- Multilingual content (called Language Variants) — a real strength if you run a site in several languages.
What you have to add
Everything most people think of as “SEO basics” lives here:
- Meta titles and descriptions
- An XML sitemap
- A robots.txt file
- Canonical tags and noindex controls
- hreflang tags for multilingual sites
- Structured data (schema)
The good news is you don’t have to build all of it from scratch. A free package called SeoToolkit adds meta fields, sitemaps, robots.txt editing, redirects, and canonical support to the backoffice. A paid one called SEO Checker (made by Soeteman Software) adds those plus search-result previews and audit features. Install one of those and a non-technical editor can finally manage the basics — though getting it installed and configured is still a developer job.
The thing most people get wrong
Two myths to kill early:
- “Umbraco is SEO-friendly out of the box.” Only for clean URLs and redirects. Everything else needs work.
- “uMarketingSuite is the SEO package.” No. uMarketingSuite was renamed Umbraco Engage in late 2024, and it’s a marketing/analytics/A-B-testing tool — not a technical SEO package. It won’t manage your meta tags or sitemap.
Want the developer-level version — the package comparison, how to wire meta fields into templates, hreflang for Language Variants, and the current LTS/version landscape? Switch to the Advanced tab.
Evidence for this claim The article's described umbraco-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: Umbraco CMS documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTL;DR — Umbraco is a .NET open-source CMS, and its SEO story is developer-led by default. Three tiers: built-in (clean URLs from node names, automatic 301 on URL rename, HTTPS, 404s, Language Variants); needs a package (meta fields, XML sitemap, robots.txt, noindex, canonicals — via SeoToolkit (free) or SEO Checker by Soeteman Software (paid)); needs custom dev (hreflang, structured data, advanced canonical logic). SEO Checker is by Soeteman Software, not Jumoo (who make uSync). uMarketingSuite became Umbraco Engage in Nov 2024 and is a CRO tool, not SEO. Umbraco 17 (Nov 2025) is the current LTS; 13, the prior LTS, is in its Security phase and hits end of life in Dec 2026. The real craft is building self-serve SEO controls into the backoffice before an SEO team arrives.
What Umbraco is (the 30-second version)
Umbraco is an open-source CMS built on ASP.NET Core. You model content with Document Types (typed content templates), arrange pages in a content tree, and render them with Razor templates. It comes two ways: Umbraco Cloud (managed hosting on Azure with Cloudflare at the edge — automatic TLS, firewalls, point-in-time restore) and self-hosted (your own server, full control). Both run the same CMS; the difference is who manages the infrastructure.
The single most important framing for SEO: most SEO configuration in Umbraco requires a .NET developer. This is the structural difference from WordPress, where a non-developer can install a plugin and self-serve. On Umbraco, even basic meta fields are a developer task unless a package has already added them.
The three tiers of Umbraco SEO
I find it cleanest to sort every SEO feature into one of three buckets.
Tier 1 — built in. Clean URL generation from node names (an automatic
ToUrlSegment() transform produces lowercase, hyphenated slugs), automatic 301
redirects when a node’s URL changes on rename, HTTPS enforcement, proper 404
status codes, and Language Variants (the multilingual content model).
Tier 2 — needs a package. Meta title/description fields, XML sitemaps, robots.txt editing, noindex controls, and canonical tags. These all come pre-built in SeoToolkit (free) or SEO Checker (paid).
Tier 3 — needs custom dev. hreflang for Language Variants, structured data, and advanced canonical logic. Even with a package, these often need template code or careful per-culture configuration.
The auto-301 on rename — Umbraco’s quiet win
This is the built-in feature most guides miss, and it’s genuinely good. Umbraco’s official URL tracking docs put it plainly: “Whenever a document is published and causes changes to its URL (and any of its descendants’ URLs), Umbraco makes a note of the old URLs. Whenever an incoming request is served and the default content finders cannot find a matching published document, Umbraco checks whether the URL matches one of these saved URLs. If a match is found, Umbraco returns a 301 Redirect response pointing to the new URL of the document.”
In practice: rename a page, change its slug, and the old URL keeps working with a 301 automatically. No plugin (WordPress needs Yoast Premium or Redirection for the equivalent), no developer ticket. This alone prevents a lot of the broken-link and lost-equity damage that routine content editing causes elsewhere. Don’t over-read it, though: this is publication-triggered tracking of a document’s own URL changes — it does not cover arbitrary rewrite rules, or the more complex culture-and-hostname changes you hit during a migration. Name your hosting or middleware layer for those, not Umbraco core.
Worth knowing alongside it: Umbraco has several reserved routing property
aliases, and they’re easy to mix up because their names sound similar but their
behavior isn’t interchangeable. umbracoUrlName changes the URL path suffix a
node generates — set a value and it overrides the auto-generated slug, while the
backoffice node name stays whatever you like. umbracoUrlAlias is different
again: a comma-separated list of alternate full paths that resolve to the same
node, masking the real URL in the browser’s address bar rather than redirecting
to it. umbracoRedirect sends a 302 (temporary) redirect to another node,
picked via a content picker property — it’s a visible redirect, not silent.
umbracoInternalRedirectId is the one that does the silent internal rewrite:
the target page’s content is served transparently, with no redirect visible to
the browser. Treat these four as distinct tools, not variations on one
“redirect” concept, and confirm actual behavior in your own version’s docs
before wiring one into a migration. For advanced control, a developer can also
implement IUrlSegmentProvider to pull slugs from a dedicated field instead of
the node name. One more gap: trailing-slash and www/non-www consistency is not
handled natively — it needs ASP.NET Core middleware or IIS rewrite rules.
Metadata — the developer workflow
Because Umbraco ships no meta fields, the standard pattern is:
-
Add a “SEO” tab/group to your Document Types — or, better, a composition you can reuse across types.
-
Add properties:
metaTitle,metaDescription, anoIndextoggle, optionalcanonicalUrl, and Open Graph fields (ogTitle,ogDescription,ogImage). -
Render them in the master template with Razor:
<title>@Model.Value("metaTitle")</title> <meta name="description" content="@Model.Value("metaDescription")" /> <link rel="canonical" href="@Model.Url(mode: UrlMode.Absolute)" /> -
Add fallback logic so an empty
metaTitledefaults to the node name.
Or install a package that adds this composition for you. That’s the whole choice in Umbraco SEO, over and over: build it, or install a package that built it.
One thing worth internalizing here: a Document Type only defines what fields
exist — a field having a value in the backoffice proves nothing about what
ends up in the deployed HTML. Output is owned by the template. Umbraco’s
current templating supports master-template inheritance with named sections,
so a child template can place its metaTitle/metaDescription/canonical
markup into the master’s <head> — but that means every template that inherits
from the master (and every fallback path when a section is left empty) needs to
be checked individually. Don’t assume one Document Type’s rendering behavior
generalizes to every page type on the site; verify the rendered HTML per
template.
The package stack (and one to not confuse)
SeoToolkit (by patrickdemooij9) — free, open-source, on NuGet. Ships a dedicated package release aligned to each Umbraco major (currently up through Umbraco 18, released mid-2026); it’s actively maintained, but confirm your Umbraco version maps to the right package version before installing. Meta-field management, dynamic sitemap generation (per-domain sitemaps plus a sitemap index), a backoffice robots.txt editor with validation, script manager, redirect management, and canonical support. The sitemap automatically adds itself to robots.txt. This is the default starting point for most builds. From its README: “SeoToolkit creates a /sitemap.xml for each domain and also a sitemap index with all your sitemaps listed within. All sitemaps generated have a valid syntax, so Google will have no problem with indexing it.”
SEO Checker (by Soeteman Software) — commercial (free trial on localhost; license for production). Also tracks Umbraco’s major-version cadence with its own releases (v18.0.1 was current as of mid-2026, supporting Umbraco 18+) — check the release notes for the version that matches your CMS. Adds SERP snippet previews and social previews in the backoffice while editing, automated issue detection (missing meta tags, broken links, canonical issues), redirect management, automatic robots.txt and sitemap.xml, and — importantly — multilingual support that renders per-culture metadata including hreflang tags. Critical attribution note: SEO Checker is made by Soeteman Software, not Jumoo. Jumoo makes uSync (a content deployment/sync tool), which is a different thing entirely. This mix-up is common; don’t repeat it.
URL Tracker — a redirect-management package (404/302 monitoring, redirect creation, recommendations based on similar URLs, query-string matching). Worth installing from day one for migrations and restructures, so an SEO team can manage redirects without developer tickets.
uMarketingSuite → Umbraco Engage — Umbraco acquired uMarketingSuite and rebranded it Umbraco Engage in November 2024. It’s a CRO/personalization platform: server-side first-party analytics, A/B testing, persona targeting, visitor profiling. It is not a technical SEO package — it won’t manage meta tags, sitemaps, robots.txt, or schema. It complements SEO (engagement signals, testing variants); it doesn’t replace SeoToolkit or SEO Checker. Don’t recommend it as your SEO package.
Multilingual SEO — Language Variants and hreflang
Language Variants are a real Umbraco strength. You define languages by ISO code in
Settings → Languages, assign each language to one or more hostnames (so you can
do /en/, /de/, or separate domains), and editors translate content within the
same node by switching language tabs. Each variant can have its own URL slug
(/about-us in English, /acerca-de in Spanish), and fallback rules prevent blank
pages when a translation is missing.
But the SEO catch: hreflang is not automatic. Language Variants manage the content; they don’t emit hreflang tags. You implement those in Razor by iterating over cultures:
@foreach (var lang in Umbraco.LocalizationService.GetAllLanguages())
{
<link rel="alternate" hreflang="@lang.IsoCode"
href="@Model.Url(culture: lang.IsoCode, mode: UrlMode.Absolute)" />
}
<link rel="alternate" hreflang="x-default"
href="@Model.Url(culture: defaultCulture, mode: UrlMode.Absolute)" />— or use SEO Checker, which renders per-culture metadata including hreflang. Pair this with self-referencing canonicals per language variant so the variants don’t fight each other for indexing. (How Google actually picks among variants is in Canonicalization.)
Structured data
Umbraco officially documents three ways to implement schema, all needing a developer:
- Field-based — add a text-area property where editors paste JSON-LD; render
it in
<head>. - Template-driven with editor input — the developer builds schema selectors in the backoffice; editors fill fields; the template generates JSON-LD from them.
- Automatic — schema is generated in the template from document properties, no editor input (best for blog posts and other templated types).
For .NET developers, the Schema.NET library (a NuGet package, not an Umbraco
package) gives strongly-typed C# classes for Schema.org types, so you build JSON-LD
from objects instead of concatenating strings, then render with
ToHtmlEscapedString(). JSON-LD is Google’s preferred format; validate with the
Rich Results Test. This is where Umbraco’s typed Document Types actually become an
advantage — it’s easier to generate accurate, consistent
schema from modeled fields than from
WordPress’s freeform editor content.
Performance and Core Web Vitals
The .NET baseline is lean: the Kestrel web server is fast, and Umbraco doesn’t carry the plugin overhead a heavy WordPress install accumulates. Umbraco Cloud adds Cloudflare edge caching and Azure infrastructure for free; self-hosted (often Windows/IIS) needs more manual performance work. For Core Web Vitals: use Umbraco’s built-in Image Cropper (it can output dimensions, which helps CLS) plus the Slimsy package for responsive WebP/AVIF with lazy loading; reserve space for media to avoid layout shift; and remember CSS/JS bundling/minification is not built in — use .NET bundling middleware or a front-end build step.
Version landscape: LTS, STS, and the 13→14 backoffice rewrite
Umbraco ships on a fixed cadence with two release tracks: LTS (Long-Term Support, 18 months of active support) and STS (Standard-Term Support, roughly 3 months). As of mid-2026, Umbraco 17 (released November 2025, on .NET 10 LTS) is the current LTS. Umbraco 13 — the LTS most enterprise sites are still running — is past its Support phase and now in Security-only patching, reaching end of life in December 2026. If you’re still on 13, that’s your upgrade deadline, not a someday item. Umbraco also runs shorter STS releases between LTS majors (16 and 18 shipped in 2025 and mid-2026 respectively) for teams that track the latest features rather than the support window.
The version-history detail that still matters for SEO tooling: Umbraco 14 introduced a rebuilt backoffice — moved from the old AngularJS UI to TypeScript/Web Components (Lit). That rewrite meant SEO packages had to be updated to render their UIs correctly, which is why package compatibility is tied to specific Umbraco majors rather than a blanket “v8+” claim. Check the package’s own release notes against your Umbraco version before any upgrade — don’t assume last year’s compatibility note still holds.
One more wrinkle: Umbraco 12+ ships a Content Delivery API, enabling headless/decoupled builds. That changes the SEO calculus — metadata and schema must be injected by the front-end framework (with the usual SSR-vs-CSR rendering concerns), not by Razor templates. (Background: JavaScript SEO.)
The real craft: make the site SEO-agency-friendly
The recurring pain point on Umbraco isn’t capability — it’s the constant stream of developer tickets from SEO teams who can’t self-serve. Tim Payne put the fix well in Skrift Magazine: “Work smart, and modify your back office so that the SEO guys can do most of the work themselves.” Concretely, build this before handoff:
- A global SEO settings node with fields for HEAD scripts and BODY start/end scripts (kills the endless GTM-snippet requests).
- An SEO tab on every page Document Type — meta title, description, canonical, noindex/nofollow — so editors self-serve.
- URL Tracker installed from day one for redirect management.
- An XML sitemap auto-generated from day one.
- robots.txt served from day one, referencing the sitemap.
Do that and Umbraco goes from “developer bottleneck” to a perfectly capable SEO platform. Skip it and you’ll feel the friction every week.
Umbraco vs WordPress, briefly
Umbraco’s structured Document Types give content built-in context, which makes systematic schema and metadata consistency easier at scale — as the 24 Days in Umbraco community put it, “WordPress is not great at SEO out of the box; most of the content is not semantic or modeled. Umbraco’s structured document types provide built-in context.” The trade-off is ease of use: WordPress + Yoast lets a non-technical user manage most SEO alone, where Umbraco needs a developer for even simple changes. For large, multilingual, heavily-modeled enterprise sites, Umbraco’s structure often wins; for a small team that wants to self-serve, WordPress is gentler.
AI summary
A condensed take on the Advanced version:
- Umbraco is a .NET open-source CMS (Document Types, content tree, Razor templates; available as managed Umbraco Cloud or self-hosted). Its defining SEO trait: developer-led by default — unlike WordPress, even meta fields need a developer or a package.
- Three tiers. Built-in: clean URLs from node names, automatic 301 on URL rename, HTTPS, 404s, Language Variants. Needs a package: meta fields, XML sitemap, robots.txt, noindex, canonicals. Needs custom dev: hreflang, structured data, advanced canonical logic.
- Packages: SeoToolkit (free, open-source, by patrickdemooij9 — meta fields, sitemaps, robots.txt editor, redirects, canonicals) and SEO Checker (commercial, by Soeteman Software, not Jumoo — adds SERP/social previews, audits, per-culture hreflang). URL Tracker for redirects.
- uMarketingSuite → Umbraco Engage (Nov 2024) is a CRO/personalization tool, not technical SEO.
- hreflang is not automatic for Language Variants — implement in Razor or via SEO Checker; pair with self-referencing canonicals per variant.
- Reserved routing aliases aren’t interchangeable:
umbracoRedirectis a visible 302;umbracoInternalRedirectIdis the silent internal rewrite;umbracoUrlNamechanges the path suffix;umbracoUrlAliasmasks alternate paths. Built-in URL tracking covers a document’s own tracked URL changes, not arbitrary rewrites or complex migration scenarios. - Schema has three dev-led methods; Schema.NET helps .NET devs build JSON-LD. A field existing in the backoffice doesn’t prove it’s rendered — check the actual template output, including inherited master templates.
- Umbraco 17 (Nov 2025) is the current LTS; 13, the prior LTS, is in its Security phase and reaches end of life Dec 2026. Umbraco 14 rebuilt the backoffice (AngularJS → TypeScript/Lit) — package compatibility tracks Umbraco majors, so verify your package’s release notes against your version. v12+ Content Delivery API enables headless (front-end injects metadata).
- The craft: build self-serve backoffice SEO controls (global script node, SEO tab on every DocType, URL Tracker, sitemap, robots.txt) before an SEO team arrives.
Official documentation
Primary-source documentation from Umbraco and the search engines.
Umbraco
- URL Tracking / Redirect Management — the official explanation of automatic 301 redirects on URL change.
- Routing properties — reserved aliases including
umbracoUrlNameandumbracoRedirect. - How to implement schema markup in Umbraco — the three official schema implementation methods.
- Is your CMS SEO-friendly? (Part 1: Website performance features) — Umbraco’s own SEO framing.
- Umbraco acquires uMarketingSuite — the acquisition behind the Umbraco Engage rebrand.
- Umbraco Cloud — the managed hosting option (Azure + Cloudflare).
Packages
- SeoToolkit (GitHub) — the free, open-source package: sitemaps, robots.txt editor, meta fields, redirects.
- SEO Checker (Umbraco Marketplace) — Soeteman Software’s commercial package.
- Introduction to structured data markup — JSON-LD as the preferred format; the Rich Results Test.
- Managing multi-regional and multilingual sites — hreflang and
x-defaultguidance for Language Variants.
Quotes from the source
On-the-record statements from Umbraco’s docs and the Umbraco community.
Umbraco — automatic redirects on rename
- “Whenever a document is published and causes changes to its URL (and any of its descendants’ URLs), Umbraco makes a note of the old URLs. Whenever an incoming request is served and the default content finders cannot find a matching published document, Umbraco checks whether the URL matches one of these saved URLs. If a match is found, Umbraco returns a ‘301 Redirect’ response pointing to the new URL of the document.” — Umbraco official documentation, URL Redirect Management. Source
SeoToolkit — sitemaps
- “SeoToolkit creates a /sitemap.xml for each domain and also a sitemap index with all your sitemaps listed within. All sitemaps generated have a valid syntax, so Google will have no problem with indexing it.” — SeoToolkit README. Source
SEO Checker — multilingual
- “SEOChecker adds SEO data per culture and will render language specific metadata such as HrefLang tags which allows you to tell Google about localized versions of your page.” — Umbraco community documentation, SEOChecker multilingual sitemap thread. Source
The community — making Umbraco SEO-agency-friendly
- “Work smart, and modify your back office so that the SEO guys can do most of the work themselves.” — Tim Payne, Skrift Magazine, “How to Make Your Umbraco Site SEO Agency Friendly.” Source
- “WordPress is not great at SEO out of the box; most of the content is not semantic or modeled. Umbraco’s structured document types provide built-in context.” — 24 Days in Umbraco, 2024 edition, “Doing Great SEO With Umbraco: Can We Toast Yoast?” Source
Umbraco SEO setup checklist
What to put in place on an Umbraco site — ideally before an SEO team ever touches it:
- An SEO composition added to page Document Types:
metaTitle,metaDescription,noIndextoggle, optionalcanonicalUrl, Open Graph fields — with fallback to node name when empty. - Those fields actually rendered in the master template
<head>(the field existing in the backoffice does nothing until the template outputs it). - A package installed and configured — SeoToolkit (free) or SEO Checker (paid) — for sitemaps, robots.txt, and canonicals.
- XML sitemap generating at
/sitemap.xml, listing only canonical, indexable URLs; submitted to Google Search Console and Bing Webmaster Tools. - robots.txt served (it isn’t by default) with a
Sitemap:reference. - URL Tracker installed so editors/SEOs manage redirects without developer tickets.
- For multilingual: hreflang implemented (Razor or SEO Checker — it is not automatic) plus self-referencing canonicals per language variant.
- Structured data implemented for key types (Article, Product, Organization, etc.); validated in the Rich Results Test.
- Trailing-slash and www/non-www consistency enforced via middleware/IIS rules (Umbraco won’t do it natively).
- A global SEO settings node for HEAD/BODY script injection (so GTM and tag changes don’t become developer tickets).
- Image Cropper + Slimsy in use for responsive, dimensioned, lazy-loaded images (helps LCP and CLS).
- Package compatibility confirmed against your current Umbraco version before any upgrade — package releases track specific Umbraco majors (the v13→v14 backoffice rewrite is the classic case), and a version note from a year ago may no longer hold.
- If still on Umbraco 13: an upgrade plan in place before its December 2026 end-of-life date.
Umbraco SEO — cheat sheet
The three tiers of SEO support
| Feature | Status in Umbraco | How you get it |
|---|---|---|
| Clean URLs from node names | Built in | Automatic (ToUrlSegment()) |
| 301 redirect on URL rename | Built in | Automatic (URL tracking) |
| HTTPS / 404 handling | Built in | Automatic |
| Language Variants (multilingual content) | Built in | Settings → Languages |
| Meta title / description | Package or dev | SeoToolkit / SEO Checker / custom fields |
| XML sitemap | Package or dev | SeoToolkit / SEO Checker / custom Razor |
| robots.txt | Package or dev | SeoToolkit editor / manual file in /wwwroot/ |
| Canonical tags / noindex | Package or dev | SeoToolkit / SEO Checker / custom |
| hreflang | Custom dev or SEO Checker | Razor loop over cultures, or SEO Checker |
| Structured data (schema) | Custom dev | Field-based / template / Schema.NET |
| Trailing-slash + www/non-www | Custom dev | ASP.NET Core middleware / IIS rewrite |
Packages, sorted
- SeoToolkit — free, open-source (patrickdemooij9). Releases track each Umbraco major (through Umbraco 18 as of mid-2026). Meta fields, sitemaps + index, robots.txt editor, redirects, canonicals. Default starting point.
- SEO Checker — commercial, by Soeteman Software. Also releases per Umbraco major (v18.0.1 current as of mid-2026, supporting Umbraco 18+). SERP/social previews, audits, broken-link detection, per-culture hreflang.
- URL Tracker — redirect management UI for migrations and restructures.
- uMarketingSuite → Umbraco Engage — CRO/analytics/A-B testing. Not SEO.
Don’t-get-it-wrong facts
- SEO Checker is by Soeteman Software, not Jumoo. Jumoo makes uSync.
- uMarketingSuite became Umbraco Engage (Nov 2024) — a marketing tool, not SEO.
- hreflang is not automatic for Language Variants.
- Umbraco serves no robots.txt by default.
- Umbraco 17 (Nov 2025) = current LTS. 13, the prior LTS, is Security-phase only and reaches end of life Dec 2026. 14 rebuilt the backoffice (AngularJS → Lit).
Reserved routing aliases — not interchangeable
umbracoUrlName— changes the path suffix (keep a long backoffice name, short URL).umbracoUrlAlias— comma-separated alternate paths that mask the real URL; no redirect.umbracoRedirect— a visible 302 redirect to another node.umbracoInternalRedirectId— the silent internal rewrite: content serves transparently, no redirect shown.
Umbraco SEO mistakes
- Assuming core Umbraco supplies a complete SEO layer. Define which controls come from custom document types, SeoToolkit, SEO Checker, or custom code.
- Installing overlapping packages without ownership rules. Two systems can emit duplicate canonicals, robots tags, or sitemaps. Assign one source for each signal.
- Letting every editor set arbitrary canonicals. Default to a computed self-canonical and expose overrides only for documented cases.
- Trusting automatic redirects without testing moves. Verify the old URL, status, hop count, and destination after renames and restructures.
- Calling Umbraco Engage an SEO package. Use it for its personalization/CRO purpose, not as a substitute for technical SEO controls.
Duplicate titles or canonical tags appear
Likely cause: a package and custom Razor layout both render the same signal. Fix: trace each output to its owner and remove the duplicate path. Confirm: raw HTML contains one intended title and canonical.
A renamed page does not redirect correctly
Likely cause: the redirect record was not created, a package rule conflicts, or caching preserves the old response. Fix: inspect redirect management and clear the affected cache. Confirm: the old URL returns one 301 to the final canonical page.
Sitemap includes hidden or noindex content
Likely cause: generator filters ignore visibility, document type, or SEO properties. Fix: centralize an IsIndexable rule used by templates and sitemap generation. Confirm: sampled sitemap URLs return canonical indexable 200 pages.
Language variants lack reciprocal hreflang
Likely cause: custom variant mapping is incomplete or uses inconsistent culture URLs. Fix: generate clusters from published variants and include self-references. Confirm: every alternate returns 200 and reciprocates the cluster.
The owner → default → override framework
For every SEO signal, document:
- Owner: core Umbraco, one named package, or custom code.
- Default: the safe behavior editors receive without touching a field.
- Override: the limited business case, validation rule, and person allowed to change it.
Apply the matrix to titles, descriptions, canonicals, robots directives, redirects, sitemaps, hreflang, and structured data. This prevents package overlap and turns hidden developer assumptions into testable requirements.
Prove an Umbraco SEO release
Signal-ownership test
Test to run: inspect raw HTML across representative document types after a package or template change. Expected result: one title, canonical, robots directive, and intended structured-data set. Failure interpretation: packages or custom layouts overlap. Monitoring window: every SEO package/template release. Rollback trigger: duplicate or contradictory directives reach production.
Rename-and-redirect test
Test to run: rename a controlled test page and request the old URL without following redirects. Expected result: one 301 reaches the new canonical URL. Failure interpretation: redirect tracking, routing, or cache behavior failed. Monitoring window: immediate. Rollback trigger: old links 404, loop, or land on the wrong page.
Sitemap/indexability test
Test to run: compare sitemap URLs with the shared indexability rules and batch-check responses. Expected result: entries are canonical, public, indexable 200 pages. Failure interpretation: sitemap filters and templates disagree. Monitoring window: every publish and release. Rollback trigger: private, noindex, redirected, or missing URLs enter the sitemap at scale.
Version-scoped rendered-output acceptance suite
Test to run: after any Umbraco version, package, or template change, render one page per template, per locale/culture, and check the raw response HTML — not just the backoffice field values — for title, meta description, canonical, hreflang set, and routing-alias behavior (umbracoRedirect vs umbracoInternalRedirectId vs umbracoUrlAlias). Record which Umbraco major and which package version the test ran against. Expected result: every template/locale combination emits the intended signal with no gaps from an empty fallback path. Failure interpretation: a master-template inheritance or named-section change broke a child template’s output, a package update changed its rendering, or a routing alias is being used for the wrong purpose. Monitoring window: every Umbraco or package version bump, and every new template added. Rollback trigger: any template/locale combination silently loses metadata, canonical, or hreflang output — this test does not claim anything about crawling, indexing, or rankings, only about what the server actually emits.
Patrick's relevant free tools
- SEO Incident Simulator — Practice thirty deterministic technical SEO incident investigations — indexability, crawl controls, redirects, sitemaps, markup, caching, DNS, bot verification, rendering, hreflang, and faceted navigation — with clearly labeled fixture evidence and Find → Fix → Verify handoffs.
- hreflang Generator + Linter — Enter your URL × locale matrix and get bidirectional hreflang markup as head tags, sitemap XML (auto-split past 50,000 URLs), and Link headers — linted live for wrong region codes, duplicates, and missing fallbacks. Runs entirely in your browser.
- returntag - hreflang checker — Enter one URL or an XML sitemap and the returntag - hreflang checker crawls the whole hreflang cluster — missing return tags, broken targets, self-reference and x-default checks, language-code validation, and head vs Link header vs sitemap disagreements — on an interactive cluster map with CSV export. The check Search Console's International Targeting report used to run.
Tools for Umbraco SEO
- SeoToolkit (free, open-source) — the default package: meta fields, dynamic sitemaps + sitemap index, backoffice robots.txt editor with validation, redirect management, canonical support.
- SEO Checker by Soeteman Software (commercial) — backoffice SERP and social previews while editing, automated issue detection (missing meta, broken links, canonical problems), redirects, automatic robots.txt/sitemap, per-culture hreflang.
- URL Tracker — redirect creation/editing, 404/302 monitoring, and recommendations based on similar URLs; essential for migrations.
- SeoVisualizer (free) — actively maintained (releases through Umbraco 17), not abandoned at older versions as some older write-ups suggest. Lightweight: title/description length hints, noindex toggle, real-time search-result preview in the backoffice.
- Schema.NET (NuGet library, not an Umbraco package) — strongly-typed C# classes for Schema.org so developers build JSON-LD from objects.
- Slimsy (+ Umbraco’s built-in Image Cropper) — responsive WebP/AVIF images with lazy loading; helps LCP and CLS.
- Google Search Console and Bing Webmaster Tools — submit your sitemap, watch indexing and crawl, validate hreflang.
- Rich Results Test — validate your structured data before deploying.
- Umbraco Engage (formerly uMarketingSuite) — A/B testing and analytics that support SEO goals (engagement, page variants) — but not a technical SEO tool.
Test yourself: Umbraco SEO
Five quick questions on how SEO actually works on Umbraco. Pick an answer for each, then check.
Resources worth your time
My related writing
- Canonical Tags Explained: Why They Matter For SEO (Ahrefs) — the tag you’ll wire into Umbraco templates or get from a package.
- Hreflang: The Easy Guide for Beginners (Ahrefs) — what you have to implement by hand for Language Variants.
- How to Create an XML Sitemap (and Submit It to Google) (Ahrefs) — what SeoToolkit/SEO Checker generate for you.
- Core Web Vitals: A Complete Guide (Ahrefs) — the performance metrics the .NET baseline helps with.
My speaking
- How Search Works (SlideShare) — crawling, rendering, indexing, and ranking, which underpins every Umbraco SEO decision here. (My standing disclaimer applies: “This is my understanding of systems… not going to be 100% complete or accurate.”)
From around the industry
- URL Tracking / Redirect Management (Umbraco docs) — the official source on automatic 301s on rename.
- SeoToolkit (GitHub) — the free, open-source package and its sitemap/robots.txt/meta features.
- How to Make Your Umbraco Site SEO Agency Friendly (Tim Payne, Skrift Magazine) — the “build self-serve controls before handoff” playbook.
- Doing Great SEO With Umbraco: Can We Toast Yoast? (24 Days in Umbraco) — the structured-Document-Types-as-SEO-advantage argument.
- The Ultimate SEO How-To Guide for Umbraco CMS (Marcel Digital) — a thorough agency walkthrough of the package stack.
- How to implement schema markup in Umbraco (Umbraco) — the three official structured-data methods.
Umbraco SEO
Umbraco SEO is the set of technical, on-page, and structural practices applied to sites built on Umbraco — a .NET-based open-source CMS. Umbraco ships almost no SEO functionality out of the box (no meta fields, no XML sitemap, no robots.txt, no structured data), so nearly every meaningful optimization needs either a package like SeoToolkit or SEO Checker, or custom developer work.
Related: Canonicalization, Duplicate Content
Umbraco SEO
Umbraco SEO refers to optimizing websites built on Umbraco, an open-source CMS built on Microsoft’s .NET framework that’s popular with enterprise, agency, and .NET-shop builds. The defining trait — and the thing most guides skip — is that Umbraco is developer-led by default. Unlike WordPress, where a non-developer can install Yoast and manage SEO themselves, almost every meaningful SEO feature in Umbraco requires either a third-party package or custom template work by a .NET developer.
Out of the box Umbraco gives you a useful but narrow foundation: clean URL slugs generated from node names, automatic 301 redirects when you rename a node’s URL, HTTPS enforcement, proper 404 status codes, and a sophisticated multilingual content model (Language Variants). What it does not ship: meta title/description fields, an XML sitemap, robots.txt management, canonical-tag controls, noindex toggles, hreflang tags, or structured data. Those come from packages — SeoToolkit (free, open-source) or SEO Checker by Soeteman Software (commercial) — or from custom Razor code.
The built-in auto-301-on-rename is genuinely strong (better than most CMSes provide), and Umbraco’s structured Document Types make consistent metadata and accurate schema markup easier to generate at scale than WordPress’s freeform editor. The cost is developer dependency: the practical work of “doing SEO” on Umbraco is largely about building self-serve controls into the backoffice before an SEO team ever touches the site.
Related: Canonicalization, Duplicate Content
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Revision history
Compare the published article with an archived editorial snapshot. Added and removed words are shown only after you open a comparison.
Updated Jul 19, 2026.
Editorial summary and recorded change details.Summary
Fixed a dead outbound citation: Ahrefs' XML sitemaps blog post URL now 404s.
Change details
-
Replaced the dead link to Ahrefs' XML sitemaps guide (ahrefs.com/blog/xml-sitemaps/, now 404) with Ahrefs' current live sitemap guide (ahrefs.com/blog/how-to-create-a-sitemap/) in all three occurrences (inline mention, tools paragraph, and Resources list).
Full comparison unavailable — no prior snapshot was archived for this revision.
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Corrected the reserved routing-alias semantics (umbracoRedirect is a 302, not an internal rewrite) and refreshed the whole article for Umbraco's current LTS/STS version landscape — Umbraco 17, not 13, is now the current LTS, and 13 is approaching its December 2026 end of life.
Change details
-
Fixed the umbracoRedirect/umbracoInternalRedirectId mix-up: umbracoRedirect sends a visible 302 redirect, while umbracoInternalRedirectId performs the silent internal rewrite (the article previously attributed the rewrite behavior to umbracoRedirect). Added umbracoUrlAlias for completeness and noted built-in URL tracking doesn't cover arbitrary rewrites or complex migration scenarios.
-
Replaced 'Umbraco 13 is the current LTS' throughout (frontmatter tldr, both TL;DRs, ai-summary, cheat sheet, and the dedicated version section) with the current landscape: Umbraco 17 (Nov 2025) is the current LTS, Umbraco 13 is in its Security phase with a December 2026 end-of-life date, and STS releases (15/16/18) exist between LTS majors.
-
Updated SeoToolkit and SEO Checker version-range claims (previously static 'v9–v17'/'v8–v17') to reflect that each package now ships a release per Umbraco major, currently up through Umbraco 18; corrected SeoVisualizer's stated range (was 'v8–v15') since it's actively maintained through Umbraco 17.
-
Added a note to the metadata workflow section that a Document Type field having a value doesn't prove it's rendered — output is owned by the template, including master-template inheritance and named sections — and added a version-scoped rendered-output validation test.