A Magento to Shopify migration moves your catalog, customers, order history, content and URLs from Magento Open Source or Adobe Commerce onto Shopify, and replaces every extension and custom module with a Shopify app, a setting or a small custom build. The data is the easy part. The work that decides the outcome is mapping Magento's product types and customer groups onto Shopify's simpler model, deciding what not to bring, and redirecting every old URL before the domain moves. Below are ten steps in the order we run them, a mapping table, a redirect plan and a cutover checklist. Shopify and Adobe facts were checked on their own documentation on 24 October 2026.
Step 1: Decide whether to leave Magento at all
Some stores should stay. Magento models complex catalogs, many inventory sources and negotiated B2B pricing well; a hosted platform imitates some of that with apps. Our Adobe Commerce and Magento page sets out when staying is the better call. The pressure to decide usually comes from the support calendar. On Adobe's lifecycle policy, regular support for 2.4.6 ended on 11 August 2026 and for 2.4.5 on 12 August 2025; 2.4.7 is supported to 31 May 2027, 2.4.8 to 31 May 2028 and 2.4.9 to 31 May 2029. If you are on 2.4.6 or older, the real choice is between an upgrade project and a migration project, and both cost money.
Leaving makes sense when the catalog and checkout are standard, upgrades keep getting postponed, and most of your engineering budget goes into keeping the platform running rather than selling.
Step 2: Inventory the Magento store
Build one spreadsheet before anyone touches data. One tab each for:
- Catalog. Product counts by type (simple, configurable, bundle, grouped, virtual, downloadable), attribute sets and the attributes on each, categories, and the largest configurable product by number of children.
- Customers. Account counts, customer groups, and whether groups drive prices, tax classes or catalog visibility.
- Orders. How many years of history the business actually uses, and for what: reorders, customer service, reporting or tax.
- Extensions and custom modules. Every one, what it does on the storefront or in the admin, and who still depends on it.
- Integrations. ERP, PIM, WMS, marketing, payments and tax, with the direction of each data flow.
- URLs. Every indexed URL from the sitemap, a full crawl and 12 months of Search Console data, with clicks and referring domains per URL.
- Store views and websites. Each language, currency and country, and which domain serves it.
Step 3: Check what moves and what does not
Shopify's migration guide lists what can be moved: products, customers, historical orders, gift cards, certificates and store credits, blogs and pages. What it cannot carry is anything that lives in Magento's code.
| Moves with data tools | Moves only with mapping work | Does not move |
|---|---|---|
| Products, variants and images | Configurable products over Shopify's option and variant limits | Customer passwords |
| Customers and addresses | Bundle and grouped products | Extensions and custom modules |
| Historical orders | Customer groups and tier prices | The Magento theme and layout XML |
| Gift cards and store credit balances | Store views and multi-website set-ups | Checkout customizations |
| CMS pages and blog posts | CMS blocks and widgets | Admin users and roles (recreate as staff) |
| URL rewrites, as redirects | Product reviews (through a review app) | Cart price rules as code (rebuild as discounts) |
Passwords. Shopify's current customer accounts sign customers in with a one-time six-digit code sent by email, and say a password is not required. Migrated customers therefore sign in with their email and a code, with no password to carry over. If your theme still uses legacy customer accounts, check Shopify's upgrade guide before launch and plan the email that tells customers how to sign in.
Step 4: Map Magento's data model to Shopify
This table is the core of the plan. Agree every row with the people who run the store before importing anything.
| Magento | Shopify | Watch for |
|---|---|---|
| Simple product | Product with one variant | SKU and barcode carried as variant fields |
| Configurable product with child products | One product with variants | Shopify allows up to 2,048 variants and three options per product. A fourth attribute becomes a metafield or a split product |
| Bundle or grouped product | A bundles app, or a custom build on the Cart Transform Function | Price and stock rules for each component |
| Attribute sets and custom attributes | Metafields and metaobjects | Decide which attributes drive filters and which are display only |
| Categories | Collections, manual or automated by rule | Deep category trees become collections plus menus |
| Customer groups | Customer tags and segments, or B2B companies | Group-specific prices need B2B catalogs or an app |
| Tier prices | B2B quantity price breaks, or a discount app | Retail tier pricing differs from B2B volume pricing |
| Store views and websites | Shopify Markets, or separate stores on Plus | Translations, currencies and domains per market |
| CMS pages and blocks | Pages, and sections in the theme | Widgets are rebuilt as theme sections |
| Orders and invoices | Historical orders | Import after products and customers |
| URL rewrites | URL redirects | Shopify paths are fixed (step 7) |
Step 5: Export from Magento
Magento's admin export, under System > Data Transfer > Export, writes CSV files for six entity types: advanced pricing, products, customer finances, customers main file, customer addresses and stock sources. Orders are not among them, so order history comes out through the REST or GraphQL API, a direct database query, or a migration tool that reads the database. Export from a recent copy of production, not the live store, and repeat the export for the final delta at cutover.
Clean while you export: disabled products nobody will sell again, customers with no orders in years, test orders, duplicate attributes and images over the size you need. Every row you drop is a row you do not have to map, import and check.
Step 6: Import into Shopify in the right order
Shopify lists five ways to move data, from copy and paste through CSV import, a migration app, a Shopify Partner, to a custom build on the Shopify API. For a Magento store with thousands of SKUs and years of orders, it is usually a migration app or a scripted import on the GraphQL Admin API. Two rules from Shopify's guide matter most:
- Import products first, then customers, then historical orders, so each order links to its customer and its products.
- Turn off staff new-order notifications before importing orders, because imported orders trigger them. Turn them back on afterwards.
Run a trial import of a hundred products, a hundred customers and their orders into a development store. Check every field on the product page, the customer record and the order, then import the rest. Reconcile counts and revenue totals per year against Magento before you sign off.
Step 7: Build and test the redirect plan
Magento URLs rarely survive the move. A product at /mens/oxford-shirt-blue.html becomes /products/oxford-shirt-blue, and a category at /mens/shirts.html becomes /collections/shirts. Every old URL with traffic, backlinks or an index entry needs a 301 to its closest new page. Shopify's redirect rules shape the plan:
- Redirects are imported as a CSV under Content > Menus > URL redirects. Download Shopify's sample file and match its columns.
- A store can hold up to 100,000 redirects; Shopify Plus stores up to 20,000,000. Large Magento catalogs with layered-navigation URLs can exceed the lower figure, so redirect only URLs that carry traffic or links.
- A redirect only fires when the old URL is broken. If the path still loads a page on Shopify, the redirect does nothing.
- Fixed Shopify paths such as /products and /collections cannot be redirected as paths, although an individual old product URL under them can.
| Old Magento URL | New Shopify URL | Clicks, last 12 months | Referring domains | Tested on staging |
|---|---|---|---|---|
| /mens/oxford-shirt-blue.html | /products/oxford-shirt-blue | 2,140 | 11 | [Date] |
| /mens/shirts.html | /collections/shirts | 860 | 4 | [Date] |
| /catalog/product/view/id/412/ | /products/linen-trousers | 35 | 2 | [Date] |
| /about-us | /pages/about-us | 120 | 3 | [Date] |
| /blog/care-guide.html | /blogs/news/care-guide | 410 | 9 | [Date] |
The rows are examples; yours come from the URL tab in step 2. Test before launch by running every old URL through a crawler in list mode and confirming one 301 to a live page, with no chains.
Step 8: Replace extensions with apps or custom builds
| Magento extension or module | Shopify replacement |
|---|---|
| Layered navigation and search | Shopify's storefront filters, or a search app for large catalogs |
| Reviews | A review app with an import from Magento's review export |
| Loyalty, gift cards, subscriptions | Native gift cards plus loyalty and subscription apps |
| Custom pricing and promotions | Shopify discounts, or a Discount Function in an app |
| Shipping rate and delivery rules | Shipping settings, a carrier app, or a Delivery Customization Function |
| Checkout fields and steps | Checkout UI extensions |
| ERP, PIM and WMS connectors | A maintained connector app, or a custom integration on the Admin API |
| B2B quoting and company accounts | Shopify B2B, plus an app or custom app for quote workflows |
Two platform rules matter here. Checkout UI extensions on the information, shipping and payment steps are available only on Shopify Plus, and custom apps that contain Shopify Functions run only on Plus stores. Public App Store apps that ship Functions work on any plan. So a store that needs private checkout or pricing logic is, in practice, a Plus store.
Step 9: Choose Shopify or Shopify Plus
Our Shopify vs Shopify Plus comparison covers the prices and the revenue where Plus pays for itself, so here are only the differences a Magento migration runs into. For B2B, Shopify's features-by-plan page puts companies, locations, quantity rules, price breaks, net terms and vaulted cards on Basic, Grow, Advanced and Plus, but limits the non-Plus plans to three active B2B catalogs and keeps direct company catalogs, deposits and partial payments for Plus.
| Need carried over from Magento | Shopify plans | Shopify Plus |
|---|---|---|
| More than 100,000 redirects | No | Up to 20,000,000 |
| Custom fields or logic on checkout steps | No | Checkout UI extensions |
| Private pricing, delivery or payment logic | Public apps only | Custom apps with Functions |
| B2B with many price lists | Up to 3 active B2B catalogs | Unlimited catalogs, direct company catalogs |
| Deposits and partial payments for B2B | No | Yes |
Step 10: Cut over and watch the first month
| When | Task | Done |
|---|---|---|
| 2 weeks before | Data map and redirect map signed off; content freeze date agreed; apps installed and configured | [ ] |
| 1 week before | Full import on the new store; counts and revenue reconciled; test orders through every payment method and shipping zone; taxes checked | [ ] |
| 1 week before | Redirects tested in list mode; integrations running against the new store; DNS TTL lowered; Magento backed up in full | [ ] |
| Launch day | Final delta import of orders and customers since the freeze; order notifications back on; redirects imported; domain connected | [ ] |
| Launch day | Top 50 old URLs checked by hand; sitemap submitted in Search Console; customer sign-in email sent | [ ] |
| Days 1 to 7 | 404s, redirect errors and failed integration messages checked daily; Magento kept read-only for look-ups | [ ] |
| Day 30 | Clicks and conversion compared with the 30 days before; remaining 404s redirected; Magento hosting scheduled for shutdown | [ ] |
What drives the timeline and the cost
Five things decide the size of a Magento migration far more than SKU count does: the number of product types that need remapping, how many extensions and custom modules must be replaced, the integrations that must keep running through the cutover, B2B pricing and company accounts, and whether the move includes a redesign. Years of order history and multi-store set-ups add reconciliation time.
Gigabit's Platform Migration starts at $7,000 fixed, from 4 weeks: data migrated and reconciled, a full redirect map, a rehearsed cutover with a rollback plan and 30 days of post-launch monitoring. Magento sources are quoted above that base, as a fixed price before work starts, up to about $40,000 for large multi-store catalogs. If the migration includes a new theme, a Store Build starts at $9,000 fixed. One custom integration, such as an ERP order sync rebuilt for Shopify, is the AI Quick Win Sprint at $8,000 fixed over 3 weeks, and custom apps and Functions after launch run on an embedded engineer at $3,000–$7,500 per engineer per month. Gigabit is a Shopify Partner; our Shopify page covers the rest of the work, and if the inventory in step 2 says you should stay on Magento, we will say so.



