Home › Blog › Headless CMS
DIGITAL MARKETING · ARCHITECTURE DECISION

Headless CMS: Who Actually Needs One — and Who Doesn't

We sell SEO, not CMS licences — so this answer has nothing to sell you.

By the Digital Hangover team · Updated October 2026 · 8 min read
Quick answer: A headless CMS separates the content API from the front end, so the CMS stores and serves content while a separate codebase renders it. Go headless if you have several front ends, an in-house front-end team, or a proven performance ceiling. Otherwise it mostly turns marketer edits into dev tickets.
HEADLESS MOVES THE WORK It does not remove it GO HEADLESS ONLY IF TWO OF THESE ARE TRUE 1 Several front ends consume the same content 2 A front-end team already owns the rendering layer 3 Content is reused across web, app and other screens 4 You have hit a performance ceiling and proven it WHAT MOVES, AND WHERE IT MOVES TO Content edits CMS → a developer ticket Metadata and canonicals Plugin → your codebase Redirects Plugin → someone must own the map Preview and staging Built in → built by you Headless does not hurt SEO. It relocates every SEO control into code — so SEO belongs in the build brief.

Headless does not remove the work. It moves it, and every SEO control goes with it.

Almost every page ranking for this term is published by a company that sells a headless CMS.

Which is why they all reach the same conclusion.

We run search engine optimisation across WordPress, Shopify, custom React front ends and a few genuinely headless builds. We do not resell a CMS, which is why this post can give you the uncomfortable half of the answer.

Headless is a real improvement for a specific set of problems and a downgrade for everyone else — it moves work out of the CMS and into the development team, including work you used to do yourself.

What a headless CMS actually is

A headless CMS stores your content and exposes it over an API, and nothing else. It does not render pages. The "head" — the part that turns content into HTML a browser and a crawler can read — is a separate application your team builds and runs.

Three things follow, and they are the whole debate:

  • Any number of front ends can read the same content. Website, mobile app, in-store screen and partner feed all call one API instead of each keeping a copy.
  • Nothing about the page is decided in the CMS any more. Layout, page speed, titles, canonicals, redirects and sitemaps live in the front-end codebase.
  • The editing experience is whatever someone built for you. No theme, no page builder, no plugin directory — unless your developers rebuilt the equivalent.

Named factually: Contentful documents five APIs, Content Preview among them, which exists to show editors unpublished content "in-context" (contentful.com developer docs, read 5 October 2026, no last-updated date shown). WordPress can do it too: its REST API sends and receives site data "as JSON" (developer.wordpress.org, shows "Last updated January 16, 2024"), and WPGraphQL is a free, open-source plugin adding a GraphQL schema and API to any WordPress site (wpgraphql.com, read 5 October 2026).

So going headless does not mean leaving WordPress. It means leaving WordPress's rendering layer — a different and much larger decision.

The four conditions that justify going headless

Benefits are what a vendor writes. Conditions are what you can check against your own business today.

ConditionHow you verify itWhy headless answers it
Several front ends consume the same contentName them: website, app, kiosk, partner feed, screen.One content model, one API, no duplicate publishing.
A front-end team already owns the rendering layerIn-house React or Vue developers on payroll, not a one-off build.The people who will own your titles and redirects exist.
Content is reused across app, web and screensThe same article or description appears on two non-web surfaces.Structured fields beat copy-pasted HTML blobs.
A performance ceiling you have hit and provenField data in Search Console still fails after plugin, caching and image work.Full control of the rendering path, no theme in the way.

Note the word proven in the fourth one. Most sites blaming the CMS for speed have an unoptimised image pipeline, eleven tracking scripts and a bloated theme — our page speed work usually finds the ceiling far below where the client assumed.

The costs nobody quotes you

Every row below is something teams lose in the first month live, and none of it appears in a vendor comparison table. You also patch four moving parts instead of one.

What WordPress gave you freeWho owns it after headless
Edit a heading, see it live in 30 secondsOften a deploy — a ticket, a queue, a release window
Preview any draft on the real templateA preview environment your developers build and maintain
Staging that mirrors productionTwo parts to keep in sync, not one
A plugin for forms, redirects, SEO fields, schemaCode for each, maintained by you forever

The ticket problem quietly kills marketing velocity: if publishing twenty pages a month needs a developer to touch a route, your calendar is your developer's backlog. And the plugin ecosystem disappears — not "becomes harder", disappears. The SEO plugin writing your titles and sitemap stops being involved the moment it stops rendering the page.

Headless CMS and SEO: nothing breaks, everything moves

The sentence this post exists to deliver: headless does not hurt SEO. It moves every SEO control out of a settings screen and into code, so SEO has to be in the build brief rather than added after launch.

Rendering and indexability

Google processes JavaScript in three phases — "1. Crawling 2. Rendering 3. Indexing" — using an evergreen version of Chromium, and "queues all pages with a 200 HTTP status code for rendering". That page "may stay on this queue for a few seconds, but it can take longer than that" (Google Search Central, "Understand the JavaScript SEO basics", last updated 2026-03-04).

So client-side rendering is indexable. It is also queued, and the queue is the risk: anything failing in the browser fails silently while Google is looking. Google's troubleshooting page names soft 404s in single-page applications among the common faults and sends you to the URL Inspection tool in Search Console to "see loaded resources, JavaScript console output and exceptions, rendered DOM" ("Fix search-related JavaScript problems", last updated 18 December 2025).

Two consequences. Render what matters server-side or at build time. And return real status codes — a catch-all route replying 200 with "page not found" text is the commonest headless mistake we see, and the same failure mode behind most 404 error problems.

Who owns titles, descriptions and canonicals now

Your developers do. In Next.js, metadata is a code export — a static metadata object or a generateMetadata function — which "will automatically generate the relevant <head> tags for your page" (Next.js docs, "Metadata and OG images", lastUpdated 2026-08-25).

// app/blog/[slug]/page.tsx — the title now lives here, not in a CMS field
export async function generateMetadata({ params }) {
  const post = await getPost((await params).slug)
  return { title: post.seoTitle, description: post.seoDescription }
}

Read that as a marketer. If post.seoTitle is not a field in the content model, nobody changes a title without a deploy. Getting those fields into the model on day one is the cheapest hour you will spend here.

The same doc holds a second trap: Next.js streams metadata separately on dynamically rendered pages, and that streaming is "disabled for bots and crawlers that expect metadata to be in the <head> tag". Framework defaults are doing SEO work for you; someone should know which.

Canonicals need their own line. Google will "pick up the injected canonical URL when rendering the page" but warns you to "make sure that this is the only rel=canonical link tag on the page" (JavaScript SEO basics, last updated 2026-03-04). A framework default plus a CMS field plus a hand-rolled component is how a site ends up with two — settle that with our canonical tag guide.

Redirects, and who maintains the map

This is where most migrations lose traffic — a people problem in technical clothing.

In Next.js, redirects are entries in next.config.js, and permanent: true emits a 308 rather than a 301 — the framework uses 307 and 308 "to explicitly preserve the request method used" (Next.js docs, "redirects", lastUpdated 2026-06-30). Both are valid permanent signals, but a team grepping logs for 301s will conclude the redirects are missing.

Ownership is harder: a redirect in a config file is a code change. Ask before the build: who adds one when marketing retires a landing page, and what is the turnaround? If the answer is "raise a ticket", your old URL will 404 for a fortnight.

Sitemaps, structured data and internal links

All three become build artefacts.

  • Sitemaps. Next.js generates sitemap.xml from a file convention you write programmatically (Next.js metadata file conventions, lastUpdated 2026-08-25) — built from your route list, so a page that exists in the CMS but has no route is never submitted. Re-read our XML sitemap rules before anyone writes that generator.
  • Structured data. No plugin is emitting it, so every type is built per template — cleaner than a plugin guessing, which is why breadcrumb navigation is worth specifying rather than inheriting.
  • Internal links. "Related posts" is now a query someone wrote. A weak query manufactures orphan pages that sit in the API, in the sitemap, and linked from nothing.

Internationalisation

Google accepts three equivalent ways to declare localised versions — hreflang link tags, HTTP Link headers, or xhtml:link entries in a sitemap — and the requirement is bidirectional: "Each language version must list itself as well as all other language versions", and pages that do not both point to each other are ignored (Google Search Central, "Tell Google about localized versions of a page", last updated 2026-09-21).

A front end rendering hreflang from a per-locale query drops those return links the moment a locale lacks a translation. Test per template, not once on the homepage.

What we put in a headless build brief

Our own practice, shared as practice and not a benchmark — we have not measured it across a sample large enough to quote a figure, so read it as a pattern we see, not a statistic.

When a client says their developer is proposing headless, the first thing we ask for is not the rendering strategy. It is the redirect map and the content model. Rendering faults are loud and get fixed in week one; a content model shipped without SEO fields is quiet, and takes a second project to undo.

  1. SEO fields in the content model — title, description, canonical override, robots directive, OG image. Marketer-editable, no deploy.
  2. Server-rendered or pre-rendered primary content — copy, headings and internal links in the initial HTML response.
  3. Real status codes — 404 returns 404, 301 or 308 for moved URLs, no soft 404s on the catch-all route.
  4. A named redirect owner — a person and a turnaround time, agreed before launch.
  5. Sitemap built from published content, not routes alone — plus a pre-launch diff against the old one.
  6. A working preview for editors — unpublished content on the real template. It is what keeps editors in the CMS.
  7. Rendered-DOM checks per template — one URL Inspection pass per template type, not one per site.

Scope that in and a migration behaves like a migration. Skip it and you spend the next quarter recovering — and since organic takes roughly three to six months to show movement, a bad launch costs two quarters. Running that is what our SEO services cover.

The decision test

Count the conditions you can answer yes to — with evidence, not ambition.

Yes to…Verdict
Three or four conditionsGo headless. The architecture solves a problem you actually have.
Two conditionsDefensible. Budget for the editorial tooling you are about to lose.
One conditionNot yet. Fix that specific problem instead of re-platforming around it.
Zero — "it's modern", "it's faster", "it's better for AI search"No. A well-run WordPress install will serve you better and cost less.

Two of four is the honest threshold. Below it you are buying complexity, and you pay in publishing speed.

The spectrum helps. A closed platform limits what you can change — the subject of our guide to SEO on Wix. Headless is the opposite end: total control, total responsibility. WordPress sits in the middle, where most marketing teams get the most done.

What to do next

At two or more, take the seven-item brief to your developer before anyone picks a vendor — those decisions are cheap in a planning call and expensive in a retro. Below two, ask which condition "we should go headless" actually answers. If nobody can name one, that is your answer.

Key takeaways: Headless separates the content API from the front end — better when several surfaces share content, worse when one website does. It does not hurt SEO; it relocates every SEO control into code, so titles, canonicals, redirects and sitemaps belong in the build brief. Two of four conditions is the threshold.

Frequently asked questions

Does a headless CMS hurt SEO?

No. A headless CMS does not hurt SEO, but it moves every SEO control out of a settings screen and into your front-end code. Titles, canonicals, redirects, sitemaps, structured data and hreflang all become build decisions — a risk only when SEO is added after launch instead of written into the build brief.

Does Google index JavaScript-rendered pages?

Yes. Google processes JavaScript in three phases — crawling, rendering and indexing — using an evergreen version of Chromium, and queues pages returning a 200 status code for rendering; a page "may stay on this queue for a few seconds, but it can take longer than that" (Google Search Central, JavaScript SEO basics, last updated 2026-03-04). Pre-rendering avoids relying on that queue.

Can WordPress be used as a headless CMS?

Yes. WordPress ships a REST API that sends and receives site data as JSON (developer.wordpress.org, shows Last updated January 16, 2024), and WPGraphQL adds a GraphQL API to any WordPress site (wpgraphql.com, read 5 October 2026). You keep the editor your team knows and replace only the rendering layer.

Will a headless CMS make my site faster?

It can, but not automatically, and we will not quote a figure because an honest one depends entirely on the build. Headless removes theme and plugin overhead from the rendering path and hands the performance budget to your developers. If your ceiling is heavy images or excess scripts, fixing those is cheaper.

What usually goes wrong in a headless migration?

In our experience the redirect map and the content model cause more damage than rendering does. Rendering faults are loud and get fixed in week one. A content model shipped without editable SEO title, description and canonical fields is quiet, and undoing it takes a second project.

Deciding, or already mid-build?

Get SEO into the brief, not the retro

We review content models, redirect maps and rendered HTML — with no CMS licence to sell.

Explore our SEO services →

Get our posts in Google

Make Digital Hangover a preferred source

One tap tells Google to show more of our SEO and marketing coverage in your Top Stories.