← All playbooks
Commerce migration

Magento → Shopify

Move a Magento or Adobe Commerce catalog to Shopify with product and customer CSVs, then orders through an app or the Order API. Themes, checkout code, and price rules stay behind.

Typical timeline4 to 10 weeks40 to 80 hours active work
Statusneeds review
Source profileAdobe Commerce export docs reviewed 2026-11-03
Destination profileShopify migrate, product CSV, and customer CSV docs reviewed 2026-11-03
Documentation date
Review window
Evidence5 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Magento

Reasons to stay
  • Open-source and Adobe Commerce editions give you a deep catalog, multi-store views, and checkout you can change in code
  • Core catalog, order, customer, and promotion workflows are integrated
Reasons to leave
  • Hosting, upgrades, and extensions stay with your team, and a CSV export is not a running storefront
  • Deep customization usually increases extension, agency, or engineering costs
New platform

Shopify

What gets better
  • A polished hosted commerce platform has an unmatched app and partner ecosystem
  • Core catalog, order, customer, and promotion workflows are integrated
What gets worse
  • Transaction economics, app dependency, and checkout constraints reduce control
  • Deep customization usually increases extension, agency, or engineering costs
Best of the move

Shopify: A polished hosted commerce platform has an unmatched app and partner ecosystem. This removes a major source-side concern: Hosting, upgrades, and extensions stay with your team, and a CSV export is not a running storefront.

Worst of the move

What you lose: Open-source and Adobe Commerce editions give you a deep catalog, multi-store views, and checkout you can change in code. What you inherit: Transaction economics, app dependency, and checkout constraints reduce control.

Jump to a section
01At a glance

Know the shape of the move.

Transfer outcome11 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 4, Manual rebuild: 6, Not transferred: 1.
Clean0
Partial4
Manual6
Lost1
Mapping route9 of 9 fields have a destination path

This timeline assumes

  • One Magento Open Source or Adobe Commerce store, with admin access and a working cron for exports.
  • You can create a Shopify store and keep Magento taking orders until the pilot matches.
  • The catalog fits Shopify's product model, or you have a plan for configurable products that do not.
  • The site already documents Magento → WooCommerce if you want WordPress instead of Shopify.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Products and variantspartialcriticalAdobe's export writes a product CSV from System > Data Transfer > Export. Shopify imports a product CSV or a migration app. A variant row fails when an option is missing.Pilot simple, configurable, and grouped products. Fix option names before the full file.
CustomerspartialcriticalShopify's customer CSV must be UTF-8 and 15 MB or smaller. Overwrite replaces the whole profile, including tags, when the email or phone already exists.Split large lists. Import a tagged pilot before you check overwrite.
Historical ordersmanualcriticalShopify's migrate guide does not put orders in the product or customer CSV. Use a migration app, the Order API, or the Transaction API. Import products first, then customers, then orders, or the links break. Imported orders can fire new-order notifications.Silence notifications for the import. Bring at least the return window. Shopify Plus suggests two to five years.
Gift cards and store creditmanualhighShopify lists gift cards, certificates, and store credit as their own migration path, through an app or the GiftCard API.Export open balances from Magento and reconcile them after import.
Pages and blogspartialhighShopify says short pages can be copied. Larger sets use a migration app, the Page API, or the Blog and Article APIs.Inventory URLs first. Copy or import, then diff titles and body HTML.
Theme and checkout codelostcriticalMagento themes, layout XML, and checkout modules do not become a Shopify theme. Shopify's migrate guide moves content and records, not the storefront code.Rebuild the theme and checkout on a preview store before DNS moves.
Price rules and advanced pricingmanualhighAdobe exports Advanced Pricing as its own entity, separate from products. Shopify discounts and catalogs are different objects.Export the rules as evidence. Recreate the ones that still apply and test a cart.
Stock sourcespartialhighAdobe lists Stock Sources as its own export. Shopify inventory lives on locations.Map each source to a location and compare on-hand counts.
URL rewritesmanualcriticalMagento URL rewrites do not ride along in the product CSV. Shopify needs redirects for paths you are not keeping.Export the rewrite table. Add redirects before you change DNS.
Extensions and integrationsmanualcriticalPayment, tax, shipping, and ERP connectors are not rows in Adobe's product export. Shopify's content list does not include them.List every live connector. Rebuild it on the preview store and run a real order.
Export job itselfmanualhighAdobe's export runs in the background and lands in var/export, or import_export/export when remote storage is on. Cron has to be running or the file never appears.Confirm cron, then hash the CSV before you edit it.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
Products exportShopify product CSV or Product APItransformMap SKU, options, price, and inventory. Unpublished Magento products stay hidden until you publish them.
Customers Main FileShopify customer CSVtransformUTF-8, 15 MB chunks. Email is the match key if you overwrite.
Customer AddressesCustomer address columnstransformAdobe exports addresses as a separate entity.
OrdersOrder API, Transaction API, or a migration appmanualImport after products and customers. Mute new-order mail.
Advanced PricingShopify discounts or catalogsmanualKeep the CSV as evidence. Rebuild the rules.
Stock SourcesShopify locationstransformCompare quantities per location.
CMS pages and blocksShopify pagesmanualCopy short pages. Use the Page API for the rest.
BlogShopify blog articlesmanualBlog API or an app. Check authors and images.
URL rewritesShopify URL redirectsmanualOne redirect per path you are dropping.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep a Magento export you can reopen if the Shopify import is wrong.

  1. Confirm cron, then export Products, Customers Main File, Customer Addresses, Advanced Pricing, and Stock Sources.
  2. Download the files from var/export and record counts and hashes.
  3. Export URL rewrites, open gift-card balances, and a list of live integrations.
  4. Take a database backup before the final order freeze.
  5. Leave Magento on its current host until rollback closes.

Proof to capture: A manifest lists each CSV, its row count, its hash, and the Magento admin who ran the export.

Transformation · Spreadsheet and Shopify's product CSV importer

Catalog CSV

Turn Adobe's product export into a Shopify product file that imports.

  1. Open the Magento product CSV and Shopify's sample product CSV side by side.
  2. Map SKU, title, options, price, and inventory. Drop columns Shopify will ignore.
  3. Import on a preview store. Read the error rows for missing variant options.
  4. Publish only the products that should be visible. Hidden imports stay unpublished.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · Migration app or Shopify Order API

Order load

Attach historical orders to the customers and products you already imported.

  1. Finish products, then customers.
  2. Turn off new-order notifications.
  3. Load the return window first, then older orders if you still need them.
  4. Open five orders and confirm the customer, SKUs, and totals.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Pilot

Orders import before the catalog

criticalpossible likelihood

An order row arrives while the SKU or customer is still missing.

Consequence
History does not link, and support cannot see what the customer bought.
Mitigation
Follow Shopify's order: products, customers, then orders.

Stop if: A pilot order has no customer or no line items.

Cutover

Overwrite replaces live customers

highpossible likelihood

The customer CSV matches an email that already exists on Shopify.

Consequence
Shopify replaces the whole profile, including tags from an earlier import.
Mitigation
Tag the file. Run it on a copy of the store first.

Stop if: A known customer loses addresses or tags you meant to keep.

Cutover

Integrations are still on Magento

criticallikely likelihood

Checkout works on Shopify while tax, shipping, or ERP still talks to Magento.

Consequence
Orders have nowhere to go, or they are created twice.
Mitigation
Place one paid order on the preview store through every connector.

Stop if: Any live connector has not been tested on Shopify.

06Precise timeline

Do the work in this order.

Estimate forOne store whose catalog and customers export as CSV, with a handful of payment and shipping connectors
Total elapsed4 to 10 weeks
Active work40 to 80 hours
BufferA retailer who wrote up a Magento to Shopify move in 2024 planned three months and finished in nine, mostly on integrations and a large catalog.
01
Days 1 to 5Inventory the store3 to 5 days
02
Days 5 to 8Export and hash2 to 4 days
03
Days 8 to 25Preview store2 to 4 weeks
04
Days 25 to 30Final import and DNS1 to 3 days
05
Days 30 to 40Watch a sales week7 days
  1. Days 1 to 5 · inventory

    Inventory the store

    8 to 16 hours active3 to 5 days elapsedOwner review of what to drop waiting
    • Count products, customers, open orders, gift cards, and connectors.
    • Decide which history you will import.

    Depends on: Magento admin and Shopify store access

    Stop / go checkpoint

    Export?

    Go when: Every record type has an owner and a Shopify destination.

    Stop when: A live connector has no Shopify replacement.

  2. Days 5 to 8 · backup

    Export and hash

    6 to 12 hours active2 to 4 days elapsedAdobe's background export waiting
    • Run each entity export.
    • Save hashes and a database backup.

    Depends on: Cron is running

    Stop / go checkpoint

    Transform?

    Go when: Each CSV opens and the row count matches the admin.

    Stop when: var/export is empty or a file is truncated.

  3. Days 8 to 25 · pilot

    Preview store

    16 to 40 hours active2 to 4 weeks elapsedTheme and connector work waiting
    • Import a slice of products and customers.
    • Place a test order through each connector.
    • Build the redirect list.

    Depends on: Hashed exports

    Stop / go checkpoint

    Freeze Magento?

    Go when: The pilot order, a variant product, and a customer profile match.

    Stop when: A variant file fails or a connector cannot create an order.

  4. Days 25 to 30 · cutover

    Final import and DNS

    6 to 12 hours active1 to 3 days elapsedOrder import and DNS waiting
    • Freeze Magento checkout.
    • Import the final delta.
    • Point the domain at Shopify and watch redirects.

    Depends on: Passed pilot

    Stop / go checkpoint

    Shopify owns checkout?

    Go when: A new order exists only on Shopify and redirects resolve.

    Stop when: Magento is still taking payment.

  5. Days 30 to 40 · observe

    Watch a sales week

    4 to 8 hours active7 days elapsedReal orders waiting
    • Compare order counts and payment captures.
    • Keep Magento read-only.

    Depends on: DNS cutover

    Stop / go checkpoint

    Close rollback?

    Go when: A full sales cycle matches the expected connectors.

    Stop when: Orders duplicate or a redirect with traffic 404s.

07The point of change

Cut over with a way back.

Go live

Cutover

Make Shopify the only store taking payment, with the final Magento delta already imported.

Recommended window: A low-traffic morning with the catalog owner and whoever runs payments on the call.

  1. Put Magento in maintenance for checkout and stop its cron from creating orders.
  2. Export the final product, customer, and order delta.
  3. Import products, then customers, then orders, with new-order mail off.
  4. Switch DNS and confirm the certificate.
  5. Place one real order and confirm it reaches the ERP or shipping tool.

Proof to capture: Shopify has the new order. Magento checkout is closed. The redirect sample returns the pages you approved.

Return to safety

Rollback

Send customers back to Magento without losing Shopify orders placed after the switch.

Deadline: Before you cancel the Magento host, theme license, or payment extension.

  1. Stop Shopify from taking new checkout if you are reverting.
  2. Point DNS back at Magento.
  3. Export Shopify orders created after the freeze.
  4. Review them before anyone re-enters them in Magento.
  5. Run the same order and redirect checks against Magento.

Proof to capture: Magento is the only store taking payment, and post-cutover Shopify orders are listed.

Rollback immediately when
  • A paid order exists on both stores
  • A top URL 404s
  • Customer profiles were overwritten
  • A connector did not receive the Shopify order
  • Variant products customers can buy are missing options
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingSKU and price sampleCompare 25 SKUs across simple and configurable types.Title, price, and inventory match the approved map.SKU sheet.
V-02BlockingOptions importedOpen a product that failed once and one that has two options.Shopify shows the options. The error file is empty for the final import.Import result.
V-03BlockingProfile round tripLook up five emails, including one that was overwritten on purpose.Addresses and tags match the CSV you meant to load.Customer admin screenshot.
V-04BlockingHistory linksOpen five historical orders and one new order.Customer, SKUs, and totals match. Staff mail did not fire for the import.Order admin.
V-05BlockingOne paid pathBuy a product with the live payment and shipping connectors on the preview theme.One capture, one fulfillment record.Order and gateway receipt.
V-06BlockingTop Magento pathsRequest the top catalog and CMS URLs.Each path is the same URL or a redirect you listed.Redirect log.
V-07BlockingLocation countsCompare stock sources to Shopify locations for ten SKUs.On-hand matches within the rule you wrote down.Stock sheet.
V-08BlockingMagento checkout is closedTry to place an order on the old host.Magento does not capture a new payment.Checkout attempt.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: One sales week on Shopify, with redirects and connectors still matching the pilot.

  1. Archive the Magento CSVs, the database backup, and the redirect map.
  2. Revoke the migration app's API access.
  3. Remove Magento cron and payment webhooks.
  4. Keep the Magento admin readable until finance signs off on historical orders.
  5. Cancel Magento hosting only after that window.
  6. Schedule the next redirect and discount review.
10Experiences from the field

When the plan met reality.

First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.

First-person accountBob McKay · bobmckay.com

Migrating from Magento to Shopify2014

On 17 April 2014, Bob McKay wrote about a customer's Magento store with more than 5,500 products, images, prices, and long descriptions. Typing them into Shopify was not practical, and a translation script looked hard. He found a free Magento importer in Shopify's product import screen, loaded the catalog into a trial store, and then planned Shopify API calls in PHP because some fields had not mapped the way he wanted. The post stops at that second pass.

What they recommend
  • Treat a product import as a first load. He still needed the Shopify API because some fields mapped differently than he wanted.
  • Count the catalog before you promise a manual rebuild. More than 5,500 products with descriptions made re-entry impractical.
Worth noticing
  • The 2014 importer got the products into a trial store. It did not finish the field mapping.
  • This report is old. Check the importer you plan to use against current Shopify docs before you depend on it.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. Shopify: migrate to ShopifyAccessed 2026-11-03
  2. Shopify: import and export productsAccessed 2026-11-03
  3. Shopify: import and export customer listsAccessed 2026-11-03
  4. Adobe Commerce: export dataAccessed 2026-11-03
  5. Shopify Plus: plan launch checklistAccessed 2026-11-03