Headless WordPress for product catalogs - when it makes sense
Headless WP sounds sexy, but it doesn't always pay off. Five scenarios where it's the right call, and three where you should stick with the monolith.
Headless WP sounds sexy, but it doesn't always pay off. Five scenarios where it's the right call, and three where you should stick with the monolith.
"Let's do headless WordPress" - this sentence shows up in briefs more often than it should. Most of the time, the client wants Next.js with a nice editing panel and thinks that's what they need. Sometimes they're right. Often they're not.
“Headless WP isn't a WordPress upgrade. It's a completely different maintenance model - and half the clients who want it actually need something simpler.
”
WordPress as a CMS gives you two interfaces:
In a headless setup WP keeps:
It loses:
A client runs a B2B store with 500+ SKUs plus a blog with 200 articles. On the frontend they want a very fast site with great Core Web Vitals. The result: Next.js statically generates the listing with ISR (revalidate hourly), the editing panels stay in WP where marketing already knows the interface. Payoff: 90+ Lighthouse, a panel the marketing team doesn't need training for.
The same content (product copy, articles) needs to land in:
The WP REST API becomes one source of truth. Without going headless you'd be rewriting copy in five places.
The client has a design system in Figma mapped 1:1 to React components. A WP theme would be a gateway to chaos - any editor could paste arbitrary HTML. In a headless setup the editor block defines the data structure and the frontend renders it with known components. The design system stays intact.
If the site has to show different content to logged-in vs anonymous users, A/B-test hero variants, or do geolocation routing - you do that at the edge / middleware layer, where WP's PHP would just be in the way.
Classic WP hosting (cPanel and friends) is built around PHP and MySQL. If the client has a VPS and likes Docker - headless WP lives in one container, the frontend in another, Caddy / Nginx proxies them. Hosting no longer dictates architecture.
Headless WP for a business-card site is overengineering. Classic theme plus a light page builder (Bricks or a homegrown ACF setup) ships faster, cheaper, with better preview.
In a headless setup live preview needs configuration. Every React component change requires a frontend deploy. If the client wants "click and publish" - the WP monolith wins, because Gutenberg renders directly.
WooCommerce works in a headless setup, but you lose everything Woo gave you for free - cart, checkout, payment integrations, transactional mail, reporting dashboards. You end up rebuilding all of that on the Next.js side via the WooCommerce REST API. If the store has fewer than 500 products and doesn't need a custom checkout flow, the classic Woo theme wins by light-years.
| Signal | Classic WP | Headless WP | Next + Sanity / Payload |
|---|---|---|---|
| Client knows WP | Yes | Maybe | No |
| Site has 10+ repeating templates | Maybe | Yes | Yes |
| Site has 3-5 pages, rarely updated | Yes | No | No |
| High performance required (CWV) | Maybe | Yes | Yes |
| E-commerce with WooCommerce | Yes | No | No |
| Multi-channel publishing | No | Yes | Yes |
| Client has their own PHP hosting | Yes | Yes | No |
| Client wants click-and-publish | Yes | Yes (with preview) | Yes |
There's no single answer. There are nine questions worth asking before you make the call.