Ask five vendors what it costs to migrate a large B2B catalog to Shopify and you will get five numbers, sometimes an order of magnitude apart. The published estimates run from a few thousand dollars for a small store port to well past $150,000 for an enterprise replatform, and the spread exists because most of those numbers are priced off the wrong variable: the platform you are leaving. At a million SKUs, the platform pair is a detail. The cost lives in the shape of your data, and a distributor who understands the five drivers below can read any quote and know within minutes whether the vendor examined the catalog or guessed.
Quick answer: The cost of moving a 1M SKU catalog onto Shopify is set by five drivers, none of which is the SKU count itself: how your item master translates into Shopify's product and variant model; how much enrichment debt the catalog carries in missing descriptions, attributes, and images; the physics of loading that much data, which at this scale is an engineered process rather than a CSV import; what travels with the catalog, meaning accounts, contract pricing, order history, and the ERP integration that keeps it all live; and the SEO surface, because a million SKUs is hundreds of thousands of URLs that each need a redirect decision. A vendor who quotes before examining those five things is estimating the average project, not pricing yours.
Why every quote you get is a different number
Migration pricing is usually built from the wrong unit. Vendors price the platform pair, Magento to Shopify or WooCommerce to Shopify, plus a page count and a theme decision, because that model fits the store most of them move: a few thousand products, one storefront, no ERP. The platform-pair specifics still matter and have their own cost anatomy, which the Magento to Shopify migration cost breakdown covers line by line. But at catalog scale the build is the cheap part of the project, and the data work that dominates the budget never appears as a line item in a template quote.
That is the honest explanation for the order-of-magnitude spread: the low quotes price a data port that assumes your data is ready, and the high quotes price the discovery that it is not.
Driver 1: Your SKU count is not your product count
Shopify's catalog model is products, options, and variants: up to three options and 2,048 variants per product, per Shopify's own variant documentation. An ERP item master is none of those things. It is a flat list of SKUs with units of measure, pack hierarchies, supersession chains, and kit relationships, and the first real cost in a large migration is deciding how that list becomes a catalog: which SKUs collapse into variants of one product, which stay standalone, how each-inner-case units are represented, and what happens to the superseded numbers buyers still search by.
This is design work, not data entry, and it is the work that determines whether the store is usable afterward. A million-SKU list translated naively becomes a million thin product pages that neither buyers nor search engines can do anything with; the same list translated deliberately might become 150,000 well-structured products. The difference between those two outcomes is the difference in the quotes.
Driver 2: Enrichment debt comes due at migration
Every large catalog carries debt: SKUs with a part number and a price but no description, attributes that live in a rep's memory, images that exist for the top sellers and nobody else. On the old platform that debt was invisible because nobody was reading those pages. A migration is when it comes due, because moving a blank record produces a blank page, and at this scale the gap is measured in person-years if it is closed by hand.
The structural answer is a PIM, a product information management system that becomes the single place the catalog is enriched, governed, and fed to Shopify, and choosing one is its own decision with its own evaluation guide. The budget answer is triage: enrich the SKUs that earn revenue, template the long tail, and make the PIM the system that closes the rest of the debt on a schedule after launch. What a quote should never contain is silence on the question, because enrichment is the single most common source of six-figure surprises.
Driver 3: The load itself is engineering at this scale
Moving a million records is not a bigger version of importing a spreadsheet. Shopify's documentation states the constraint plainly: stores holding 500,000 or more variants are limited to 10,000 new variants per day through app or CSV imports, a ceiling that would turn a million-variant load into a hundred-day project, and the limit is waived on Shopify Plus. That single paragraph of platform documentation is why large-catalog migrations are Plus projects and why the load is built as software: API-based, batched, checkpointed, and resumable, with a counted starting position and a verification pass comparing source and destination before anyone announces go-live.
The verification half deserves equal billing. A load that finishes is not a load that is right, and at a million SKUs, spot-checking is statistics rather than assurance: the project needs reconciliation tooling that counts both sides, flags drift, and proves the catalog landed whole.
Driver 4: The catalog does not travel alone
A B2B catalog is the lightest thing in a B2B migration. Around it travel the company accounts, the contract pricing that makes each account's catalog its own, the payment terms, the open quotes, and the order history that reps and customers both expect to find, and each of those is a migration decision with its own cost. Order history is the classic example: moving ten years of it is expensive, moving none of it breaks reorder workflows, and the right answer is usually a defined window plus an archive, decided deliberately rather than discovered at cutover.
The largest item in this driver is not a data move at all: it is the ERP integration that keeps pricing, inventory, and orders live after launch. At catalog scale the integration is not an accessory to the migration, it is roughly a peer of it in the budget, and pricing the two together is the only way the total is honest.
Driver 5: A million SKUs is an SEO estate
Hundreds of thousands of product URLs carry years of accumulated ranking equity, and the redirect map that preserves it is data work at the same scale as the catalog itself: old URL to new URL, one decision per page, generated programmatically and spot-audited rather than hand-built. Category architecture moves in the same pass, and at this scale so does the crawl-budget question of which of those pages deserve to be indexed at all. The catalog translation from driver one either sets this up or sabotages it, which is one more reason the drivers are priced together or priced wrong.
What a 1M SKU build actually looks like
This is not a theoretical project shape. ULE Group runs its industrial supply business on a Shopify B2B storefront built to scale past one million SKUs, with the catalog managed through a PIM, product and inventory data synced live from its Epicor ERP, search running on Algolia behind more than a hundred filters, and B2B machinery, convert-to-quote and account payment terms, native to the storefront. Every driver above appears in that stack: the PIM answers enrichment, the ERP sync answers what travels with the catalog, and the search architecture is what a deliberate catalog translation buys you.
For a distributor evaluating the project, that is the reference picture: not whether Shopify can hold the catalog, but what the operating stack around a catalog that size looks like when it works. Keeping a store that large searchable is its own discipline, and the guide to managing millions of SKUs covers that operating problem in depth.
How to turn an estimate into a price
A real quote is priced from evidence, and you can shorten the path by arriving with it: the item-master count broken out by product class, the variant shape (how many options, how deep the packs go), an honest attribute-completeness and image-coverage percentage, the order-history window you actually need, the list of systems that must stay connected, and the current platform's URL count. A vendor handed those six facts can price the five drivers; a vendor who quotes without asking for them has priced someone else's project. That evidence-first discovery is exactly how Uncap's Shopify migration practice scopes catalog-scale replatforms, revenue intact, before anyone writes code.
Uncap has been a Shopify Platinum Partner since 2013, with more than 380 B2B commerce projects delivered for manufacturers, distributors, and wholesalers. Talk to Our Experts if your catalog has outgrown its platform and every quote you have collected seems to describe a different project, pricing yours starts with reading your data, and that is the first working session.
Frequently asked questions
How much does it cost to migrate a large B2B catalog to Shopify?
Published estimates run from a few thousand dollars to well past $150,000, and the spread reflects what got priced: a data port versus the real project. At catalog scale the cost is set by five drivers, catalog-model translation, enrichment debt, the engineered load, what travels with the catalog (accounts, pricing, history, ERP), and the redirect map, so an accurate price requires examining the data first.
Can Shopify handle 1 million SKUs?
Yes, with the right architecture: ULE Group runs an industrial supply storefront built to scale past one million SKUs on Shopify B2B, with a PIM managing the catalog and live Epicor ERP sync. Shopify's platform limits shape the design, up to three options and 2,048 variants per product, and stores over 500,000 variants face daily import rate limits unless they are on Shopify Plus.
What makes large catalog migrations so much more expensive than standard ones?
The work shifts from building a store to moving an estate: translating an ERP item master into a usable catalog structure, closing enrichment gaps that are invisible until empty pages appear, engineering a verified data load instead of running an import, migrating accounts and contract pricing, and generating redirects for hundreds of thousands of URLs. The storefront build itself is the smallest line in the budget.
Do I need Shopify Plus for a catalog this size?
Practically, yes. Shopify's documentation caps stores holding 500,000 or more variants at 10,000 new imported variants per day through apps or CSV, and waives that limit on Shopify Plus, which alone makes Plus the working assumption at seven-figure SKU counts. B2B requirements, company accounts, contract pricing, and quote workflows, point the same direction.