Magento to Shopify Migration: Complete 2026 Guide
Migrate a Magento (Adobe Commerce) store to Shopify - products, configurable variants, customers, orders, URLs, and SEO. Covers M1 and M2, every export route, the full attribute mapping, and the redirect rules Google actually rewards.
Last updated
Magento vs. Shopify at a glance
Before you migrate, it's worth being honest about why - the decision shapes how much you actually need to bring with you. Self-hosted Magento gives you total control of the codebase and schema; Shopify gives you a managed platform with a much smaller surface area. The trade-offs:
| Magento 2 / Adobe Commerce | Shopify | |
|---|---|---|
| Hosting | Self-hosted (or Adobe Commerce Cloud) | Fully managed |
| Monthly cost (typical) | $200–$2,000+ (hosting + dev) | $29–$399 (Basic to Advanced) |
| Product attributes | Unlimited custom attributes via EAV | Native fields + metafields |
| Variant model | Configurable products (parent + children) | Single product with up to 100 variants on standard plans (2,000 on Plus) |
| Tax engine | Manual or Vertex / Avalara | Shopify Tax (free under $100K US sales) |
| B2B / wholesale | Native (Adobe Commerce) | Native on Plus; apps on lower plans |
| Theme & layout | PHTML templates + Page Builder | Liquid themes + Online Store 2.0 sections |
| Migration friction | — (source) | Catalog: easy. Theme & extensions: full rebuild. |
The catalog itself ports across in hours. What takes weeks is replacing the extensions you rely on - and rebuilding the theme, because there is no "import my Magento theme" button and there never will be.
Before you start: audit your Magento store
Magento stores look simple from the front-end and tangled in the back-end. Spend half a day on this audit and you'll save a week of post-migration cleanup.
- Confirm which Magento version you're on.
Admin → System → Web Setup Wizard, or checkapp/etc/config.phpon the server. Magento 1.x reached end-of-life in June 2020 - the export paths are different, and you should be migrating off it regardless of where you're heading. - Inventory the catalog. SKU count, attribute set count, store views (multi-language / multi-store), websites, customer groups, tax classes. Screenshot the totals so you can verify post-import.
- List every active extension.
Admin → System → Web Setup Wizard → Component Managershows installed modules. Flag the ones that touch the catalog (Amasty Improved Layered Navigation, Mageplaza SEO, Mirasvit Search), the checkout (One Step Checkout extensions, Bolt, Klarna), and customer data (B2B Suite, Reward Points, Store Credit). For each, find the Shopify equivalent before you migrate - that's your real scope. - Page Builder or third-party builder? Magento 2.4+ Page Builder content stores as
pagebuilder_*XML tags insidecms_blockandcms_pagetables. Nothing maps to Shopify. Plan to rebuild CMS pages and promotional blocks in Shopify's theme editor. - SEO baseline. Export the top 200 URLs from Google Search Console (Performance → Pages, sort by clicks descending, 16-month range). This is the list you MUST redirect. Also export from Ahrefs/Semrush to catch URLs that rank but get zero clicks today - they're still ranking and still worth protecting.
- Live snapshot. Crawl your Magento site with Screaming Frog (free up to 500 URLs). The export becomes your ground truth for redirects and the catalog count.
Step 1 - Export everything from Magento
Magento 2 has a native export tool that handles most entities. It lives under Admin → System → Data Transfer → Export (or System → Import/Export → Export on older builds). Run one export per entity:
The six exports you need
- Products - Entity Type: Products. Choose CSV as the export file format. Magento will dump every product (simple, configurable, grouped, bundle, virtual, downloadable) into a single CSV with ~80 columns. This is your master file.
- Customer Main File - Entity Type: Customers Main File. This pulls account names, emails, group, and billing/shipping defaults.
- Customer Addresses - Entity Type: Customer Addresses. Separate file: every saved address tied to a customer ID.
- Stock Sources (Magento 2.3+ MSI) - Entity Type: Stock Sources. If you run multi-source inventory, export the source-stock matrix.
- Advanced Pricing - tier prices, special prices, and group prices come out here. Don't skip this if you do wholesale/B2B - Shopify handles tier prices via custom apps (e.g. Wholesale Club, Bold) and you'll re-import.
- Reviews and orders. Native export doesn't cover these cleanly. For reviews, query the
review+rating_option_votetables directly or use an extension (Amasty Reviews has a CSV export). For orders, use a third-party export module or query thesales_order_*tables.
Magento 1.x exports
M1 export is under Admin → System → Import/Export → Export. The product CSV has fewer columns (~50) and Magmi or the MAGMI Plugin: DataPump CSV Exporter is the reliable path for catalogs over 5,000 SKUs - native M1 export times out on large catalogs. For orders and customers, the AvS_FastSimpleImport extension exposes a CLI export that handles big stores.
The Magento → Shopify field mapping
This is where most migration guides hand-wave. Here's the full attribute mapping for the columns Shopify actually reads. The left column is what Magento exports; the right column is what you need it to become in the Shopify CSV.
| Magento attribute | Shopify CSV column | Notes |
|---|---|---|
sku | Variant SKU | Direct. Must be unique per variant. |
name | Title | Direct. Strip HTML if present. |
url_key | Handle | Drop the .html if you used the "Add suffix to URL" setting. |
description | Body (HTML) | Magento WYSIWYG output. Strip {{media url="…"}} placeholders. |
short_description | Metafield (recommended) | No native Shopify field. Use a metafield like custom.short_description. |
price | Variant Price | Magento exports tax-inclusive or exclusive depending on store config - verify before import. |
special_price | Variant Compare At Price | Reversed: Magento special = sale; Shopify compare at = the original (struck-through) price. You usually want price in Compare At and special_price in Variant Price. |
weight | Variant Grams | Convert: kg × 1000 or lb × 453.592. |
qty | Variant Inventory Qty | Single-source. For MSI, you'll set this per location after import. |
manage_stock | Variant Inventory Tracker | "1" → shopify; "0" → blank. |
tax_class_id | Variant Taxable | Map taxable class → TRUE; non-taxable class → FALSE. |
categories | Smart Collections (created post-import) | Magento categories don't map 1:1. Use the Shopify Product Type or Tags column to drive collection rules. |
image / small_image / thumbnail | Image Src | Use full URLs to Magento media (e.g. https://yourdomain.com/pub/media/catalog/product/...). Shopify fetches and re-hosts. |
meta_title / meta_description | SEO Title / SEO Description | Direct. Crucial for retaining rankings. |
status | Status | Enabled → active; Disabled → draft. |
visibility | Published | "Catalog, Search" → TRUE; "Not Visible Individually" → FALSE (used by configurable children). |
Configurable parent configurable_variation_labels | Option1 Name / Option2 Name / Option3 Name | Limit: Shopify supports 3 option dimensions. Magento configurables with 4+ axes need to be collapsed. |
| Child product attribute value | Option1 Value / Option2 Value / Option3 Value | Each child row in the Shopify CSV inherits the Handle of the parent and fills the option values. |
| Custom attributes (color swatch, material, etc.) | Metafield | Create a metafield definition first (Settings → Custom data → Products), then import values via a second CSV pass. |
For the canonical column reference, our Shopify product CSV template documents every Shopify column with example rows.
Configurable, grouped, bundled, and virtual products
Magento has six product types. Only two of them - simple and configurable - have clean Shopify equivalents. Here's how to handle the rest:
Configurable products → Shopify products with variants
A Magento configurable product is a virtual parent linked to N simple child products, one per attribute combination. Shopify collapses this: one product, N variant rows. The export quirk to watch: Magento exports both the parent and the children in the product CSV. Shopify only wants the parent + variant rows. You need to:
- Identify children by the
configurable_variationscolumn on the parent. - Drop the standalone child rows from the export (they'd otherwise become separate Shopify products).
- Pull each child's
price,qty,sku, and the configurable attribute values (e.g. color=red, size=L) into new rows under the parent in the Shopify CSV.
Grouped products → manual rebuild or app
A Magento grouped product is a parent that displays N simple children as a list with individual buy buttons. Shopify has no native equivalent. Two options: rebuild as a collection (one page per child), or use the "product bundles" via Shopify Bundles or Bold Bundles to recreate the list-of-products look.
Bundle products → Shopify Bundles or custom liquid
Magento bundles let the customer pick options across multiple products at one price. Shopify Bundles (free, made by Shopify) is the closest match. The bundle definitions don't migrate - you rebuild them manually in Shopify Bundles. Budget 5–10 minutes per bundle.
Virtual products → Shopify product without shipping
For services or non-shippable items: set Variant Requires Shipping to FALSE in the Shopify CSV and they behave the same way at checkout.
Downloadable products → Shopify Digital Downloads app
Shopify's free Digital Downloads app replaces Magento's downloadable type. The file links don't migrate - you re-upload the file to each product after import.
Step 2 - Pick a migration tool
There are four serious paths. We've used all of them and they're suited to different store sizes and risk tolerances.
| Tool | Cost | Strengths | When to choose it |
|---|---|---|---|
| Shopify Store importer (built in) | Free | Already in your Shopify admin (Apps → Store importer). First-party support, handles the basics for simple catalogs. | Under 1,000 SKUs, mostly simple products, you're happy doing redirects yourself. |
| Cart2Cart | $59–$1,500+ depending on entities and counts | Configurable products, orders, customers, reviews in one automated run. Demo migration is free. | Medium catalog (1K–50K SKUs), you need orders + reviews moved, time is more valuable than money. |
| Matrixify (formerly Excelify) | $20–$200/month for the duration | CSV/Excel-driven; you keep full control of the mapping; great for staged imports. | You're technical, want to tweak the data between export and import, and prefer not to give a third party admin access. |
| LitExtension (managed service) | $500–$5,000+ depending on scope | Hands-off. They do the export, mapping, import, and verification. | Enterprise catalogs (50K+ SKUs) or zero in-house technical capacity. |
| Product Upload (URL-based) | From $9.99/month | For products that didn't migrate cleanly: paste the live Magento URL and we re-extract clean data into Shopify - images, variants, descriptions. | Recovery after the bulk import, or smaller catalogs you'd rather move one product at a time without CSV editing. |
Step 3 - Run the import
The mechanics differ by tool, but the sequence is the same: import to a development store (free Shopify trial) first, verify, then point at the production store.
Using Shopify's built-in Store importer
- In your Shopify admin, go to Apps → Store importer (or open
/admin/apps/store-importerdirectly). It's built into every Shopify store - free, made by Shopify, no install step. - Choose Magento as the source platform.
- Upload your Magento products CSV, then customers, then orders if you have them as a CSV. The importer accepts files up to 500MB.
- Click Continue import. Shopify processes the file - expect ~10 minutes for 1,000 SKUs, an hour for 10,000.
Using Cart2Cart
- Install Store Migration App by Cart2Cart on your Shopify store.
- Provide your Magento admin URL and Connection Bridge file (Cart2Cart provides a PHP file to drop on your Magento server).
- Pick entities to migrate (products, customers, orders, reviews, CMS pages, manufacturers).
- Run the free demo migration to spot-check 10 products before paying for the full run.
Using Matrixify
- Convert your Magento product CSV into a Matrixify-format Excel file - their template documents every Shopify field.
- Upload to Matrixify and run an import. The dry-run mode shows you exactly what will be created/updated without writing.
Verify after import
- Product count matches the Magento count (minus disabled products you didn't migrate).
- Variant count. A 3-color × 4-size configurable should show 12 variants in Shopify.
- Image count. Spot-check 20 products; missing images are usually a media-URL mismatch.
- Categories → collections. Create smart collections that match your Magento category tree before going live.
- Inventory totals. Sum the variant qty - it should equal your Magento total.
Step 4 - Customers, orders, and gift cards
Customers
Customer accounts migrate cleanly via Cart2Cart or the Store Importer. Two important caveats:
- Passwords don't come with them. Magento password hashes use a different algorithm than Shopify's. On first login, customers will be prompted to reset. Send a transactional email a week before launch explaining this so it's not a support ticket avalanche.
- Customer groups. Magento customer groups (Wholesale, Retailer, VIP) become Shopify tags. Tag-driven pricing requires an app (Wholesale Club, Bold B2B) or Shopify Plus B2B.
Orders
Order history is usually display-only on Shopify - the imported orders show up in customer order history but can't be re-fulfilled or refunded through Shopify. Treat them as historical records. If you need actively-fulfillable orders to migrate, that's a Cart2Cart or LitExtension paid migration.
Gift cards
Gift card balances cannot migrate as live Shopify gift cards via any CSV. The path: export outstanding gift card codes and balances from Magento, then issue new Shopify gift cards via the Admin API (or manually for small volumes), and email holders the new codes. Plan for the email customer service load.
Reviews
Native Magento reviews (in review + rating_option_vote tables) export via Cart2Cart or can be CSV-imported into Judge.me, Stamped, or Loox - each has a Magento import tool documented in their help center. Judge.me's is free; Stamped requires a paid plan.
Step 5 - The SEO redirect map
This is the single biggest source of post-migration revenue loss. Magento URLs and Shopify URLs follow different conventions, so every indexed URL needs a 301 redirect to its new location.
Magento URL patterns → Shopify URL patterns
| Magento | Shopify |
|---|---|
/catalog/product/view/id/123 (raw URL) | /products/{handle} |
/{url-key}.html (rewrite-enabled) | /products/{url-key} |
/{category}/{product-url-key}.html (nested URLs) | /products/{product-url-key} |
/{category-url-key}.html | /collections/{category-handle} |
/customer/account/login | /account/login |
/checkout/cart | /cart |
/{cms-page} | /pages/{cms-page} |
Generate the redirect CSV
- Crawl your live Magento site with Screaming Frog and export every URL with a 200 response.
- Apply the patterns above to generate the new URL for each one. For most stores a 50-line spreadsheet formula handles it.
- Reconcile against your Search Console export to confirm every ranking URL is covered.
Upload to Shopify
Go to Online Store → Navigation → URL Redirects → Import and upload the CSV. Shopify processes thousands of redirects in the background. Verify a sample of 10 redirects with curl -I after import - you want a 301 status with the correct Location header.
Our 301 redirect CSV template gives you the exact Shopify-compatible columns and the formulas to populate them from a Magento URL export.
Step 6 - Theme rebuild (you can't bring it with you)
Magento themes are PHTML, XML layout, and LESS/Sass. Shopify themes are Liquid. There is no migration path - you pick a Shopify theme that's close to what you have and rebuild the customizations.
For Magento merchants we recommend starting with one of these themes:
- Dawn (free, Shopify-built) - if your Magento theme was utility-first and you want minimal lift.
- Impulse ($380, Pixel Union) - rich product page templates, comparable feature surface to a custom-built Magento Luma theme.
- Prestige ($380, Maestrooo) - for premium / jewellery / fashion brands with heavy storytelling pages.
What does not transfer:
- Custom widgets and CMS blocks (rebuild in theme sections).
- Page Builder pages (rebuild in Online Store 2.0 sections).
- Layered navigation customizations (Shopify uses theme-level filters or the Search & Discovery app).
- Custom checkout flow (Shopify checkout is locked; use Checkout Extensions on Plus).
Step 7 - Shipping, tax, and payments
Shipping
Magento shipping methods (table rates, free shipping, flat rates, carrier integrations) translate roughly 1:1 to Shopify shipping profiles. Rebuild in Settings → Shipping and delivery. For carrier-calculated rates (UPS/USPS/DHL negotiated), Shopify Shipping comes in on Basic and above; for advanced custom rules, add the Advanced Shipping Rules app or Shippo.
Tax
Replace Avalara/Vertex with Shopify Tax (free for US merchants up to $100K US sales/year, then 0.35% per US order capped at $0.99). Configure regions under Settings → Taxes and duties. If you use a regional tax engine (e.g. Bra TC for Brazil, GST in Australia with custom logic), check the Shopify App Store for the equivalent before launch.
Payments
Magento's Stripe / Braintree / Authorize.net configurations become Shopify Payments (lowest fees) + PayPal at a minimum. You'll lose Magento-specific integrations like Bolt or PayPal Pay Later customizations - rebuild via Shopify-native equivalents (Shop Pay Installments, Klarna).
Step 8 - Switching the domain and verifying
Don't flip the domain until your Shopify store is fully tested and the redirect CSV is uploaded.
- In Shopify admin, go to Settings → Domains and click Connect existing domain.
- At your DNS provider, point the A record at
23.227.38.65and thewwwCNAME atshops.myshopify.com. - Back in Shopify, click Verify connection. Propagation usually takes 1–24 hours.
- Set the Shopify domain as Primary.
- In Google Search Console, add the property if not already verified, submit the new sitemap (
/sitemap.xmlauto-generated by Shopify), and file a Change of Address from the old Magento property to the new one (only works if both are verified at the same domain root - skip if you're migrating to a new domain). - Leave Magento running on a subdomain like
old.yourdomain.comwithnoindexfor at least 30 days as a fallback while you verify nothing is broken.
How much does it cost? How long does it take?
The number you usually see online is "$500–$10,000" which is so wide it's useless. Realistic ranges based on actual migrations:
| Store size | Tool spend | Theme + design | Total project time |
|---|---|---|---|
| Small (under 500 SKUs) | $0 (Store Importer) - $100 (Cart2Cart) | $0–$380 (Dawn or paid theme) | 1–2 weeks |
| Medium (500–10K SKUs) | $300–$1,500 (Cart2Cart with orders + reviews) | $380–$3,000 (theme + light dev) | 3–6 weeks |
| Large (10K–100K SKUs) | $1,500–$5,000 (Cart2Cart or LitExtension) | $5,000–$25,000 (theme + custom dev) | 2–4 months |
| Enterprise (100K+ SKUs / multi-store) | $5,000–$25,000 (LitExtension managed) | $25,000–$150,000+ (Plus partner) | 4–9 months |
The dominant cost above 10K SKUs is rebuilding the theme and replicating extension behaviour, not the catalog migration itself. Catalog migration is usually under 10% of the total spend.
What breaks: the 10 most common pitfalls
- Configurable products import as separate simple products. The CSV had child rows but no parent linkage. Fix: re-run the parent rows only with
Option1/2/3 Namefilled and the children as additional rows under the same Handle. - Special-price column inverted. You ended up with sale price in Variant Price and regular price in Compare At - Shopify shows the original as struck-through and you advertise the discount in reverse. Re-run with the columns swapped.
- Product images missing. The export referenced
/pub/media/catalog/product/...as a relative path; Shopify can't fetch from relative paths. Prepend your Magento domain. - Inventory tracker blank. Magento's
manage_stock= 0 became blank, which Shopify interprets as "Don't track quantity." If you do track, setVariant Inventory Trackertoshopify. - Customer emails bounced on welcome. Magento allowed accounts without confirmed emails; Shopify sends a welcome / password reset to all imported customers. Disable the welcome email if you don't want a flood.
- Variant count exceeds Shopify limit. Standard plans cap at 100 variants per product. Configurables with 4+ axes can blow past that - collapse to 3 axes or split into multiple products.
- Tax calculations off after launch. Magento tax-inclusive vs. exclusive doesn't survive the import cleanly. Verify a sample order in Shopify before opening checkout publicly.
- Category URLs lost (the biggest SEO hit). People forget to redirect
/category.html→/collections/category. Categories often rank higher than products; losing them is a 30%+ traffic dip until fixed. - Layered navigation gone. Magento Improved Layered Navigation creates filterable category pages. Shopify doesn't have native filterable URLs at the same depth - you rebuild via theme filters + the Search & Discovery app.
- Page Builder content empty. CMS pages and promotional blocks built in Magento 2.4+ Page Builder export as XML tags Shopify ignores. Rebuild manually in the theme editor.
Next steps
- Once you're live on Shopify, ongoing product additions from suppliers go faster with Product Upload for Shopify - paste any supplier URL and publish.
- Coming from WooCommerce instead? Our WooCommerce to Shopify guide covers the equivalent path for WordPress stores.
- Need the Shopify CSV column reference? See our Shopify product CSV template - every column, every accepted value.
- Considering Wix instead of Shopify? Read our Shopify-to-Wix comparison to understand the trade-offs first.
Frequently asked questions
How do I migrate from Magento to Shopify?
How much does it cost to migrate from Magento to Shopify?
How long does a Magento to Shopify migration take?
Does Shopify integrate with Magento?
Can I migrate Magento customer accounts to Shopify?
Will my SEO rankings survive a Magento to Shopify migration?
What's the best Magento to Shopify migration tool?
Can I migrate configurable products from Magento to Shopify?
Do I need to keep my Magento store running after migration?
Will my Magento extensions / modules work on Shopify?
Keep reading
WooCommerce → Shopify
WooCommerce to Shopify: Full Migration Guide (2026)
Migrate a WooCommerce store to Shopify - products, variations, customers, orders, URLs, and SEO redirects. Uses the official Shopify Store Importer plus the manual steps it won't cover.
Shopify → Wix
Migrate from Shopify to Wix: A Practical 2026 Guide
What actually carries across when you move a store from Shopify to Wix Stores — products, orders, customers, content, SEO — and what doesn't. Honest about where Wix wins, where Shopify wins, and how Product Upload moves the catalogue across without a CSV migration project.
Written by Harrison Bay
Founder, Product Upload