E-commerce
Shopify to BigCommerce: 19 migration traps Matrixify hid
On day three the Matrixify export looked clean. By day seven we had nineteen broken assumptions and a Rotterdam wholesaler asking why his B2B pricing tiers had vanished.

It's 23:14 in Rotterdam. The Shopify Plus contract expires in fourteen days. The Matrixify export finished an hour ago. All 12,847 SKUs green, every CSV under 200MB, zero warnings in the log. We open the BigCommerce staging store and the first product looks fine. Then we click a variant. Then we check a B2B price tier. Then we count customers and find 38,114 where Shopify had 41,200.
This cheatsheet is what we wish we had on day one. Nineteen things the Matrixify export quietly dropped, mangled, or restructured between Shopify Plus and BigCommerce on a 12,000-SKU wholesaler migration. Ordered by how loud the failure was: silent at the top, schema-different at the bottom.
The seven Matrixify drops without a warning
These are the ones that hurt. The export ran clean, the CSV opened in BigCommerce's importer with no errors, and the data was simply not there.
- B2B catalogs and price lists. Shopify's newer B2B catalog feature (the one tied to company profiles, not the legacy wholesale channel) lives outside the product CSV entirely. Matrixify pulls product cost and compare-at price, but the per-company price lists never appear. We discovered this when a buyer logged in and saw retail pricing. Plan to rebuild B2B pricing through BigCommerce customer groups from a separate Shopify Admin API pull.
- Customer password hashes. Shopify does not release password hashes through any export, by policy. Every customer is logged out forever. We sent password-reset emails batched over four days to avoid the spam folder. Expect a 30 to 50 percent reset rate in week one.
- Metaobjects. Shopify 2.0 metaobjects export as opaque JSON references. BigCommerce has no native equivalent (the closest is metafields on entities), so any product spec, ingredient list, or care-instruction module built as a metaobject needs to be re-modelled and re-imported.
- Translate & Adapt copy. Locale-specific product titles, descriptions, and SEO fields managed through Shopify's translation app live on the Translatable Resources GraphQL endpoint, not on the product. Matrixify's default exports skip them. The wholesaler had Dutch and German variants. We pulled them through GraphQL and remapped to BC's multi-language fields.
- Flow-applied customer tags. Tags applied by Shopify Flow automations (loyalty tier, VIP, no-ship-list) export as a flat string. The logic that maintained them does not. BigCommerce's automations work differently. Document every Flow before you migrate or you'll spend a month reverse-engineering segmentation.
- Theme sections and app embeds. Anything built with Shopify 2.0 sections, app blocks, or theme-app extensions is a complete rebuild. This isn't strictly a Matrixify failure (themes don't migrate), but teams routinely forget that custom product templates, app-embedded reviews, and dynamic recommendation blocks have no path forward.
- Cart attributes and live carts. If your apps write cart attributes (custom engraving, B2B PO numbers), those exist only on live carts and draft orders. Matrixify can export draft orders but not the in-flight cart sessions. Migrate during a low-traffic window and accept that abandoned carts are lost.
The eight lossy conversions
These came through, but wrong. Worse than missing data because nobody flagged them at QA.
- Variant images mapped as product images. Shopify lets one image attach to multiple variants. BigCommerce wants explicit variant-image rows. Matrixify's default export drops the variant association, so all images pile up as product gallery photos. On 12,000 SKUs with three variants average, that meant 36,000 mismatched assignments. Use the variant-image join columns in the export, or write a post-import script.
- Inventory locations collapsed. Shopify Plus stores multi-location inventory natively. BigCommerce supports multi-location too, but only on the new Inventory API. Matrixify's CSV maps to a single warehouse by default. Set up locations in BigCommerce first, then export with location columns, then import.
- Smart collections turned static. Shopify's automated collections (rule-based) export as the list of products they currently contain. BigCommerce's category equivalent has its own rule engine, but the predicates don't match. We rebuilt 84 smart collections by hand from the rule definitions in Shopify Admin.
- Automatic discounts dropped to codes. Shopify's automatic discounts (BOGO, tiered, free shipping above X) become coupon codes in the BigCommerce import, losing the auto-apply behaviour. BigCommerce's Promotions module can rebuild most of them, but the conditional logic needs human translation.
- Tax overrides flattened. Shopify's per-region tax overrides (zero-rated children's clothing in the UK, reduced VAT on food in NL) come through as a single tax class. EU wholesalers will get this wrong by default. Configure BigCommerce tax zones and product tax classes before import.
- Gift card balances without expiry. Gift card codes and balances export, but expiry dates and recipient names do not. Customers got cards that worked but had no name on them. Communicate before launch.
- Fulfillment service routing lost. Products fulfilled by a 3PL through Shopify's Fulfillment Service API show up in BigCommerce as merchant-fulfilled. Reconnect the 3PL integration and re-tag affected SKUs before the first order day.
- Subscription products went dumb. Recharge, Bold, and Appstle subscription products export as one-time purchases. The subscription state (next billing date, frequency, customer authorization) lives in the app's own database. Coordinate the migration with the subscription app vendor or expect angry recurring-revenue customers.
Matrixify's all-green log only confirms that the CSV wrote successfully. It does not confirm that the source data is complete. Always export, count rows, and compare against the Shopify Admin counts before importing.
The four schema mismatches that need manual work
These are not really Matrixify's fault. They are structural differences between the two platforms.
- Product options vs option sets. Shopify lets you freely combine option values (Size: S, M, L; Colour: Red, Blue) without declaring the structure. BigCommerce option sets are reusable templates assigned to products. The Matrixify import will create one option set per product. On a 12,000 catalog with shared sizing, that produced 12,000 near-identical option sets. Consolidate post-import, or build option sets first and reference them by name.
- SKU field name collision. BigCommerce has both a Product Code/SKU at the product level and a SKU at the variant level. Shopify's product-level SKU usually maps to BigCommerce's variant SKU. Get the mapping wrong and you'll spend the first week of ops chasing inventory variances that don't exist.
- URL redirects need rewriting. Shopify URLs are
/products/handleand/collections/handle. BigCommerce defaults to/product-url-key/and/category-url/. Export Shopify's existing 301 map, rewrite it for the BigCommerce structure, and load it through the Redirect Manager before DNS cutover. SEO traffic doesn't forgive a missed redirect. - Webhooks and app subscriptions. Every webhook, every app subscription, every API integration registered against the Shopify store is gone the moment you switch the domain. Audit them first. We found 47 active webhooks on the wholesaler's store, eleven of which were old apps nobody remembered installing.
Our migration sequence, in order
The cheatsheet looks like work to do. It is. But the order matters more than the items. We ran the wholesaler in this sequence and shipped on day eleven:
- Set up BigCommerce locations, customer groups, tax zones, and option sets before the first product import.
- Export Shopify products, variants, and variant images via Matrixify, plus a separate GraphQL pull for metaobjects, translations, and B2B price lists.
- Reconcile customer count and product count against the Shopify Admin before importing anything.
- Import products in a dry-run BigCommerce store, QA the top 50 best-sellers and a stratified sample of variants, fix the import script, then run on the live target.
- Build customer groups and price lists from the B2B export.
- Reconnect 3PL, payment provider, and email or SMS apps. Re-register webhooks.
- Build the 301 redirect map. Test on staging with
curl. Cut DNS. - Send password reset emails in batches over four days.
Day one after cutover we still had broken edges. Two collections empty because the smart-collection rules didn't translate. A gift card holder who couldn't redeem because of a leading whitespace in the imported code. One Flow-tagged customer segment that now needed to be rebuilt as a BigCommerce marketing list. Each of those was a known item from the cheatsheet, fixed in under an hour. None of them was a discovery on the production store.
When we did this for the Rotterdam wholesaler last quarter, the hard part wasn't the data. It was sequencing the rebuild work so we never had to re-import a CSV after launch. The migration playbook we use now is mostly this list, in this order, with checkboxes. Not glamorous, but it's the difference between a fourteen-day project and a fourteen-week one.
If you're staring at the same migration this afternoon, the smallest thing you can do today: open Matrixify, run an export of just your B2B catalogs and metaobjects, and compare row counts against your Shopify Admin. If the gap surprises you, you have your starting point.
Key takeaway
Matrixify's all-green log means the CSV wrote, not that the data is complete. Count rows against Shopify Admin before you import.
FAQ
Does Matrixify export Shopify Plus B2B catalogs?
No. The newer B2B catalogs tied to company profiles do not flow through Matrixify's product CSV. You need a separate Shopify Admin API pull and a manual rebuild into BigCommerce customer groups.
Can customer passwords be migrated from Shopify to BigCommerce?
No. Shopify does not release password hashes through any export. Every customer must reset on first login. Batch the reset emails over several days to avoid spam filters.
How long does a 12,000-SKU Shopify to BigCommerce migration take?
With prep work done upfront (locations, tax zones, option sets, customer groups) and a clean Matrixify dry run, eleven to fourteen days is realistic. Without prep, expect six to ten weeks.
What breaks SEO during a Shopify to BigCommerce migration?
Missing 301 redirects. Shopify uses /products/handle and /collections/handle, BigCommerce uses different slugs. Export the existing redirect map, rewrite it, and load it before DNS cutover.
Do subscription products migrate cleanly?
No. Recharge, Bold, and Appstle subscriptions export as one-time purchases. The subscription state lives in the app's own database, so coordinate the migration with the subscription vendor.