All Posts
Headless Commerce July 29, 2026

Migrating from Salesforce Commerce Cloud to Headless Shopify Plus: A Replatforming Playbook (2026)

The decision to leave Salesforce Commerce Cloud is usually made on cost and velocity, and by the time it reaches engineering it has hardened into a deadline. That is where replatforming projects go wrong, because moving from SFCC to a headless Shopify Plus stack is not a migration in the copy the data and flip the switch sense; it is a rebuild of the parts of your commerce logic that lived inside SFCC cartridges and pipelines, wrapped around a data migration that is the easy part by comparison. SFCC gave you a monolith where the storefront, the business logic, and the platform were fused, and headless Shopify Plus deliberately unfuses them: Shopify becomes the commerce engine behind an API, and the storefront becomes your own application. Everything that made SFCC feel complete, the cartridge ecosystem, the pipeline customizations, the server side rendering baked in, becomes something you now own explicitly. This playbook walks the migration in the order that actually de-risks it: what maps cleanly from the SFCC data model to Shopify, what has to be rebuilt rather than ported, how to protect the SEO equity that a careless cutover destroys, and the sequencing that lets you move without a big bang launch. The projects that fail treat this as a data problem. The ones that succeed treat it as a rebuild with a data migration attached.

Migrating from Salesforce Commerce Cloud to Headless Shopify Plus: A Replatforming Playbook (2026)

Teams leave Salesforce Commerce Cloud for cost and speed, and then discover that the move to headless Shopify Plus is not a lift and shift. SFCC fused the storefront, the business logic, and the platform into one monolith. Headless Shopify Plus splits them on purpose: Shopify is the commerce engine behind an API, and the storefront becomes an application you own. Your product and order data port with real effort but no drama. The cartridge logic, the pipeline customizations, and the rendering that SFCC did for you do not port at all; they get rebuilt. This playbook sequences the work so the risk lands early and the SEO survives.

What Maps Cleanly and What Does Not

Start by sorting your SFCC footprint into three buckets, because the project plan follows this division more than any calendar.

The first bucket is data that maps with transformation. Products, variants, categories, customers, and order history all have Shopify equivalents. The shapes differ, SFCC's catalog and category structure does not line up one to one with Shopify's product and collection model, but the migration is a well understood transform, not a rebuild. This is the part teams overweight because it is concrete and scriptable.

The second bucket is logic that has to be rebuilt. Every cartridge, every pipeline customization, every piece of promotion or pricing logic that lived inside SFCC is business behavior you now implement elsewhere, in Shopify Functions, in the storefront application, or in a service behind it. There is no porting tool for this because it was written against SFCC's internal model. This is the part teams underweight, and it is where the schedule actually goes.

The third bucket is the storefront itself. SFCC rendered your pages; headless Shopify Plus does not. You build the storefront as an application against the Storefront API, which is freedom and also a from scratch front end project. The following table is the honest mapping.

SFCC element Headless Shopify Plus equivalent Effort
Catalog, products, variants Products, variants, metafields Transform and load
Categories Collections Transform, restructure
Customer and order history Customers, orders via Admin API Transform and load
Cartridge business logic Shopify Functions, storefront app, services Rebuild
Pipelines and controllers Storefront application routes Rebuild
ISML templates, rendering Your front end framework Rebuild
Content slots and assets Headless CMS plus Shopify content Rebuild, re-model

Sequence to De-risk, Not to Ship Fast

The instinct on a deadline is to build everything in parallel and integrate at the end. On a replatform that guarantees a painful integration phase where every unknown surfaces at once. The lower risk sequence front loads the parts most likely to break the plan.

Begin with the data migration as a repeatable pipeline, not a one time script, because you will run it many times: for development, for staging, and for the final cutover, and the delta between your test run and the real catalog is where surprises hide. Build it to run idempotently against a live SFCC export so the final run is boring. In parallel, inventory the cartridge logic and decide per item whether it becomes a Shopify Function, storefront code, or a backing service, and do the two or three highest risk pieces first to prove the pattern before committing to it across dozens of customizations.

Only once the data pipeline is reliable and the hardest logic is proven should the storefront build go wide. Building the front end first, against a data model you have not yet validated, means rebuilding it when the model shifts. We compare the platforms head to head, cost, capability, and lock in, in the Shopify Plus versus SFCC writeup, and the total cost picture that usually drives the decision is in the TCO analysis.

The SEO Cliff

The fastest way to turn a technically successful migration into a business failure is to destroy organic traffic at cutover. SFCC and your new headless storefront will almost certainly use different URL structures, and if you launch without a complete redirect map, you drop every ranking URL into a 404 and watch organic revenue fall off a cliff that takes months to climb back.

The defense is unglamorous and non negotiable. Crawl the live SFCC site and export every indexed URL with traffic. Map each one to its destination on the new storefront, and implement server side 301 redirects for all of them before launch, not after. Preserve the on page signals that carry ranking, titles, headings, structured data, and canonical tags, so the new page is recognizably the same content to a crawler. Keep the redirect map in place indefinitely; there is no expiry on a link someone else pointed at your old URL. This work has no visible output until the day it saves you, which is exactly why it gets cut, and cutting it is the single most common cause of post migration revenue loss. The strategic case for why brands make this move despite the risk is in the enterprise migration writeup.

Avoid the Big Bang

A single cutover where the entire site moves at once concentrates all risk into one irreversible moment. Where the architecture allows, prefer an incremental path: route a subset of traffic or a subset of the catalog to the new storefront first, validate conversion and SEO on that slice, and expand. A strangler pattern, where the new storefront progressively takes over paths from the old one behind a routing layer, lets you roll back a section without rolling back the project. Not every SFCC contract or infrastructure setup permits a gradual cutover, and if yours forces a hard switch, then the rehearsal discipline matters even more: run the full cutover against staging end to end, including the redirect map and the data pipeline, until a dry run is uneventful.

When This Applies to Your Stack

This playbook fits the brand that has outgrown SFCC's cost and pace and wants the flexibility of a headless Shopify Plus storefront, and that has enough cartridge and pipeline customization that the move is a real rebuild. If your SFCC instance is lightly customized, the logic rebuild is small and the project is closer to a data migration. If it is heavily customized, the logic bucket is the whole project and should be scoped first. Either way, treat the SEO redirect map as launch blocking, not as cleanup.

Replatforming off SFCC to headless Shopify Plus is the core of what we do at Contra Collective: the data pipeline, the cartridge logic rebuild, the storefront, and the redirect discipline that protects the traffic you already earned. The migrations that go badly are the ones scoped as data moves. We scope them as rebuilds, which is what they are.

FAQ

How long does an SFCC to headless Shopify Plus migration take? It scales with your cartridge and pipeline customization, not your catalog size. A lightly customized instance can move in a few months; a heavily customized one where dozens of cartridges encode business logic is a longer rebuild. Scope the logic bucket first, because it drives the timeline more than the data does.

Will I lose my SEO rankings? Only if you skip the redirect map. Different URL structures between SFCC and the new storefront mean every old URL needs a server side 301 to its new equivalent, implemented before launch, with on page signals preserved. Done properly, rankings largely hold; skipped, organic traffic drops sharply.

Do SFCC cartridges port to Shopify? No. Cartridges are written against SFCC's internal model and have no equivalent to import. The business logic inside them is rebuilt as Shopify Functions, storefront application code, or backing services. This is the part of the migration that most needs early scoping.

Can I migrate gradually instead of all at once? Often yes, using a routing layer that shifts paths or catalog subsets to the new storefront incrementally. This reduces risk versus a single cutover. Some SFCC setups force a hard switch, in which case rehearse the full cutover against staging until a dry run is uneventful.

[ 02 ] — Keep Reading

More from the lab.

Aug 2, 2026 Headless Commerce

Segment vs RudderStack vs mParticle: Customer Data Platform for Headless Commerce (2026)

A customer data platform is the least visible and most load-bearing piece of a headless commerce stack. It is the layer that captures every event from the storefront, the mobile app, and the backend, resolves those events into a single view of the customer, and fans them out to analytics, email, ads, and the warehouse. Because it sits in the middle of everything, the CDP choice quietly decides three things that are expensive to change later: whether you own your customer data or rent access to it, how much of your compliance and consent surface lives inside a vendor versus your own infrastructure, and how your bill scales as event volume grows, which in commerce it always does. Segment, RudderStack, and mParticle are the three platforms most enterprise commerce teams shortlist, and they embody genuinely different philosophies rather than being feature-for-feature clones. Segment is the managed incumbent optimized for time to value. RudderStack is the warehouse-first, self-hostable challenger built for teams that want to own the pipeline. mParticle is the mobile-heavy enterprise option with the deepest identity and audience tooling. For a headless architecture, where the storefront is decoupled and events originate from several surfaces at once, the differences in how each handles server-side collection, identity resolution, and pricing at volume are what separate a clean integration from a costly one. This post lays out those differences and the decision framework that follows from them.

Jul 30, 2026 Headless Commerce

Multi Currency and Cross Border Pricing in Headless Commerce: Duties, Rounding, and the Presentment Problem (2026)

Selling internationally on a packaged storefront is mostly a settings screen: turn on the currencies, let the platform convert, and the theme shows the right number. Go headless and the convenience disappears, because now your own frontend is responsible for asking the API for a price in the customer's currency, displaying it with the correct rounding, carrying that currency all the way through the cart and into checkout, and reconciling what the customer paid against what the store settles in. Each of those steps has a way to go wrong that a themed store never exposed you to, and the most common one is subtle: the storefront requests a presentment currency and the API quietly returns the amount in the store's base currency anyway, so the customer sees a euro sign in front of a dollar number. Add duties and import taxes on a cross border order and the surface expands again, because now the total the customer sees at checkout has to include or exclude a duty depending on whether you sell delivered duty paid or delivered duty unpaid, and getting that wrong means either a surprised customer or a margin you did not plan to give away. This post is about the architecture that keeps a headless international store honest: which system owns the converted price, how presentment currency actually flows through the Storefront API, why rounding is a real rule and not a rounding error, and how duties change the checkout total.

Jul 28, 2026 Headless Commerce

Real-Time Inventory Sync for Headless Commerce: NetSuite, Shopify, and the Oversell Problem (2026)

In a packaged storefront, inventory is mostly the platform's problem: it owns the number, it decrements it at checkout, and it hides the fact that the number is a lie for the few seconds it takes to settle. Go headless and add an ERP as the system of record, plus a marketplace or two and a retail POS, and that convenient fiction falls apart, because now four systems each hold their own idea of how many units exist and they update on different clocks. The storefront reads a cached count that is seconds or minutes stale, the ERP commits the truth on its own schedule, the marketplace polls when it feels like it, and somewhere in the gaps two customers buy the last unit. Overselling is not an edge case in this architecture; it is the default outcome of treating a distributed count as if it were a single authoritative one. This post is about the sync design that keeps a headless stack honest: which system owns the number, how updates propagate without hammering the ERP, why a safety buffer is a real strategy rather than an admission of defeat, and how a reservation pattern turns the last unit problem from a race condition into a queue. The right answer depends on your order volume, your channel count, and how much oversell your margins can actually absorb.

Ready when you are

Want to discuss this topic?

Start a Conversation