What moves, what is rebuilt, and what should never move?
A B2B migration is three separate jobs that get quoted as one. Content moves, because a product record is a product record everywhere. Structure gets rebuilt, because no two platforms model a company the same way. And a third category, the one nobody separates out, should stay where it is, because the ERP already owns it and copying it into the storefront is how you end up with a website that quotes a different price than the invoice.
The table below is the whole page in one place. Everything after it is the reasoning for the rows that surprise people.
| Criterion | Verdict | Why |
|---|---|---|
| Products, descriptions, images, categories | Moves. | Export, transform, import. The only real cost is the transform, and it is proportional to how bad your item master is. |
| Public URLs and their redirects | Moves, with work. | A redirect map from old path to new path is mandatory for anything that was indexed. For a login-gated catalogue this is a smaller list than you think. |
| Price lists and customer-specific pricesThe exception is a platform that cannot read from the ERP fast enough, in which case you are syncing them, not migrating them, and it never ends. | Should not move. | They live in the ERP. Acumatica holds them in Sales Price Worksheets and price classes; Cin7 holds them as price tiers. Copy them into the storefront and you own two answers to one question. |
| Company accounts and their contacts | Rebuilt. | Every platform models this differently and imposes its own ceilings. On Shopify, a company location can hold a maximum of 50 customers and 25 catalogues. |
| Customer passwords | Cannot move. | Shopify states outright that passwords cannot be migrated by CSV because they are encrypted outside Shopify. Every buyer sets a new one. This is the adoption risk. |
| Catalogue entitlements, who can see what | Rebuilt. | Entitlement is expressed as catalogues, customer groups, markets or price classes depending on the platform. The rule survives; the mechanism does not. |
| Order history | Should not move. Read it from the ERP. | The ERP already has every order from every channel, including the ones phoned in. A storefront-only history is the incomplete version. |
| Invoices and statements | Should not move. Read them from the ERP. | The finance system is authoritative for what is owed. A copied invoice goes stale the moment a credit note lands. |
| Saved carts and reorder lists | Moves if you can, and usually you should. | This is the buyer-facing thing that makes the new store feel like the old one. It is also the least-planned item on every migration we see. |
| Punchout endpoints | Rebuilt, and coordinated with the buyer. | The URL your customer’s procurement system posts to is configured on their side. Changing it needs their change window, not yours. |
Checked against: Shopify help: company and company location limits, read 20 August 2026, Shopify help: customer passwords cannot be migrated, read 20 August 2026, Acumatica community 17608: prices live in the ERP, only Default Price syncs
Which of these should stay in the ERP, and why does copying them hurt?
Four things: prices, credit, order history and invoices. All four have the same failure mode. The storefront copy and the ERP original diverge, nothing errors, and you find out from a customer.
Prices are the clearest case. In Acumatica, a Sales Price Worksheet releases negotiated prices into the ARSalesPrice table with effective and expiration dates, and that is what your inside sales team quotes from. Acumatica’s own community, answering a direct question about syncing that effective price to Shopify, says "Only Default Price is supported". If you migrate your price list into the storefront as static data instead of resolving it from the ERP, then every worksheet released afterwards widens the gap between what the website says and what the invoice says. Nothing in either system will tell you.
Credit is the same shape with a worse consequence. A A credit limit is the amount a customer may owe at any one time. Buying on account, often on thirty-day terms, is standard in B2B and the limit is enforced by the ERP. copied into a storefront is a number from the day you copied it. The ERP’s number moves with every unpaid invoice. A buyer who is over their limit today will still check out on the storefront’s stale copy.
Order history and invoices are less dangerous and more embarrassing. Your ERP holds every order the customer ever placed, including the phoned-in ones and the EDI ones. A storefront that shows only its own orders is telling the customer a partial truth in a place they went looking for a complete one. Read it through instead. That costs an API call and it is right forever.
Checked against: Acumatica community 17608: "Only Default Price is supported", Acumatica community 11823: price lists are prepared and processed, often overnight
Why do company accounts and passwords sink more launches than the catalogue does?
Because they are the only part of the migration your customers experience directly, and they land on the same morning.
Take the shape of the problem on Shopify, which documents its limits clearly enough to be worth quoting. A company can hold a maximum of 10,000 locations and 10,000 customers. A company location can hold a maximum of 50 customers and a maximum of 25 catalogues. Those numbers are generous for most distributors and lethal for a few: if you sell to a buying group where one account has hundreds of named purchasers at one ship-to, the 50-customer location limit is a structural problem you need to design around before the data migration, not during it.
Then the passwords. Shopify states that "because passwords are encrypted outside of Shopify, you can’t migrate customer passwords from another online store using a CSV", and separately that "B2B customers can’t use legacy customer accounts". So every buyer is invited to a new login system and asked to set a new password on the same day the site looks different. Two of them will do it, three will phone your order desk, and the rest will go back to emailing purchase orders, which is exactly the behaviour the project was funded to stop.
The fix is boring and it works: invite in waves, start with the buyers your reps talk to weekly, keep the old store reachable for a fortnight, and give the order desk a script. Budget for it as a change-management task with a named owner, because it is not a technical task and no developer will pick it up.
Checked against: Shopify help: B2B company and location limits, read 20 August 2026, Shopify help: B2B customers cannot use legacy customer accounts, read 20 August 2026, Shopify help: importing customers, read 20 August 2026
What happens to SEO when most of the catalogue is behind a login?
Less than a migration agency will tell you, and more than you would guess in one specific place.
Start with the honest arithmetic. If your product pages require a login, they were never indexed, so there is no ranking to lose and no redirect to write for them. A distributor with 40,000 gated SKUs and 60 public pages has a 60-page SEO migration, not a 40,000-page one. The generic replatforming advice about preserving URL structure is written for retail catalogues that are entirely public, and applying it to a gated B2B catalogue produces a large invoice for work with no traffic behind it.
The place it does matter is the thin public layer: your brand pages, your category landing pages, your line card, your resource content, and any product pages you deliberately left open so buyers can find you before they have an account. That set is small enough to inventory by hand in an afternoon, which is exactly what you should do. Pull your top pages by impressions from Search Console, not by your own sense of what matters, and write a redirect for every one of them.
One thing genuinely worth protecting: if you have public product pages today and the new platform gates them by default, you have not made an SEO mistake, you have removed a channel. Decide that deliberately rather than discovering it after launch when the traffic goes.
Checked against: Google Search Central: site moves with URL changes, read 20 August 2026, Shopify help: B2B customers must log in to see B2B pricing, read 20 August 2026
What should you inventory before anyone quotes this work?
Six numbers. Each is an afternoon’s work from systems you already have, and together they change a migration quote more than any conversation about platforms.
A vendor who quotes without asking for these is quoting a template. A vendor who asks for them and then quotes a range is being honest with you.
How many distinct price groups does your ERP resolve for B2B customers? This single number decides the platform tier on Shopify, where non-Plus plans cap you at three active catalogues.
How many buyers logged into the current store in the last twelve months? That is your re-onboarding project and your adoption risk.
How many company accounts have more than 50 named contacts at one location? Check this against your target platform’s limits before design.
How many public, indexed URLs do you actually have? Take it from Search Console impressions, not from a site crawl.
How many customers reach you through punchout or EDI? Each one is a separate change window in somebody else’s IT department.
What percentage of your item master fails a basic validity check today: missing SKU, blank unit of measure, duplicate attribute description? Above five per cent and the data is the project.
Checked against: Shopify help: three active B2B catalogues below Plus, read 20 August 2026, Shopify help: 50 customers maximum per company location, read 20 August 2026
Common questions
- Does customer-specific pricing migrate to a new commerce platform?
- It should not be migrated at all. Customer-specific prices belong in the ERP, where Acumatica holds them against a customer or price class and Cin7 holds them as price tiers, and the storefront should resolve them rather than store a copy. A migrated price list is correct on the day you move it and wrong after the next price change, with nothing to tell you.
- Can we migrate customer passwords to a new platform?
- Not to Shopify, which states that passwords cannot be migrated by CSV because they are encrypted outside Shopify, and that B2B customers cannot use legacy customer accounts. Assume every buyer sets a new password on launch day, plan an invitation sequence in waves, and brief your order desk. This is the largest adoption risk in a B2B replatform.
- Should we migrate order history and invoices into the new storefront?
- No. Read them from the ERP instead. The ERP holds every order from every channel, including phoned-in and EDI orders, so a storefront-only history is the incomplete version, and a copied invoice goes stale the moment a credit note is issued. Reading through costs an API call and stays right permanently.
- How much SEO risk is there in moving a B2B catalogue that sits behind a login?
- Much less than for a public retail catalogue, because gated pages were never indexed and have no rankings to lose. Your real exposure is the thin public layer: brand pages, category landing pages, line cards and any deliberately open product pages. Inventory those from Search Console impressions and write a redirect for each one. That list is usually small enough to build in an afternoon.
- What is the most commonly forgotten item in a B2B migration?
- Saved carts and reorder lists. They rarely appear in a scope document and they are the thing a repeat buyer notices on day one, because a list they built over two years is how they place an order in ninety seconds. Ask for them explicitly, and if they cannot move, say so before launch rather than after.
Last updated 2026-08-20. Facts on this page last checked against source 2026-08-20.
