If you've decided BigCommerce vs Shopify in Shopify's favour, the hardest technical part of the move is rarely the products themselves. It's the shape of the catalogue. BigCommerce lets a product carry variant options, modifier options, custom fields and per-customer-group prices. Shopify has variants, metafields and (on Plus) B2B price lists. They don't map one to one.
This post walks through the mapping decisions we make before a single row is imported. It's a companion to our plain-language comparison of the two platforms.
1. Inventory what you actually have
Before you write any script, export a sample and count:
- products with more than 3 option types (Shopify allows 3 options per product)
- products with more than 100 variants (Shopify's long-standing limit; newer API versions raise it to 2,048, but check what your theme and apps support)
- modifier options (text fields, checkboxes, file uploads that don't create a SKU)
- custom fields (spec tables, "material", "care instructions")
- customer group pricing rules
A quick way to get this from the BigCommerce Catalog API:
// Node 20+, BigCommerce v3 Catalog API const store = process.env.BC_STORE_HASH; const token = process.env.BC_TOKEN; const base = `https://api.bigcommerce.com/stores/${store}/v3/catalog/products`; let page = 1, stats = { products: 0, over3Options: 0, over100Variants: 0, withModifiers: 0, withCustomFields: 0 }; while (true) { const res = await fetch(`${base}?include=variants,options,modifiers,custom_fields&limit=250&page=${page}`, { headers: { 'X-Auth-Token': token, Accept: 'application/json' } }); const { data, meta } = await res.json(); for (const p of data) { stats.products++; if ((p.options || []).length > 3) stats.over3Options++; if ((p.variants || []).length > 100) stats.over100Variants++; if ((p.modifiers || []).length) stats.withModifiers++; if ((p.custom_fields || []).length) stats.withCustomFields++; } if (page >= meta.pagination.total_pages) break; page++; } console.table(stats); Those five numbers decide how much custom work the migration needs.
2. Variant options → Shopify options
Variant options (size, colour) that create SKUs map to Shopify options and variants. Rules we follow:
- Keep option names identical so filters and reviews apps keep working.
- If a product has 4+ option types, split it into separate products (for example one product per material) and link them with a metafield or a "combined listing" pattern, rather than squeezing values together.
- Carry each variant's SKU, barcode, weight and price across exactly. SKU is your join key for inventory, ERP and order history.
3. Modifiers → line item properties or an app
Modifiers (engraving text, gift message, file upload) don't create SKUs. In Shopify they usually become line item properties on the product form. Theme code can add them, or a product-options app can if there are many. Decide this early, because it changes the theme work and the test plan.
4. Custom fields → metafields
BigCommerce custom fields are name/value pairs. In Shopify, create metafield definitions (namespace specs, keys like material, care) so they are typed, editable in the admin and usable in the theme and in filters. Don't dump them into the description HTML: you lose filtering and structured data.
5. Customer group pricing → B2B or tags
- On Shopify Plus, map customer groups to B2B companies and price lists.
- On lower plans, a wholesale app or a separate wholesale store is the usual answer. Agree this with the client before quoting; it's often the biggest single cost difference.
6. URLs and the redirect map
Shopify's paths are fixed (/products/, /collections/, /pages/, /blogs/). Every BigCommerce URL that has traffic or links needs a 301 to its new equivalent. Build the map from the old sitemap plus Search Console's indexed pages, then import it through Shopify's URL redirects (CSV import or Admin API).
7. Test with real orders
Run at least: a simple product, a 3-option product, a product with a modifier, a wholesale customer, a discount code and a refund. Check the order in the admin, the email and any connected ERP.
FAQ
Can BigCommerce customer passwords be migrated to Shopify?
No. Passwords are hashed and can't be moved. Import customers, then send Shopify's account activation invite after launch.
Do I need Shopify Plus to migrate from BigCommerce?
Only if you rely on B2B price lists, company accounts or deep checkout customisation. Many direct-to-consumer stores move to a standard plan.
Should custom fields go in metafields or tags?
Metafields. Tags are fine for simple filtering, but metafields are typed and work with Shopify's filters and theme editor.
How long does a BigCommerce to Shopify migration take?
It depends on catalogue size and integrations. The mapping decisions above usually take longer than the import itself.
If you'd rather hand this to a team that has done it before, Dzimark's Shopify migration team plans and runs these moves for stores in the USA, UK, Canada and Australia.
Originally published on the Dzimark blog.

