What breaks in the product data when you migrate to Shopify
Most of what goes wrong in a Shopify migration is not the move itself. It is the product data arriving in a shape Shopify does not use. Shopify allows three options per product (size, color and material, for example) and up to 2,048 variants. Every product gets one standard product category, and navigation runs on collections. Anything else you want to show, such as dimensions, care instructions or a fabric code, lives in metafields, which need a definition before they show up properly. GTINs go in the Barcode field on each variant. Images are fetched from a public URL at import time. Product URLs always follow /products/<handle>.
Your old platform almost certainly did at least one of those differently. Below is what typically breaks for each platform, and then a checklist you can work through. For the import mechanics themselves (CSV columns, file limits, upload steps), see our guide on how to import products to Shopify and the Shopify CSV format reference.
WooCommerce to Shopify: what breaks in the product data
- Variations set to "Any" value. WooCommerce lets a variation match "Any size". Shopify has no wildcard, so every combination has to exist as its own variant with its own SKU and price.
- More than three variation attributes. A WooCommerce product can vary on four or five attributes. Shopify stops at three options, so the extra ones become metafields or separate products.
- Attributes that are not used for variations. "Material" or "Assembly required" in the Additional information tab has nowhere to go in a Shopify CSV. Each one needs a metafield definition.
- Nested and multiple categories. Products often sit in several WooCommerce categories at once. In Shopify that becomes one standard product category plus as many collections as you need.
- Images. The export lists image URLs pointing at your old site. If that site goes offline before the import finishes, the images break. Each variation can carry one image.
- SKUs and GTINs. WooCommerce enforces unique SKUs and Shopify does not, so duplicates can slip in later. Recent WooCommerce versions have a GTIN/UPC/EAN/ISBN field. Older stores often keep it in a plugin field that needs mapping to Barcode.
Magento to Shopify: what breaks in the product data
- Configurable products. A configurable parent with simple children has to become one Shopify product with variants. Configurables built on four or more attributes hit the three-option limit.
- Custom attributes. The Magento 2 export packs custom attributes into a single additional_attributes column as code=value pairs. Each one you keep needs splitting out and mapping to a metafield.
- Store views. Translated names and descriptions come through as extra rows per store view. They have to be matched back to the right product as translations, not imported as new products.
- Bundle and grouped products. There is no one-to-one Shopify field for either. They need rebuilding as bundles or as separate products.
- Category paths. Values like "Default Category/Furniture/Sofas", often several per product, become one standard product category plus collections.
- Images and URLs. Image columns usually hold relative paths under the media folder, which have to become full public URLs. The url_key maps to the Shopify handle, but the .html suffix and category paths in old URLs do not carry over.
- GTINs. Magento has no built-in GTIN field, so it is usually a custom attribute that needs mapping to Barcode.
BigCommerce to Shopify: what breaks in the product data
- Options vs modifiers. BigCommerce variant options create SKUs. Modifiers (a text field for engraving, an add-on checkbox) do not. Shopify has no catalog equivalent for modifiers, so they become a storefront app or theme job, not product data.
- More than three options. Products with four or more variant options run into the Shopify limit.
- Custom fields. BigCommerce custom fields are name/value pairs. Each one becomes a metafield with a definition.
- Brands and categories. The brand maps cleanly to Shopify's vendor field. Products assigned to several categories become one standard product category plus collections.
- Identifiers. GTIN and UPC/EAN go to the variant Barcode field. MPN has no standard Shopify field, so it becomes a metafield.
A worked example: a 4,000-SKU furniture catalog
Picture a typical furniture retailer moving 4,000 SKUs from Magento. Its sofas are configured by size, fabric, color and leg finish: four attributes, one more than Shopify allows. The usual fix is to keep size, fabric and color as options and move leg finish to a metafield if it does not change the SKU or price. If it does change them, split the product by size instead. Make that call once, in a spreadsheet or in Apimio, before the import. If you leave it to the import, you get products with missing variants. The same catalog usually also has dimensions and weight in custom attributes, which become metafields, and three spellings of "oak" across suppliers, which should be fixed before launch, not after.
Catalog migration checklist
- Decide your options. For each product type, list which attributes become Shopify options (three at most) and which become metafields. Our guide to Shopify product variants covers the trade-offs.
- Export everything, then keep the original. Get products, variants, images, categories and custom fields out of the old platform, and save an untouched copy.
- Create metafield definitions for every attribute you keep, with the right type (number, dimension, list). See Shopify metafields for how definitions work.
- Map categories. Give each product one Shopify standard product category, and rebuild navigation as collections.
- Check images. Use full, public URLs, keep the old site online until the import is verified, and assign one image per variant where it matters.
- Check identifiers. Make SKUs unique, put GTINs in the Barcode field, and flag duplicates before they reach Shopify.
- Plan handles and redirects. Map the old URL key to the Shopify handle, and export the full list of old product URLs so whoever sets up redirects has it.
- Score before you publish. Run a quality check on required fields, images and descriptions, and hold incomplete products back as drafts.
- Test on a sample. Import 50 products into a development store, including your most complex variant products, and check them on the storefront.
- Re-run before cutover. Export again close to launch so price and stock changes since discovery are not lost.
- Cut over the rest separately. Orders, customers, gift cards, reviews, redirects and the theme each have their own workstream.
Where Apimio fits, and where you need an agency or a migration app
Apimio handles the catalog part of that checklist. You import your WooCommerce, Magento, BigCommerce or spreadsheet export as CSV or Excel into Supplier Bridge. AI Column Mapping suggests where each column goes, on every plan. Saved supplier mappings, which let you re-run the same export during rehearsals, and Scheduled Imports are on the Advanced and Enterprise plans. Variant Manager holds up to 2,048 variants per product. Quality Guard scores every product from 0 to 100 against 74 checks, and Publish Gate holds products below your bar as drafts. The clean catalog then syncs to Shopify, two-way and in real time.
Apimio does not migrate orders, customers, gift cards, reviews, URL redirects or your theme. It also has no live connection to WooCommerce, Magento or BigCommerce; it works from the files you export. For everything outside the catalog, use Shopify's Store Migration app, a third-party migration app, or a Shopify partner agency. Many teams use an agency for the theme and redirects, and run the catalog through Apimio so it lands clean and stays clean after launch.