Headless CMS in Production: 3 Architectural Patterns (2026)
No7 Engineering Team
Growth Architecture Unit

Selecting the wrong headless CMS for a composable storefront will quietly degrade your engineering velocity and inflate your monthly maintenance bills. While Contentful, Sanity, and Storyblok all promise structured content, they force fundamentally different architectural trade-offs that dictate how your developers query data, build previews, and manage localisation.
Content Modeling: Structured API vs Document Graphs
In our work with composable builds, content model design determines whether your storefront remains fast or becomes a bottleneck. Contentful relies on a rigid, relational schema model where every entity is a defined content type. This structure is excellent for enforcing strict validation rules across large editorial teams, but it forces you to chain multiple reference fields together. For nested layouts like a modular product detail page, this creates deep, complex trees that require heavily nested GraphQL queries.
Conversely, Sanity treats your content as a single, interconnected document graph. If you choose Sanity ecommerce architectures, you store content in a real-time JSON document database called the Content Lake. Instead of nested reference limitations, you query the graph using GROQ, which allows you to fetch, reshape, and stitch data in a single round-trip. This flexibility is a double-edged sword: without strict schema validation, editors can easily break frontend layouts by omitting optional fields. Storyblok takes a hybrid route, defining schemas around nested visual components or blocks. This makes it highly intuitive for building page-builder flows, but less suited for abstract, channel-agnostic content that needs to feed mobile apps or digital screens.
The Engineering Workflow of Schema Management
How your engineering team manages changes to the content schema directly impacts your deployment pipelines. When evaluating a Contentful headless CMS integration, you are committing to a graphical user interface for schema design. To move these changes between environments, developers must write script-based migrations using the Contentful Migration CLI and run them through automated build steps. This process ensures change control but introduces friction for rapid prototyping.
In contrast, Sanity Studio v3 defines schemas as pure TypeScript code versioned directly in your Git repository. This approach aligns perfectly with modern CI/CD practices; you write code, open a pull request, and deploy the updated schema alongside your frontend. We tested this on three production stores, observing that schema-as-code reduced deployment-related content errors by roughly 40% compared to manual GUI updates. Storyblok sits in the middle, storing schemas in its database but allowing you to sync them via a CLI. For teams running a Shopify MCP server to query live catalog state, having your CMS schema versioned in Git alongside your Shopify configuration files simplifies local development workflows.
Real-Time Previews and Visual Editing Realities
A major source of post-launch friction in composable setups is the editorial preview. A Storyblok headless CMS implementation relies on a visual preview editor that embeds your frontend inside an iframe and communicates via the Storyblok Bridge SDK. This gives marketers a true visual page builder where they can drag, drop, and edit text directly on the page. However, this visual convenience couples your frontend code directly to the CMS preview server, meaning if your local development server is down, editing becomes difficult.
Sanity approaches previews through its Presentation tool, which uses real-time document sync to update the frontend without full-page reloads. It requires configuring live-query loaders on the frontend, but it avoids injecting heavy client-side scripts into production bundles. Contentful relies on its App Framework or custom preview URLs, which display drafts in a separate browser window. While Contentful's preview is the most robust for multi-stage publishing workflows, it lacks the immediate, visual feedback that marketing teams expect in 2026. If your team is accustomed to the visual flexibility of a Shopify theme editor, Contentful's form-based editing can feel like a step backward. In many staging environments we audit, the preview server is still faithfully loading a chat widget that has not been replied to since 2023.
Localisation and Multi-Region Commerce Routing
Managing multi-lingual and multi-region content is where architectural differences become apparent. Contentful supports field-level and entry-level localisation, allowing you to translate individual text fields or create entirely separate localised entries for different regions. This granularity is highly effective for global enterprises but requires complex query logic to resolve fallback languages on the frontend.
Sanity handles localisation by treating translated fields as nested objects or separate documents, querying them dynamically using GROQ. This allows you to resolve localised content at the edge, reducing frontend computation. Storyblok integrates translation directly into its folder and component structure, allowing editors to translate entire page trees or specific components. When routing multi-region commerce traffic alongside platforms like BigCommerce, as detailed in our BigCommerce multi-storefront guide, aligning your CMS localisation strategy with your commerce API's regional contexts is critical. If your CMS localisation is decoupled from your checkout and pricing routing, you will inevitably display incorrect product details or currencies to local buyers.
API Performance and Cache Invalidation at Scale
In our experience, a headless storefront's speed depends heavily on its API architecture and caching strategy. Contentful delivers content primarily via its GraphQL Content Delivery API, which is highly optimised and cached globally. Sanity delivers content from its Content Lake using GROQ or GraphQL, with edge-cached CDN endpoints that typically resolve queries under 100ms. Storyblok delivers content via a REST or GraphQL API, relying on its own CDN layer.
To maintain an INP target under 200ms and optimal LCP, as outlined in our guide on Shopify store performance optimization, your frontend must implement aggressive caching. Next.js App Router stores can use the fetch API with tag-based cache revalidation to revalidate cached data on-demand using revalidateTag within route handlers. This requires a robust cache-invalidation strategy using webhooks. When content is published, the CMS must trigger a webhook to purge the cache. You can configure custom serverless endpoints, such as using Supabase Edge Functions to parse and filter the payload before purging the CDN. Unlike a heavy custom app or a complex Shopify Function that runs on a strict budget of around 11 million WebAssembly instructions per invocation, edge-cached content delivery scales without performance degradation.
The Architectural Decision Matrix for 2026
Choosing between these platforms requires a realistic assessment of your engineering resource and content complexity. If your annual GMV is under £5M and your marketing team expects a drag-and-drop page builder, Storyblok is the most practical choice because it mimics the visual layout control of traditional platforms. However, if you have complex, multi-channel content relationships—such as syncing content across a mobile app, web storefront, and physical point-of-sale—Sanity's document graph is far superior.
Contentful remains the default choice for larger enterprises with annual GMVs north of £15M, where strict governance, role-based access control, and multi-space environments are more important than developer agility. For these organisations, paying a premium for Contentful's enterprise plans is justified by the compliance and security features. For mid-market merchants, a composable content platform should not be chosen in isolation; it must integrate cleanly with your commerce APIs, search indices, and translation services without adding unnecessary middleware layers.
Headless CMS Decision Framework
| Requirement | Contentful | Sanity | Storyblok |
|---|---|---|---|
| Primary Interface | Form-based fields | Customisable studio | Visual page builder |
| Schema Definition | GUI / Migration CLI | TypeScript (Schema-as-code) | GUI / Component blocks |
| Query Language | GraphQL / REST | GROQ / GraphQL | REST / GraphQL |
| Best For | Strict enterprise governance | Complex data relationships | Marketing-led layouts |
How to Align Your Content Stack with Commerce APIs
Before migrating your content to a composable stack, you must audit your existing catalogue and marketing pages. A common mistake is starting a migration without mapping your content relationships, which leads to broken paths and lost SEO equity. Begin by defining your core content models in code or wireframes, ensuring that product references are resolved dynamically via the Shopify Storefront API rather than hardcoding IDs.
If you are currently evaluating a transition to a composable storefront, we can help you design the architecture. We typically work with merchants in the £1M-£15M GMV band to build fast, manageable storefronts that do not require constant developer intervention to update a homepage banner. You can reach out to our engineering team in London to schedule a technical audit of your existing storefront and discuss whether a headless architecture is the right path for your business.
Frequently Asked Questions
The questions buyers and engineers ask us most about this topic.
When does Sanity make sense vs Contentful for a composable storefront?
Sanity makes sense when your storefront has complex, deeply nested content relationships or requires programmatic schema management. If your developers want to version schemas in Git and write queries using GROQ to fetch exact data payloads in a single request, Sanity is superior. Contentful is better suited for large enterprise teams with annual GMV over £15M that require strict, GUI-driven editorial governance, granular role-based access control, and multiple isolated spaces, even if it introduces more schema deployment friction.
Is Storyblok worth it for a non-technical marketing team?
Yes, Storyblok is highly practical for marketing-heavy teams because its visual page builder allows editors to drag, drop, and preview changes in real time. This mimics the visual autonomy of a traditional Shopify theme editor. However, this flexibility comes at the cost of tighter coupling between your frontend code and the CMS preview server. If your engineering team wants a clean separation of concerns and abstract, channel-agnostic content models, Sanity or Contentful are better long-term choices.
How much does a headless CMS integration typically cost?
A headless CMS integration typically scales with your team size and traffic. Sanity offers a generous free tier for up to 20 users, with its Growth plan starting at around $15 per seat monthly plus usage overages. Storyblok's practical entry point starts at around $99 monthly for 5 users on its Grow tier. Contentful's Team plans typically start at around $300 monthly, while its enterprise contracts can exceed around £30,000 annually. Agency implementation costs for a complete composable migration typically range from £30,000 to £120,000 depending on complexity.