Moving off Salesforce Commerce Cloud is not a migration in the sense that WooCommerce or Magento projects are migrations. The catalogue is the least of it. SFCC installations carry years of cartridge code, a promotions engine that has been bent into shapes nobody documented, and an integration surface that touches the OMS, the ERP, the PIM, the tax engine and the CRM.
So the first deliverable is not a plan. It is a risk register. Below is the one we work through on SFCC to Shopify Plus scoping, in the order the risks tend to bite.
1. Custom cartridge logic
Every SFCC site has cartridges doing things that are invisible until they stop happening: pricing rules, eligibility checks, fulfilment routing, custom validation at checkout, bespoke customer segmentation. Some of that maps to Shopify Functions. Some maps to an app. Some of it exists because SFCC could not do something natively and Shopify can, which means it simply disappears — a genuine win, but only if somebody identifies it rather than faithfully rebuilding it.
The work: inventory every custom cartridge, tag each behaviour as native on Shopify, Function, app, middleware or drop, and get the drop list signed off by a business owner rather than by the development team.
2. The promotions engine
This is the most consistently underestimated item. SFCC's campaign and promotion model — qualifiers, exclusivity classes, ranked combinations, customer groups, coupon behaviours — is deeper than what Shopify offers out of the box. Shopify Functions close much of the gap, and they do not close all of it in the same shape.
The work: export every currently active promotion, not the full library. Most SFCC instances carry years of dormant campaigns nobody will miss. For each live one, write down what it does in a sentence a merchandiser would recognise, then decide how it is rebuilt. Do this early: it frequently changes the Functions scope, and occasionally it changes the launch date.
3. Checkout customisation
SFCC checkouts are routinely customised in ways Shopify's checkout deliberately does not allow. On Plus you get checkout extensibility — UI extensions, validation and delivery customisation through Functions, branding through the checkout editor — which covers most legitimate requirements and refuses some.
The work: walk the live checkout and list every deviation from a standard flow. Each one is then possible, possible-with-an-extension, or not possible. Anything in the third bucket has to be resolved as a business decision before build, because it will not resolve itself during QA.
4. The integration surface
SFCC talks to the rest of the estate through cartridges and jobs. Shopify talks through APIs, webhooks and usually a middleware layer. The systems on the other end do not change, but every connection is rebuilt.
The work: map each integration with its direction, trigger, payload and failure behaviour. Failure behaviour is the part people omit and the part that causes incidents — what happens to an order when the OMS is down for ninety seconds is a design decision, and on SFCC it was made years ago by whoever wrote the job.
5. Content and Page Designer
Content assets, content slots and Page Designer components have no direct Shopify equivalent. The nearest model is metaobjects plus theme sections, which is a good model and a different one. Merchandisers who are fluent in Page Designer will need retraining, and their existing page layouts are rebuilt rather than imported.
The work: count the pages that are genuinely maintained. Landing pages built for a campaign three years ago do not need rebuilding, and treating the content migration as all-or-nothing is how a four-week job becomes a twelve-week one.
6. SEO and URL structure
SFCC URL patterns are configurable and rarely tidy — category paths, pipeline remnants on older sites, parameterised refinements that got indexed. Shopify's structure is fixed.
The work: pull sixteen months of Search Console data, map the top pages by hand, pattern-map the tail, and load the redirects before DNS moves. Also check what your refinement URLs did to your index: a lot of SFCC sites arrive with thousands of indexed filter combinations, and the migration is a good moment to stop that rather than to faithfully redirect it.
7. Data volume and price books
SFCC price books with sequencing and date ranges do not map one-to-one onto Shopify pricing. Market price adjustments, B2B catalogues and price lists cover most patterns; scheduled price changes usually need an app or a job.
The work: reduce your price book stack to the rules that are actually in force, then decide which need to be dynamic and which are just a current price.
8. Contract and overlap cost
This is a commercial risk, not a technical one, and it belongs on the register. SFCC agreements commonly run on revenue share with a term, and you will be paying for both platforms during the build. Get the notice period and end date from the contract owner in week one, because it constrains the launch window more tightly than any technical dependency.
9. Team capability
An in-house team fluent in ISML, SFRA and Business Manager is not automatically fluent in Liquid, Functions and the Shopify admin. Budget the training, and be honest about which roles change. Merchandisers are usually delighted. Developers who have specialised deeply in SFCC need more support than anyone admits at kick-off.
What the review produces
A completed register gives you three things worth having before any code is written: a list of behaviours that will not exist after launch and who has agreed to lose them, a build scope that reflects promotions and integrations rather than just the catalogue, and a launch window that respects the contract rather than the roadmap.
Replatforming from SFCC to Shopify Plus is very often the right call — lower total cost, faster merchandising, a smaller engineering surface. It goes wrong when it is scoped like a catalogue migration. If you want a second read on your own register, our Shopify migration page sets out how we scope enterprise replatforms, and a free audit is a reasonable place to start the conversation.


