ContentCon 2025: How Contentstack Is Leading the Future of Adaptive Digital Experiences
Jun 30, 2025 • 3 Minute Read • Jim King, VP, Partners & Alliances
If you run SAP Commerce Cloud, you already own the hard part. The entitlement rules, the contract pricing, the catalog that resolves differently for every account. That B2B commercial logic took years to encode, and it's the reason replatforming to a composable-native stack stalls the moment someone prices rebuilding it. What SAP never gave you is an experience layer your content team actually wants to use.
You don't have to choose between the two. Keep SAP Commerce Cloud as the engine and put Contentstack in front of it as the experience layer. The commercial logic stays where it works. Everything your content team touches moves to a system built for them. The pattern is well-trodden now, and Contentstack ships a native SAP Commerce Cloud integration for exactly this shape.
This is a well-worn path now. There's one thing you still have to design for on purpose, and it's the difference between a build that holds and a demo that dies its first week in front of real customers.

Fig. A: Architecture
A merchandiser builds a campaign in Contentstack. Hero, copy, twelve featured products. It's perfect in preview, so she publishes it Friday.
Monday, two customers open the same URL. The national account sees all twelve at their contract prices. The regional distributor sees seven. Two more read "price on request." The last two throw a 404, because those SKUs aren't in that buyer's entitled catalog at all.
Nobody caught it. In a CMS, you QA the page, and there was one page to check.
Except there wasn't. On SAP's engine, Contentstack never publishes a page. It publishes a template, and SAP resolves that template into a different page for every buyer who loads it. That is working exactly as designed, which is the whole reason the account runs SAP in the first place. What the merchandiser authored stopped being a page and became a rule, and every tool she touches still pretends otherwise.

Fig.B: Entitlements
Five lines hold the whole thing together.

Fig. C: Sequence
Content references products. It never copies them. Contentstack's SAP Commerce Cloud extension lets a merchandiser pick a live product or category from inside the entry and stores the SKU, not the price. Keep every commercial value out of the CMS, and it can't rot into a shadow catalog that argues with the engine.
Commerce resolves per buyer, at render. The storefront, a custom Next.js front or SAP's Composable Storefront, calls the OCC REST APIs at request time for what has to be true this second: price, stock, entitlement, tax, scoped to the signed-in customer and their B2B unit. Content comes from Contentstack's Content Delivery API, or the GraphQL version of it when you want a component to pull exactly the fields it needs in one call and skip the reference-include overhead. The edge stitches the two into one response.
Preview needs a customer identity. Live Preview at list price is theater, because no real buyer sees list price. Hand preview an impersonated OCC token, and the merchandiser renders as the national account, then as the regional distributor, and sees what each of them will get.
Caching runs on two clocks. SAP sits behind Fastly, Contentstack behind its own CDN, your edge tier over both. Content gets long TTLs, cleared by publish webhooks. Entitled price gets none, and never sits in a shared cache. Break that rule, and you serve one buyer's negotiated pricing to another.
Something watches the references. SAP mutates on its own release schedule, so a discontinued SKU or a reorganized catalog can orphan a live campaign overnight. A job that reconciles published references against OCC is the dullest line in the estimate and the one that saves the launch.
The boundary only holds if both teams agree on it up front. Contentstack owns the experience. SAP stays the authority on everything commercial. When a turf question comes up mid-project, and it will, this is the line.

Fig. D: Ownership
A few forks matter more than the rest.
The storefront framework is the first. SAP's Composable Storefront (Spartacus, Angular) gives you a commerce-aware baseline and keeps you inside SAP's support story. A custom Next.js front gives you the rendering and edge control most premium experiences end up needing. Host that front on Vercel, Netlify, or Contentstack's own Launch, which brings Live Preview and Visual Builder wired in if you'd rather keep one vendor. Choosing the custom front also means you walk away from SmartEdit, and SAP's page-and-slot CMS model goes with it.
Personalization is the mistake I see most often. SAP's Intelligent Selling Services wants to drive merchandising and context-driven offers. Contentstack Personalize wants to drive experience and audience-targeted content. Let both decide the same slot, and they contradict each other in front of the customer. Draw the line early. Contentstack composes the story; SAP stays the single authority on pricing and eligibility.
Identity is load-bearing from day one. An entitled price only exists for an authenticated buyer, so the storefront has to resolve a customer and their organizational unit before it can render a real number. That usually means OCC OAuth2 fronted by SAP Customer Data Cloud, and that single decision ripples up through preview and caching into the personalization boundary above it.
The entitlement-scoped page looks like a complication. That complication is the reason this pairing is the right one. Your SAP engine already does the hardest thing to build and the riskiest thing to replace: resolving the correct catalog and the correct price for every account. Contentstack sits on top and gives that logic an experience worth showing, without ever trying to own the transaction. Neither system does the other's job, so neither becomes the bottleneck.
Design for the per-buyer page deliberately and you get a modern, composable front on a commerce core you already trust, without reimplementing a decade of B2B rules to get there. The proof is never the demo. It's whether the page resolves correctly for the regional distributor on a Monday morning.