We've replatformed brands off Magento 1, Magento 2, and Adobe Commerce Cloud onto Shopify Plus across 200+ DTC brands. This guide covers what actually changes (EAV → metafields, multi-store → Markets, customer groups → B2B catalogs), what it actually costs ($25K for the simplest migrations, $80K–$250K+ for B2B + multi-store + ERP-integrated replatforms), and the 19 traps Magento merchants fall into that WooCommerce merchants never see.
If you came here from our WooCommerce to Shopify migration guide — the math is different. Magento is a different animal. Read on.
Why Magento Merchants Are Leaving in 2026
Three forces, in order of how often we hear them:
1. The Adobe Commerce Cloud cost spiral
Magento Open Source is "free" but the real TCO — hosting, security patching, extension licenses, dev hours — sits at $80K–$400K/year for a serious store. Adobe Commerce Cloud starts at $22K/year and climbs fast with order volume. Shopify Plus at $2,500/mo ($30K/yr) with predictable scaling is now the dominant economic argument.
2. Magento 1 → Magento 2 → Adobe Commerce migration fatigue
Merchants who've already paid for one painful upgrade in the last 5 years have run out of patience. If you're going to spend $80K migrating anyway, many are choosing to migrate off the platform entirely.
3. Talent scarcity
Magento certified developers cost $120–$220/hr and there are fewer of them every year. Shopify devs are 2–3x more available and the per-change cost is meaningfully lower.
Magento → Shopify: What Changes Architecturally
This is the section every other migration guide skips. It's also the section that determines whether your migration takes 12 weeks or 28.
| Magento Concept | Shopify Equivalent | Migration Difficulty |
|---|---|---|
| EAV product attributes | Metafields (native) + custom apps | High |
| Configurable products | Variants + variant metafields | Medium |
| Bundle products | Bundles app (native) or Shopify Bundles | Medium |
| Grouped products | Custom collections + metaobjects | Medium |
| Multi-store / Store views | Shopify Markets | Medium |
| Customer groups | B2B Catalogs (Plus) or Shopify Customer Tags | Medium-High |
| Tier pricing | B2B Catalogs with quantity breaks | High (B2B-only) |
| Shopping cart price rules | Shopify Discount Functions | Medium |
| Catalog price rules | Automatic discounts + Functions | Medium |
| URL rewrites table | Shopify URL Redirects (bulk import) | Medium |
| Layered navigation | Search & Discovery app (native) | Low |
| Reward points | Smile.io / LoyaltyLion | Medium (re-import balances) |
| Custom modules (PHP) | Shopify Apps (Node/Ruby) | Very High (full rebuild) |
The rule of thumb: anything stored in Magento's EAV tables needs to be remapped into Shopify metafields or metaobjects. This is where 60% of migration time gets spent.
The Real Cost of Magento → Shopify (4 Tiers)
Tier 1 — Simple Magento Open Source ($100K–$1M/yr revenue): $25,000–$50,000
Single store. Single language. No B2B. ~500–5,000 SKUs. No exotic ERP integration.
Tier 2 — Magento 2 mid-market ($1M–$5M/yr): $50,000–$120,000
Multi-store (2–4 stores). Custom theme rebuild. Klaviyo migration. 1–2 ERP/3PL integrations. 5,000–25,000 SKUs.
Tier 3 — Adobe Commerce Cloud + B2B ($5M–$25M/yr): $120,000–$250,000
B2B with customer groups + tier pricing. Multi-store, multi-currency, multi-language. ERP + PIM integrated. 25,000+ SKUs. Custom Magento modules to rebuild as Shopify apps.
Tier 4 — Enterprise / Headless ($25M+/yr): $250,000–$600,000+
Hydrogen storefront or custom Next.js. Full PIM/ERP/3PL/CRM integration suite. Multi-region with localized inventory. Possibly multiple Shopify Plus orgs.
Pre-Migration Audit: 53-Point Adobe Commerce Checklist
Catalog (12 items)
- Export full product catalog from Magento (CSV via System → Export, or REST API for >100K SKUs)
- Document every attribute set and which products use it
- List all configurable / bundle / grouped products separately
- Export product images at original resolution
- Document custom EAV attributes with their attribute codes
- Export GTIN / MPN / brand fields for Google Shopping continuity
- Document inventory by source (multi-source inventory in M2)
- List all category trees (URL paths matter — these become Shopify collections)
- Note any catalog price rules
- Note tier pricing rules per customer group
- Document related/upsell/cross-sell relationships
- Export product reviews (native Magento reviews module)
Customers (8 items)
- Export customer list including customer group assignment
- Document tax-exempt status per customer
- Export saved addresses
- Document store credit balances
- Document loyalty/reward points balances
- Export wishlist data
- Note any companies (B2B accounts) with multiple users
- Export newsletter subscription consent records
Orders (6 items)
- Export 24+ months of order history
- Document all order statuses (Magento has more than Shopify)
- Note partial shipments / partial invoices structure
- Export quotes (B2B)
- Document RMAs (Return Merchandise Authorizations)
- Note recurring orders (if using a subscription extension)
SEO & Content (12 items)
- Crawl entire site with Screaming Frog (separately for each store view)
- Export core_url_rewrite table from M1 / url_rewrite table from M2 (this is your redirect map)
- Export all CMS pages
- Export all CMS blocks
- Document hreflang structure across store views
- Export blog posts (likely from Magefan or Mirasvit blog extension)
- Note canonical URL setup
- Export robots.txt + sitemap.xml
- Document layered navigation faceted URL parameters
- Note any URL rewrites that conflict with Shopify's URL structure
- Export image alt text
- Save all schema markup
Apps / Extensions (10 items)
- List every installed Magento extension (Composer + manually installed)
- Map each to Shopify equivalent (extension map below)
- Document ERP integration (Microsoft Dynamics, NetSuite, SAP, Acumatica, etc.)
- Document PIM integration (Akeneo, Salsify, etc.)
- Document 3PL integration (ShipStation, ShipBob, custom)
- Document tax engine (Vertex, Avalara, TaxJar)
- Note Klaviyo / dotdigital / Mailchimp setup
- Document Google Analytics / GA4 enhanced ecommerce
- Document Meta Pixel + Conversions API
- List custom modules in app/code/
Payments & Compliance (5 items)
- Document all payment methods enabled
- Note Bambora / CyberSource / WorldPay / Adyen setups (these often have token portability options Stripe doesn't)
- Export PayPal Billing Agreements
- Document tax rules per region
- Note PCI compliance attestation date
EAV-to-Metafield Mapping (The Hardest Part)
Magento's EAV (Entity-Attribute-Value) model is what makes Magento powerful and what makes migrating off it painful. Every custom product attribute lives in catalog_product_entity_* tables and must be mapped to a Shopify metafield definition.
The 4-step EAV migration process
Step 1: Export attribute set definitions
For every attribute set, list every attribute, its data type, its label, whether it's used in layered navigation, and whether it's required.
Step 2: Define Shopify metafield namespaces
Create a clean metafield architecture before migrating data. Example:
- specs.material (single line text)
- specs.weight_grams (number_integer)
- compliance.gtin (single_line_text_field)
- marketing.badge (single_line_text_field)
Step 3: Use metaobjects for relational data
Where Magento has a custom EAV attribute that references another entity (e.g., "Brand"), create a Shopify metaobject definition. This is the modern equivalent.
Step 4: Migrate data via Matrixify or custom GraphQL
For under 50K SKUs, Matrixify with metafield columns works. For 50K+ SKUs or complex relational data, custom GraphQL migration via Shopify's Admin API is faster and cleaner.
The single biggest time-eater: swatch attributes (color/material visual selectors). Plan an extra week for this if you have 20+ products with swatches.
Multi-Store → Shopify Markets Mapping
Magento's "Website → Store → Store View" hierarchy maps to Shopify like this:
| Magento | Shopify Plus |
|---|---|
| Website (separate catalog/customers) | Separate Shopify store (or Shopify Plus expansion store) |
| Store (catalog override) | Market in Shopify Markets |
| Store View (language/locale) | Localized Market with Translate & Adapt |
Rules of thumb
- If your Magento "websites" share customers and orders → consolidate to one Shopify store with Markets
- If your Magento "websites" have completely separate operations (different legal entities, different currencies handled separately, different ERPs) → use Shopify Plus expansion stores
Shopify Plus includes 9 expansion stores in the base $2,500/mo plan. Most multi-store Magento merchants do not need 9. Most need 1 primary + 0–3 expansion stores.
Customer Groups → B2B on Shopify Plus
This is where Magento merchants lose the most sleep. Magento's flexibility around customer groups, tier pricing, and shared catalog rules has historically been "the reason we can't leave Magento."
That excuse died in 2024 when Shopify B2B Catalogs matured. As of 2026, Shopify Plus supports:
- Company accounts with multiple users and roles
- Per-company catalogs with custom pricing
- Quantity break pricing per company or catalog
- Net payment terms (Net 15, Net 30, Net 60)
- Tax exemption per company
- Quote-to-order workflow via apps (or natively via Draft Orders + automation)
What Shopify B2B still does worse than Magento
- Complex per-SKU per-customer-group price tiers (workaround: catalogs + quantity breaks)
- Some advanced request-for-quote flows (workaround: B2B apps like Sparklayer or BSS)
For 80% of B2B Magento merchants, native Shopify B2B is now sufficient.
Step-by-Step Migration Process (Magento-Specific, 8 Phases)
Phase 1: Discovery & Architecture (Week 1–3)
Stakeholder interviews. Full extension audit. EAV mapping document. Multi-store decision (consolidate or expand). B2B requirements gathering.
Phase 2: Shopify Plus Setup (Week 3–4)
Provision Shopify Plus. Configure Markets. Set up B2B catalogs structure. Install required apps. Configure shipping zones, tax engines (Avalara, TaxJar, Vertex), payment providers.
Phase 3: Catalog Migration (Week 4–8)
This is the longest phase for Magento. Migrate products via Matrixify or custom GraphQL. Build out metafield + metaobject definitions. Migrate variants (configurable products → Shopify variants). Migrate bundles. Migrate grouped products as collection-based bundles or metaobjects. Migrate categories → collections. Migrate images.
Phase 4: Customer + Order Migration (Week 6–9, parallel)
Migrate customers with company assignment for B2B. Migrate addresses, store credit balances, loyalty point balances. Migrate 24+ months of order history.
Phase 5: Theme & Frontend (Week 5–10, parallel)
Build custom Shopify 2.0 theme matching brand. Build B2B-specific templates (account portal, quote request, reorder flows). Implement Checkout Extensibility customizations.
Phase 6: SEO Preservation (Week 8–10)
Build full 301 redirect map from Magento URLs to Shopify URLs. Use the Magento url_rewrite table as your source of truth. Bulk import via Shopify URL Redirects. Implement hreflang. Submit sitemap.
Phase 7: Integration + QA (Week 9–12)
Connect ERP (NetSuite, Dynamics, SAP, Acumatica). Connect PIM (Akeneo, Salsify). Connect 3PL. Set up Klaviyo flows. Configure Meta Pixel + CAPI. Run 53-point QA.
Phase 8: Launch & Stabilize (Week 12+)
DNS cutover (Tuesday morning, never Friday). Monitor Search Console hourly for 48h. Daily monitoring for 30 days. Day-14 CRO audit.
SEO Preservation for Magento URLs
Magento URLs are weirder than WooCommerce URLs. Common patterns to redirect:
| Magento URL | Shopify URL |
|---|---|
| /catalog/product/view/id/123/s/blue-shirt/ | /products/blue-shirt |
| /blue-shirt.html | /products/blue-shirt |
| /catalog/category/view/id/45/ | /collections/shirts |
| /shirts.html | /collections/shirts |
| /catalogsearch/result/?q=shirt | /search?q=shirt |
| /customer/account/login/ | /account/login |
| /checkout/cart/ | /cart |
| /contact/ | /pages/contact |
Critical: Magento layered navigation generates URLs like /shirts.html?color=blue&size=m. Shopify handles these as /collections/shirts?filter.p.m.color=blue. The query parameters are different. Most of these URLs do not need 301 redirects because they're filter combinations, not canonical pages — but if any are indexed by Google, they need redirects to the closest equivalent.
The 6 commandments from the WooCommerce migration guide all apply identically here.
Apps & Extension Replacement Map
| Magento Extension | Shopify Replacement | Cost |
|---|---|---|
| Magento B2B (M2 Commerce) | Shopify B2B (native on Plus) | Included |
| Amasty extensions (various) | Various Shopify apps | Varies |
| Mirasvit Search | Searchanise or native Search & Discovery | Free–$199/mo |
| Magefan Blog | Native Shopify Blog | Free |
| Mageworx SEO Suite | SearchPie / Smart SEO | $30–$50/mo |
| Adobe Commerce PWA Studio | Hydrogen / custom Next.js | Custom build |
| Klaviyo for Magento | Klaviyo for Shopify (much better integration) | $0–$1,500+/mo |
| dotdigital | Klaviyo or dotdigital for Shopify | $300–$1,500/mo |
| Yotpo (Magento) | Yotpo (Shopify) | $15–$799/mo |
| LoyaltyLion (Magento) | LoyaltyLion (Shopify) | $399+/mo |
| Mirakl Marketplace | Mirakl for Shopify | Enterprise |
| Akeneo PIM connector | Akeneo Shopify Connector | $200+/mo |
| NetSuite SuiteCloud | Celigo or custom integration | $400–$2,000/mo |
| Vertex | Vertex for Shopify or Avalara | Variable |
Payment Gateway Migration (Magento Specifics)
Magento merchants often use payment gateways less common in Shopify-land. Compatibility map:
- Stripe → Shopify Payments (powered by Stripe) — token portability available
- Braintree → Shopify supports Braintree directly
- Adyen → Shopify Plus supports Adyen natively (Plus only)
- CyberSource → Available via Shopify Payment Gateway integration
- Bambora / Worldline → Available via direct integration
- PayPal Express / Billing Agreements → Cannot transfer recurring agreements; email re-authorization required (60–80% retention)
- Authorize.net → Available, but Shopify Payments is usually better
- Klarna / Afterpay / Affirm → Available, must re-onboard for Shopify
If you're using a regional gateway not on this list, check Shopify's Payment Gateway directory before committing to a migration timeline.
The 19 Magento-Specific Migration Traps
- Treating EAV migration as a CSV problem. It isn't — it's a metafield architecture problem. Skip the architecture step and you'll re-do the migration.
- Not exporting the url_rewrite table. This is your gold-standard 301 redirect map. Don't try to recreate it from a crawl.
- Forgetting customer group → B2B catalog mapping. Wholesale customers logging in and seeing retail prices is a 6-figure mistake.
- Migrating tier pricing as flat discounts. Use Shopify B2B quantity breaks, not generic discount codes.
- Skipping store credit migration. Magento store credits are real money owed to customers. They must transfer.
- Reward points migrated as flat balances instead of via the new loyalty app. Use LoyaltyLion or Smile.io's import tool.
- Botching configurable product → variant mapping. Variants must match Magento's parent-child relationships exactly, or PDPs break.
- Bundle products as separate SKUs. Use Shopify Bundles or a bundles app — don't flatten them.
- Forgetting .html URL suffixes. Magento Open Source defaults to .html URL suffixes. These need 301 redirects.
- Not migrating CMS blocks. Magento CMS blocks (used in static pages, emails, layered navigation) need to be migrated as Shopify metaobjects or theme sections.
- Skipping email template migration. Magento transactional emails have heavy custom HTML. Shopify uses Liquid for emails. This is a 1–2 week project on its own for branded merchants.
- Multi-store consolidated when it shouldn't be. Some "stores" really do need to be separate Shopify expansion stores.
- Multi-store kept separate when it shouldn't be. Most don't — Markets handles 80% of multi-store needs.
- Forgetting hreflang for store views. Multi-language stores tank in international SERPs without proper hreflang.
- Not handling layered navigation parameter URLs. Some are indexed and need redirects, some shouldn't be.
- Skipping the catalog price rules → Shopify Functions rebuild. Catalog price rules are not the same as cart price rules; they apply at PDP level.
- Not load-testing before launch. Magento merchants often have huge catalogs. Test PLP and search performance with full catalog loaded.
- Forgetting Akeneo / Salsify reconnection. PIM-driven catalogs need the connector running before catalog migration completes, or product data goes stale immediately.
- Not running parallel ERP sync during cutover week. Order data must flow to your ERP from day 1. Test it before cutover, not after.
Realistic Timeline by Complexity
| Complexity | Realistic | Aggressive | Risky |
|---|---|---|---|
| Simple M1/M2 (single store, no B2B) | 10–14 weeks | 8 weeks | <6 weeks |
| Multi-store M2 (2–4 stores) | 14–20 weeks | 12 weeks | <10 weeks |
| Adobe Commerce + B2B + ERP | 20–28 weeks | 16 weeks | <14 weeks |
| Enterprise / Headless | 28–40 weeks | 24 weeks | <20 weeks |
The timeline killers we see most
- EAV mapping discovered late (in week 6 instead of week 2)
- Custom Magento modules with no documentation
- ERP middleware (Celigo, Boomi) that needs partial rewrites
- B2B requirements scope creep (week 14 "we forgot we have 12 net-payment-term tiers")
- Akeneo / Salsify reconnection delays