It Started With a Good Intention
The client was a mid-size D2C brand doing about ₹15 crore in annual revenue through their Shopify store. Their site was slow — 6.5 second load time on mobile. Conversion rate was 1.2%, well below the 2.5% industry benchmark. They'd heard about "headless commerce" and wanted us to rebuild their storefront in Next.js while keeping Shopify as the backend. The pitch was compelling: fast frontend, flexible design, better SEO. What could go wrong?
A lot, as it turned out.
The Storefront API Has Gaps
Shopify's Storefront API is good, but it's not a complete replacement for the native Shopify storefront. We discovered this about three weeks into the project. The Storefront API doesn't support: Shopify Scripts (the client used these for complex discount logic), some gift card flows, certain checkout customizations, and the native Shopify app ecosystem. That last one was the killer — the client used 14 Shopify apps, and about 8 of them injected UI into the storefront. In a headless setup, those apps just... don't work.
We had to rebuild the functionality of four Shopify apps from scratch: a loyalty points system, a product review widget, a size recommendation tool, and a "frequently bought together" feature. This added eight weeks to the project timeline and wasn't in the original scope. The client wasn't happy, and honestly, we should have done a more thorough audit of their Shopify app dependencies before proposing the migration.
Checkout Is Still Shopify-Hosted
Here's something Shopify doesn't emphasize in their headless commerce marketing: even with a headless storefront, the checkout is still hosted by Shopify. So your user browses your beautiful, fast Next.js storefront... and then gets redirected to checkout.shopify.com, which looks and feels completely different. The design discontinuity is jarring. Yes, Shopify Plus merchants can customize checkout, but our client wasn't on Plus (₹2,000/month to ₹32,000/month is a big jump), and even Plus customization has limits.
We mitigated this with Shopify's Checkout Extensibility APIs, but it's still a compromise. The checkout doesn't match the storefront perfectly, and there's a perceptible redirect that increases checkout abandonment. Our analytics showed a 4% higher abandonment rate at the checkout transition compared to native Shopify checkout.
The Content Management Problem
Shopify's CMS is basic but functional — the marketing team could update product descriptions, create collection pages, and manage blog posts. With a headless setup, we needed a separate CMS. We used Sanity, which is excellent, but now the content team manages products in Shopify Admin AND content pages in Sanity. Two admin panels, two mental models, two sets of credentials. They hate it.
We built a unified admin dashboard that pulls data from both sources, but it's a maintenance burden and adds complexity to an already complex setup. In retrospect, we should have pushed harder for Shopify Hydrogen instead of a fully custom Next.js build. Hydrogen at least keeps you in the Shopify ecosystem with better integration points.
The Results, Honestly
Was it worth it? The numbers are mixed. Load time dropped from 6.5s to 1.8s. Conversion rate improved from 1.2% to 1.9% — better, but not the 2.5% the client hoped for. PageSpeed score went from 28 to 89. Organic traffic increased 31% over six months (partly from performance, partly from better SEO with proper meta tags and structured data that we added during the migration).
But the total cost was 2.2x the original estimate, the timeline was 6 months instead of 3.5, and the client now has a more complex tech stack to maintain. For their next brand, they asked us to just optimize the native Shopify theme instead of going headless. We agreed that was the right call.
When Headless Shopify Is Actually Worth It
It's worth it when you need: a truly custom storefront experience that Shopify themes can't deliver, integration with a content-heavy editorial experience, multi-storefront architectures (same backend, different frontends for different brands), or PWA capabilities. For a standard D2C brand selling 200-500 products? Just optimize your Shopify theme. Dawn is actually pretty good.