Most Magento to Shopify migration guides try to cover everything at once: orders, customers, themes, apps, payment gateways, DNS. That is useful for scoping a project, but it hides the part that usually takes the longest and breaks most often — the product catalog.
Products are where the two platforms differ most. Magento stores product data in a flexible attribute system with configurable products, attribute sets and store views. Shopify uses a simpler model: a product, up to three options, and a list of variants. Every SKU you migrate has to be translated from one model to the other, and every shortcut taken here shows up later as missing variants, broken filters or lost rankings.
This guide focuses only on the product side of a migration: how Magento data maps to Shopify, how to get it out cleanly, how to build an import-ready file, and how to check the result. Orders, customers and redirects for non-product pages are normally handled by your developer or migration agency, and we will point out where the two workstreams meet.
If you would rather receive a ready-to-import file than build one, that is exactly what catalog import for e-commerce is for.
What "Moving the Product Catalog" Actually Includes
Before you choose a tool to migrate Magento to Shopify, agree on what "the catalog" means for your store. For a typical Magento to Shopify product migration, the scope looks like this:
Included in catalog migration | Usually handled separately |
|---|---|
Product titles, descriptions, short descriptions | Customer accounts and passwords |
SKUs, barcodes (GTIN/EAN/UPC), MPNs | Order history and invoices |
Configurable products and their variants | Gift cards and store credit |
Attributes and specifications | CMS pages and blog posts |
Categories and their hierarchy | Theme, design and custom functionality |
Prices, special prices, compare-at prices | Payment, shipping and tax configuration |
Stock quantities and availability | Third-party extensions and integrations |
Product images and alt texts | |
URL keys, meta titles and meta descriptions | |
Product and category URL redirects |
Writing this list down early matters because teams often discover halfway through that nobody owned, for example, image alt texts or tier prices. When you migrate products from Magento to Shopify, everything in the left column should have an owner, a source field and a target field.
Magento vs Shopify: How Product Data Maps
This is the part most guides skip, and it is where most problems start. Magento and Shopify describe the same product in different ways.
The core mapping
Magento 2 | Shopify | What to watch |
|---|---|---|
Simple product (visible) | Product with one default variant | Straightforward |
Configurable product + child simples | Product + variants | Child simples become variants, not separate products |
Configurable attributes (e.g. color, size) | Options (Option1–Option3) | Shopify allows a maximum of three options per product |
Child product count | Variants | Up to 2,048 variants per product by default |
Attribute sets and custom attributes | Metafields, product category attributes, tags | Decide which attributes need to be filterable |
Categories (tree) | Collections (manual or smart) + tags or product type | Shopify has no native category tree for products |
URL key ( | Handle | Handles must be unique and URL-safe |
| Price + compare-at price | Sale logic needs to be flipped, not copied |
Tier prices / customer group prices | B2B catalogs and price lists | Availability depends on your Shopify plan |
Store views (languages, currencies) | Shopify Markets + translations | One product per store, not per store view |
Grouped / bundle products | Separate products or a bundle app | No one-to-one equivalent |
Downloadable products | Digital download app | Files are migrated separately |
Three mapping decisions that cause the most rework
1. Configurable products with more than three attributes. Magento lets you build a configurable product on four or more attributes (say color, size, length and material). Shopify does not. You either merge two attributes into one option ("Size / Length"), split the product into several Shopify products, or move a non-selectable attribute into a metafield. Decide this per product type before export, not during import.
2. Categories versus collections. A Magento category tree like Men > Clothing > Jackets does not exist as a tree in Shopify. Common patterns are: one smart collection per leaf category driven by a tag (cat:men-jackets), a product type for the main grouping, and menus that recreate the hierarchy for navigation. Exporting the full category path for every product makes this step much easier.
3. Attributes that power filters. In Magento, filterable attributes drive layered navigation. In Shopify, filters (through Search & Discovery) read from options, product type, vendor, tags, and metafields. Any attribute that customers filter by — material, fit, compatibility — should become a metafield with a defined type, not a line of text inside the description.
For a deeper look at how structured product records and output formats are organized, see our guide to data structuring and output formats.
Pre-Migration Audit: A Magento to Shopify Migration Checklist
Migrating dirty data just moves the mess to a new platform. Run this checklist on the Magento catalog before you export anything:
Count what you have. Total products by type (simple, configurable, grouped, bundle, virtual, downloadable), enabled vs disabled, visible vs "Not Visible Individually".
Find duplicate and empty SKUs. Shopify does not enforce unique SKUs, but your inventory, feeds and ERP sync almost certainly need them.
Check configurable products against Shopify limits. Flag any product with more than three configurable attributes or more than 2,048 children.
Audit attributes. List every attribute in use, its fill rate and whether it is used for filtering. Drop attributes nobody uses.
Check images. Missing base images, broken file paths, placeholder images, images without alt text.
Review descriptions. Inline styles, Page Builder markup, widget shortcodes and absolute links to old Magento URLs.
Decide what not to migrate. Discontinued products with no traffic or backlinks are often better redirected than imported.
Export URLs and rankings. Pull all product and category URLs with their traffic and backlinks so you can prioritize redirects.
Freeze catalog changes for the final export window, or plan a delta import.
The audit often reveals thin product data: missing specifications, a single image, no barcode. Migration is a good moment to fix that rather than carry it over. Our article on product data enrichment for e-commerce catalogs explains where the missing data usually comes from.
Three Ways to Export Products from Magento
There are three practical ways to get product data out of Magento. Most stores end up combining two of them.
Option 1: Native Magento export
Magento 2 has a built-in export under System > Data Transfer > Export with the entity type set to Products. It produces a CSV with one row per product per store view, including columns such as sku, product_type, attribute_set_code, categories, name, description, url_key, price, special_price, base_image, additional_images, additional_attributes and configurable_variations.
It is free and complete for the default store view, but it is not Shopify-shaped:
custom attributes are packed into a single
additional_attributescell as comma-separatedcode=valuepairs;configurable products list their children in one cell (
configurable_variations), separated by pipes;image paths are relative to the Magento media folder (for example
/m/b/mb01-blue-0.jpg), not full public URLs;categories come as path strings that need to be converted into collections or tags;
tier and group prices come from a separate Advanced Pricing export.
All of this can be transformed with spreadsheets or scripts, but it takes time and testing. On Magento 1, which reached end of life in June 2020, export options are more limited, and older extensions often break on current hosting.
Option 2: Migration and import apps
Tools such as Cart2Cart and LitExtension connect to the Magento database and push data into Shopify, including orders and customers. Bulk import tools like Matrixify (often searched as matrixify shopify) work the other way: they import a well-structured file into Shopify very reliably, but they do not create that file from Magento data for you.
Migration apps are a good fit for a standard catalog with default attributes. They are weaker when the catalog has many custom attributes, heavy store-view overrides, or data that lives partly in extensions — the mapping options are generic, and fixing a failed run usually means re-running everything.
Option 3: Extracting from the live Magento storefront
The third option is to collect product data from the storefront itself — the pages customers actually see. This sounds unusual for your own store, but it solves real problems:
the admin is slow, broken or no longer accessible (common with outdated Magento 1 or heavily customized Magento 2 installs);
the storefront shows the final, rendered result: resolved variant combinations, full-size image URLs, the category path a customer sees;
you need to merge your catalog with products from supplier or brand sites during the same migration.
A Magento product scraper collects SKUs, identifiers, variants, attributes, images and prices into one normalized schema, which can then be output in Shopify's format. If you want to see how this works without writing code, read how to scrape product data without coding. The full list of supported fields is in the extraction capabilities section of the knowledge base.
Comparing the three methods
Native export | Migration / import apps | Storefront extraction | |
|---|---|---|---|
Needs admin or database access | Yes | Yes | No |
Output is Shopify-ready | No, needs transformation | Yes, for standard data | Yes, when mapped to Shopify format |
Handles custom attributes | Packed in one cell | Depends on the app | Yes, as configured fields |
Image URLs | Relative paths | Usually handled | Full public URLs |
Covers orders and customers | Separate exports | Often yes | No — products only |
Works with supplier catalogs too | No | No | Yes |
Best for | Technical teams with time | Standard catalogs | Complex, messy or inaccessible catalogs |
Building a Shopify-Ready Product File (CSV or JSON)
Whatever the source, the target is the same: a file Shopify can import without errors. There are two common formats.
Shopify product CSV
Shopify's product CSV uses one row per variant and one row per additional image, linked by the product handle (labelled URL handle in the current template). Key columns include:
URL handle — the unique identifier that ties rows together and becomes the product URL;
Title, Description, Vendor, Type, Tags, Status;
Option1 name / Option1 value (and Option2, Option3);
SKU, Barcode, Price, Compare-at price, Inventory quantity;
Product image URL, Image position, Image alt text, Variant image URL;
SEO title, SEO description;
Metafields columns for structured attributes.
A configurable Magento T-shirt with two colors and two sizes becomes four variant rows:
csv
Points to keep in mind when you run a Shopify CSV import:
Only the first row of each product carries product-level fields (title, description, vendor, tags).
Image URLs must be publicly accessible over HTTPS; Shopify downloads and re-hosts them.
Save the file as UTF-8. Special characters in descriptions are the most common cause of broken imports.
If you re-import with Overwrite products with matching handles, blank cells overwrite existing values, and changing option values creates new variant IDs. Test overwrite behaviour on a copy first.
For a full, step-by-step example of preparing variant rows from a supplier site, see our dropshipping product import guide.
Sample product JSON to import in Shopify
For large catalogs or repeatable syncs, developers usually import through the Admin GraphQL API instead of CSV. The productSet mutation creates or updates a product with its options, variants and media in one call. A simplified input looks like this:
json
Two details matter here: productSet treats the variant list as complete, so variants you leave out are deleted on update; and for large or complex products Shopify recommends running it asynchronously. Check the current API reference before building a production pipeline, as field names change between API versions.
If you do not want to build either format yourself, a Shopify-ready CSV with handles, variants, images and SEO fields already mapped is the shortest route from Magento data to a working import.
Images, SEO Fields and URLs
Products can be imported perfectly and still lose traffic if URLs and SEO fields are not carried over.
Product URLs. Magento product URLs often look like /classic-cotton-tee.html or /men/t-shirts/classic-cotton-tee.html. On Shopify they become /products/classic-cotton-tee. Reuse the Magento url_key as the Shopify handle wherever possible, so the redirect map stays simple and predictable.
Redirects. Every old product and category URL that has traffic or backlinks needs a 301 redirect. Shopify supports bulk URL redirect imports from a CSV with Redirect from and Redirect to columns. Build this file from the same data you used for the product import: old URL, new handle, done. Category URLs should point to the matching collection.
Meta titles and descriptions. Map Magento's meta_title and meta_description to Shopify's SEO title and SEO description columns. Where they are empty, Magento falls back to the product name — decide whether to keep that behaviour or write proper meta data now.
Images and alt texts. Shopify needs full public image URLs. Convert relative Magento paths to absolute URLs on your current domain, and keep the old site online until the import finishes. Carry over alt texts, and fill in missing ones with the product name and variant (for example, "Classic Cotton Tee in navy, front view").
Structured data. Shopify themes generate product schema from product fields. Clean GTINs and brands help your products qualify for rich results and Google Shopping, so this is a good moment to fill in barcodes.
Import, Validate, Re-Import
Never import the full catalog first. A safe sequence looks like this:
Test import of 20–50 products covering every product type and every tricky case: max options, many images, special characters, products on sale.
Check in the admin and on the storefront. Variant combinations, option order, images per variant, prices and compare-at prices, inventory, tags and collections.
Fix the mapping, not the products. If something is wrong, correct the transformation rule and regenerate the file, rather than editing products by hand.
Import the full catalog, ideally in batches by category.
Validate at scale. Use Shopify's product export (shopify export products) to pull the imported catalog back out and compare it with the source file: product count, variant count, SKUs, prices, image count per product.
Run a delta import just before launch to catch products, prices and stock that changed in Magento during the migration.
You can also verify the live storefront the same way you would check a competitor's store: Shopify exposes a public products.json endpoint for every store. Our guide on how to scrape a Shopify store shows how to use it and what it does not include.
Moving to Shopify Plus: What Changes for Large Catalogs
Many Magento merchants, especially those on Adobe Commerce, move to Shopify Plus rather than a standard plan. For a Magento to Shopify Plus migration, the catalog work is largely the same, but a few things change:
B2B pricing. Magento tier prices and customer group prices map to Shopify's B2B catalogs and price lists, which have historically been a Plus feature. Export them separately and import them after the base catalog.
Multiple stores and markets. Magento websites and store views often become a mix of Shopify Markets (for languages, currencies and regional pricing) and, for truly separate businesses, expansion stores. Decide this before you export, because it determines whether store-view data becomes translations or separate catalogs.
Scale and automation. With tens of thousands of SKUs, API-based imports and bulk operations become more practical than repeated CSV uploads. Shopify Plus also gives you higher API limits for faster syncs.
Whether you are on Plus or a standard plan, the product mapping decisions above stay the same — Shopify Plus migration does not remove the three-option limit or the need to map attributes to metafields.
DIY, App or Service: Who Should Move Your Catalog?
There is no single right answer. It depends on catalog size, data quality and in-house skills.
Approach | Good fit when | Watch out for |
|---|---|---|
DIY (native export + spreadsheets or scripts) | Under a few hundred products, simple variants, someone comfortable with data | Time spent on mapping and re-runs; easy to miss edge cases |
Migration app | Standard catalog, you also need orders and customers moved | Generic mapping; custom attributes and store views often need manual fixes |
Migration agency | Full replatforming with theme, apps and integrations | Products are often treated as one item on a long list |
Catalog import service | Large or messy catalogs, inaccessible admin, supplier products to merge | Covers products only; orders and customers go elsewhere |
These are not exclusive. A common setup is an agency or app for orders, customers and the theme, plus a dedicated product upload service for the catalog, because that is where data quality matters most.
ShopScraping covers the product side: we collect product data from your Magento storefront (and, if needed, supplier and manufacturer sites), normalize it, map attributes and variants, and deliver an import-ready file for Shopify. See how catalog import works, check pricing plans, or run a demo extraction on one of your own product pages.
After Launch: Keeping the Catalog Fresh
Migration day is not the end of catalog work. Once you are live on Shopify:
Keep supplier data in sync. If part of your catalog comes from suppliers, schedule regular refreshes of prices and stock rather than one-off imports.
Watch availability. Out-of-stock products that still rank should stay visible with clear messaging, not disappear. Our guide on tracking product stock and availability covers how to monitor this across stores.
Re-check your pricing. A new storefront is a good moment to compare your prices with the market again. Competitor price monitoring delivers structured competitor prices on a schedule without building scrapers.
Monitor 404s. Check Shopify's and Google Search Console's error reports during the first weeks and add any missing redirects.
Get a Shopify-Ready File of Your Magento Catalog
Moving your product catalog is the part of a Magento to Shopify migration where details matter most: variants, attributes, images and URLs. If you would rather skip the export-transform-fix loop, ShopScraping can deliver your catalog as a Shopify-ready CSV with variants structured, attributes mapped and images attached — ready for a test import.
Frequently Asked Questions
How long does a Magento to Shopify migration take?
For the product catalog alone, a small store with clean data can be moved in a few days. Catalogs with thousands of SKUs, custom attributes and multiple store views usually take several weeks, most of which is spent on mapping decisions, test imports and validation rather than the import itself. A full migration including theme, apps and integrations takes longer.
Can I migrate products from Magento to Shopify for free?
Yes. Magento's native export and Shopify's CSV import are both free. The cost is time: transforming the Magento export into Shopify's format, fixing errors and re-running imports. Apps and services save that time, but they are not required.
Will I lose SEO rankings when I migrate from Magento to Shopify?
You can keep most of your rankings if you preserve content, carry over meta titles and descriptions, and set up 301 redirects from every old product and category URL to its new Shopify equivalent. Rankings commonly fluctuate for a few weeks after launch while search engines process the redirects.
Does Shopify support Magento configurable products?
Yes, as products with variants. A Magento configurable product becomes one Shopify product, and its child simple products become variants. The main limits are three options per product and up to 2,048 variants per product by default.
Is a Magento 2 to Shopify migration different from Magento 1?
The Shopify side is the same. The difference is on the export side: Magento 2 has a structured native product export, while Magento 1 stores are often on outdated hosting and extensions, which makes admin exports less reliable. In those cases, extracting data from the storefront is often the more practical route.
Can I import products into Shopify using JSON instead of CSV?
Yes, through the Shopify Admin API. The GraphQL productSet mutation accepts a JSON input with product fields, options, variants and media. It is the better choice for very large catalogs and recurring syncs, but it requires a developer and an app with API access.




