Headless commerce is having a moment. The pitch is compelling: keep WooCommerce as your back-end commerce engine, replace the WordPress front-end with a blazing-fast Next.js application, and get the best of both worlds. We have built three of these for clients. Here is what the tutorials do not tell you.
The Cart Is the Hard Part
Everything looks easy until you hit the cart. WooCommerce's cart and session management is deeply tied to PHP sessions and WordPress cookies. The WooCommerce REST API has a cart endpoint, but it is session-based, which means maintaining state across a stateless Next.js front-end requires careful architecture. We settled on a hybrid approach: cart operations go through a thin PHP proxy that manages the WooCommerce session, while the Next.js app communicates via a custom API layer.
Checkout Is Even Harder
Payment providers are the next wall you hit. In a headless setup, you are responsible for building the checkout UI from scratch using the WooCommerce Store API, and integrating payment providers directly from the front-end. This is absolutely doable, but it took us three weeks to build a robust, PCI-compliant checkout flow the first time we did it.
The Performance Win Is Real
The performance improvement is not marketing. Our fastest headless WooCommerce store serves product pages in under 300ms globally, thanks to Next.js static generation and ISR for inventory updates. The equivalent WordPress/WooCommerce monolith was serving the same pages in 1.8–2.4 seconds.
When Headless Makes Sense
After three builds, our recommendation: go headless if you have high traffic (10k+ daily sessions), a development team comfortable with JavaScript, and a catalogue that changes infrequently. For smaller stores or teams without front-end engineering capacity, a well-optimized standard WooCommerce setup will outperform a poorly-implemented headless one every time.