Headless WordPress
Headless WordPress with Next.js: Keeping WordPress as Your CMS, Honestly Explained
Your editors know the WordPress dashboard. Your visitors deserve a faster site. Headless WordPress promises both: keep WordPress for writing, let Next.js draw every public page. It works, with conditions, and a maintenance bill most brochures leave out.
October 8, 2026 · 9 min read
The short answer
Headless WordPress keeps the WordPress dashboard for editing while a Next.js front end renders the public site, pulling content through the built-in REST API or the WPGraphQL plugin. Pages are prerendered and refreshed when editors publish. You still maintain WordPress, and plugins that draw on the front end, such as builders, sliders and forms, must be rebuilt.
On this page
- The dashboard stays, the theme goes
- REST or WPGraphQL: two pipes for the same content
- From Publish button to live page: previews and revalidation
- The WordPress chores that do not go away
- Plugins that go dark once WordPress stops drawing pages
- Headless WordPress or Athena CMS: choosing the back end
- Getting there without breaking search or the editors' week
The dashboard stays, the theme goes
In a normal WordPress site, one system does two jobs. It stores your content, and on every visit it runs PHP, loads the theme and the plugins, and assembles the page. Headless splits those jobs. WordPress keeps the first one: editors log in, write, upload and press Publish exactly as before. A Next.js application takes the second: it fetches the content, renders the pages ahead of time and serves them from a CDN.
Visitors never touch WordPress at all. The admin usually moves to its own address, such as a subdomain, and the public domain points at Next.js. That is the appeal: the slow, plugin-laden part of WordPress is taken out of the visitor's path, and the familiar part stays where your team expects it. The theme, though, is gone. Next.js is the theme now, which has consequences we will get to.
Headless WordPress removes the theme from the visitor's path. It does not remove WordPress from yours.
REST or WPGraphQL: two pipes for the same content
The content travels from WordPress to Next.js over an API. WordPress has a REST API built into core, with routes under /wp-json/wp/v2/ for posts, pages, media, categories and users. Per the WordPress handbook, public content is generally available without logging in, while private and password-protected content, custom post types and metadata need authentication.
The alternative is WPGraphQL, a free, open-source plugin that adds a GraphQL endpoint at /graphql. Its wordpress.org listing says it is becoming a canonical plugin, with long-term support behind it. GraphQL lets the front end ask for exactly the fields a page needs in one request, which keeps queries tidy on content-heavy sites.
| REST API | WPGraphQL | |
|---|---|---|
| Install | Built into WordPress core | Free plugin from wordpress.org |
| Request shape | One route per content type, fixed response fields | One endpoint; the query names the fields it wants |
| Custom fields | Exposed when registered for REST | Usually needs a companion extension per field plugin |
| SEO plugin data | Yoast adds yoast_head and yoast_head_json fields | Available through extensions for some SEO plugins |
| Draft previews | Authenticated request for the draft or revision | Authenticated user who can edit the post; otherwise the published version returns |
| Good fit | Simple sites, few content types | Many content types and related data |
Neither is wrong. We pick based on how many content types the site has and how they relate. The bigger decision is whether headless suits your site at all, which the headless WordPress vs Next.js comparison weighs in detail.
From Publish button to live page: previews and revalidation
Two things make or break a headless site for editors: seeing a draft before it goes live, and seeing the change on the public site soon after pressing Publish. Neither comes free. Both have to be wired between the two systems.
Previews use Next.js Draft Mode. When an editor clicks Preview in WordPress, the link is pointed at a route on the Next.js site that checks a shared secret, sets a bypass cookie and redirects to the page. With that cookie, Next.js skips its caches and fetches the draft directly, while every other visitor keeps seeing the published version. The draft fetch must be authenticated; WPGraphQL's preview documentation notes that an unauthorized preview request quietly returns the published post instead, which looks like a bug until you know why.
- 1
Editor publishes
WordPress saves the post. A small hook on publish sends a signed request to the Next.js site.
- 2
Next.js marks the page stale
A route handler checks the signature and calls revalidatePath for that URL, or revalidateTag for every page that shows the post, such as the blog index.
- 3
Fresh render
Next.js regenerates the page in the background and serves the new version, while visitors in the meantime still get a fast cached page.
- 4
Safety net
A time-based refresh catches anything the hook missed, so a failed request delays an update rather than losing it.
Done well, editors stop noticing there are two systems. Done badly, they publish, see the old page, publish again, and file a ticket. Most complaints about headless WordPress trace back to these two wires.
The WordPress chores that do not go away
Headless fixes the front end. The back end is still a WordPress install, and it needs everything a WordPress install needs. Owners sometimes expect the maintenance to vanish with the theme. It shrinks; it does not vanish.
- Core, plugin and PHP updates continue on their usual schedule, with the usual chance that one breaks the admin or the API output the front end depends on.
- Two hosting bills: a PHP and MySQL host for WordPress, plus hosting for the Next.js front end.
- Security on the admin: the login page, plugin endpoints and user accounts are still targets, even if they now sit on a subdomain.
- Plugin licenses for anything still doing work in the admin, such as custom field or SEO plugins.
- API contracts: if a plugin update changes the shape of a field, the front end has to be updated to match, and someone has to notice first.
None of this is a reason to avoid headless. It is a reason to count it. Our hosting and maintenance plans can look after both halves, and the cost guide shows where the second system lands in a quote.
The third option
Athena CMS, with AI agents on staff.
Not a theme and not a blank Next.js repo. The content system we put behind every custom site: plain fields, a real preview, every version kept, and AI agents that handle the chores a plugin only nags you about.
- PicassoImages
- ApolloSite analysis
- AresCompetitor watch
- PrometheusContent holes
- AtlasPage depth and structure
- DelphiAI search visibility
and 12 more agents. Two come with Athena; the rest are monthly add-ons.

Plugins that go dark once WordPress stops drawing pages
Here is the part that surprises people. Many WordPress plugins work by adding things to the pages WordPress renders. Once WordPress stops rendering pages, those plugins keep running in the admin and show nothing to anyone. Their features have to be rebuilt in Next.js or dropped.
| On a normal WordPress site | With a Next.js front end | |
|---|---|---|
| Page builders | Elementor, Divi or Bricks draw every layout | Layouts do not carry over; pages are rebuilt as Next.js templates |
| Form plugins | Form appears via shortcode or block | Form rebuilt in Next.js; entries can still be posted back to WordPress |
| Sliders and popups | Injected scripts and markup | Rebuilt as components, or dropped |
| SEO plugins | Print titles, meta tags and schema in the head | Data can be read through the API; tags and sitemaps are output by Next.js |
| Caching and speed plugins | Cache PHP output, minify files | Nothing to do; the front end is prerendered |
| Shortcodes | Expanded into HTML on render | Arrive as raw text unless expanded or replaced |
| WooCommerce | Shop, cart and checkout pages | Catalog can be read; cart and checkout need a front-end build |
| Membership plugins | Hide content from logged-out visitors | Gating has to be rebuilt in the front end |
The page builder row is the big one. A site built entirely in Elementor or Divi keeps almost nothing of its design when it goes headless, because the design is the part that lived in the builder. For those sites, see Elementor to Next.js, Divi to Next.js or Hello Elementor to Next.js before choosing headless. Sites written in the block editor on a lean theme, like GeneratePress or Twenty Twenty-Five, fare much better.
Headless WordPress or Athena CMS: choosing the back end
Every Next.js site we build can sit on either back end. Headless WordPress keeps the dashboard your team knows. Athena CMS, the content system included with every site we build, replaces it with plain fields, a real preview and every version kept, and puts a staff of AI agents where the plugins used to be.
Keep WordPress headless when
- A large editorial team publishes daily and is trained on the WordPress workflow
- Thousands of posts and custom fields are already modeled well in WordPress
- Other systems already read from or write to your WordPress API
- You have someone to keep the WordPress install updated and secured
Move to Athena CMS when
- You want one system to look after, not two
- The site was built in a page builder, so most content needs restructuring anyway
- You need a store or members area without a stack of plugins
- Nobody on your team wants to rehearse WordPress updates again
| Headless WordPress | Next.js + Athena CMS | |
|---|---|---|
| Systems to maintain | Two: WordPress and the front end | One |
| Editing | The WordPress dashboard and block editor | Plain fields with every version kept |
| Preview | Wired through Draft Mode and authentication | Built in |
| Admin security | WordPress login and plugins still exposed | No WordPress admin; Aegis checks daily for intrusions |
| Upkeep chores | Plugins, each with a renewal date | Agents such as Argus, Iris and Ariadne |
| Store and members | WooCommerce and membership plugins plus a front-end build | Built-in store; membership areas with Stripe subscription billing |
Mixed answers are fine too. Some sites keep WordPress headless for a large archive and move everything else to Athena. The full platform comparison is at Athena vs WordPress, and what the move feels like for your team is at switching from WordPress.
Getting there without breaking search or the editors' week
Going headless is still a migration for search purposes, because the HTML Google sees is now produced by different code. URLs should stay as they are, which headless makes easy since the content and slugs do not move. Titles, descriptions, canonicals and structured data need to be output by Next.js, ideally from the SEO plugin's own data so editors keep one place to edit them. The checklist is in migrating without losing SEO.
Editors need a short handover too: where Preview now opens, how long a published change takes to appear, and which old blocks or shortcodes no longer do anything. Wiring previews and publishing hooks adds a phase of its own to the migration timeline. We build headless, side-by-side and full builds through WordPress to Next.js development, and the wider migration options live on the WordPress to Next.js hub. If you are still deciding whether WordPress should stay at all, WordPress vs Next.js vs Athena CMS puts all three side by side.
Questions people ask before they call
WordPress stores and edits the content, and a separate Next.js application renders the public website from it through the REST API or WPGraphQL. Visitors get prerendered pages from a CDN; editors keep the dashboard. You still maintain WordPress, and front-end plugins must be rebuilt. See headless WordPress vs Next.js.
The REST API is built into WordPress and suits sites with a few simple content types. WPGraphQL is a free plugin that lets the front end request exactly the fields it needs in one query, which helps on sites with many related content types. Both can serve previews to authenticated requests.
Yes, once it is wired up. The Preview button is pointed at a Next.js route that turns on Draft Mode, and the front end then fetches the draft with an authenticated request. Without that work, editors either see the published version or nothing. It is part of every headless build we do.
Not as designed. Builders render layouts on WordPress's own front end, which a headless site no longer uses. The text can be extracted, but the layouts are rebuilt as Next.js templates. For builder-heavy sites, moving to Athena CMS is often simpler; see Elementor to Next.js.
The public site is harder to attack, because visitors reach prerendered pages instead of PHP and plugins. The WordPress admin still exists, though, so its logins, plugins and updates need the same care as before. With Athena CMS there is no WordPress admin to protect; see WordPress vs Next.js security.
Keep reading
- Back ends, comparedHeadless WordPress vs Next.js with Athena: Two Systems or OneHeadless WordPress vs a full Next.js site with Athena CMS: what each keeps and maintains, how preview works, which plugins go quiet, the two-system cost.
- Astra migration guideAstra to Next.js: Migrate an Astra Site Layer by Layer, Rankings IntactMigrate Astra to Next.js without losing rankings: what happens to astra-settings, Site Builder layouts, Spectra blocks and Elementor pages, step by step.
- Kadence migration guideKadence to Next.js: Moving Kadence Blocks, Shop Kit and MembersKadence to Next.js, step by step: parse Kadence Blocks, map the global palette, rebuild Hooked Elements, move Shop Kit stores and members, keep every URL.
- GeneratePress migration guideGeneratePress to Next.js: Leaving the Cleanest Theme in WordPressGeneratePress to Next.js: why GP sites cost less to move, how Elements, hooks and GenerateBlocks CSS migrate, and the URL plan that keeps your rankings.
- Leaving BlocksyBlocksy to Next.js: Moving the Customizer, Content Blocks and Shop ExtrasMove a Blocksy site to Next.js: Customizer settings, header builder, Content Blocks, Post Types Extra fields and Shop Extra features, mapped one by one.
- Leaving Hello and ElementorHello Elementor to Next.js: Migrating a Site That Lives Inside ElementorMigrate a Hello Elementor site to Next.js: Theme Builder headers and templates, Site Settings globals, popups, forms and submissions, with every URL kept.
- Everything in WordPress to Next.jsSee the section
Find out if headless suits your site
Tell us how your team edits today and what is built in which plugin. We will tell you whether headless WordPress, Athena CMS or a mix fits, and why.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.
