appbespoke
Get this done for you

How to migrate from Magento to Shopify, step by step

Magento is the one migration where the data model, not the export, is the hard part: EAV attributes, configurable and bundle products, multi-store views and tier pricing all have to be re-modelled for a flatter platform. Shopify publishes no Magento importer and no Magento guide — this is the sequence that works, cited throughout.

14 stepsPlan on 60–150 hours, or a specialistEvery step cited

Written for someone doing this themselves. Every step links to the documentation it came from, so you can check it rather than trust us. If you would rather not do it, we will quote it.

The checklist

Every step, in the order it has to happen.

 

Before you touch anything2

  • Admin footer version · bin/magento module:status · Stores → All Stores

    Watch out: Adobe Commerce B2B is a separately licensed extension. If the store uses negotiable quotes or shared catalogs, budget a rebuild rather than a migration.

    Adobe Commerce docs

  • Magento: Stores → Attributes → Product · Shopify: Settings → Custom data

    Watch out: Only global-scope dropdown or swatch attributes can drive a configurable — those are your option candidates. Everything else becomes a metafield.

    Adobe Commerce docs · Shopify docs

Get your data out3

  • System → Data Transfer → Export → Entity Type

    Watch out: There is no order, category or CMS entity type in this dropdown. The export is asynchronous, so cron and queue consumers must be running or the file never appears.

    Adobe Commerce docs

  • REST integration token, or MySQL on the Magento database

    Watch out: Magento 2.4 forces two-factor auth on the admin API, so the token call needs an OTP — create an integration token instead of scripting admin credentials.

    Adobe developer docs

  • SQL on url_rewrite · cross-check in Marketing → SEO & Search → URL Rewrites

    Watch out: If “Use Categories Path for Product URLs” was ever on, one product has many live paths. Export all of them or you lose most of your inbound links.

    Adobe Commerce docs

Build in parallel6

  • Shopify admin → Apps

    Watch out: Shopify’s first-party Store Migration app does not support Magento, and there is no Magento guide on the help centre — do not scope a project around a first-party importer that does not exist.

    Shopify docs

  • Shopify admin → Products

    Watch out: Bundle, grouped and partly virtual products have no Shopify type at all — pull them out of the bulk import and handle them deliberately.

    Shopify docs

  • Products → Import · Customers → Import · orders via app or API

    Watch out: Orders cannot be imported by CSV at all, and product/customer files cap at 15 MB. Turn off order notifications before any historical order import.

    Shopify docs · Shopify docs

  • Products → Catalogs · Discounts

    Watch out: Shopify caps active automatic discounts at 25 including app-based ones, and only Plus stores may install custom apps containing Functions.

    Shopify docs

  • Customers → Companies · Products → Catalogs

    Watch out: B2B is incompatible with Shop Pay and other accelerated checkouts, subscriptions, local delivery, tipping and legacy customer accounts. Below Plus you get three catalogs.

    Shopify docs

  • Shopify Partner dashboard → Stores → Add development store

    Watch out: Order creation is heavily throttled on development stores, so a dry run there will not tell you how long the real import takes.

    Shopify developer docs

Keep your rankings1

  • Content → Menus → URL redirects → Import

    Watch out: Shopify only redirects URLs that genuinely 404, and reserved paths cannot be sources. Resolve legacy redirect chains to a single hop rather than importing the chain.

    Shopify docs

Cut over1

  • DNS host · Shopify → Settings → Domains

    Watch out: Only one A record and one www CNAME may point at Shopify — remove the Magento ones. Allow up to 48 hours for full propagation.

    Shopify docs

After the switch1

  • Hosting control panel or Adobe Commerce Cloud project

    Watch out: An unpatched public Magento still serving a payment page is the worst possible post-migration outcome — treat it as a live security finding until it is gone.

    Adobe Commerce docs

What does not come with you

Every migration guide that promises everything moves is selling something. These are the things that genuinely do not, and what to do instead.

  • Bundle products

    Shopify has no bundle type with per-option quantity, customer-chosen selections and dynamic pricing.

    Instead: Rebuild as fixed bundles with the Shopify Bundles app, as a cart-transform Function (custom Functions apps need Plus), or explode into discrete products.

  • Grouped products

    No Shopify type presents several independently purchasable products with their own quantity boxes on one page.

    Instead: Combined Listings is the nearest native answer but is Plus/enterprise only — otherwise use a collection page or a theme section.

  • More than three variant axes

    Shopify permits 2,048 variants but still only three options per product, while Magento configurables have no axis limit.

    Instead: Split into several products, or move the least inventory-relevant axis to a line-item property and accept the loss of SKU-level tracking.

  • Customer passwords

    Hashes are not portable into Shopify.

    Instead: Import customers with a migration tag and stage a password-reset campaign timed to the DNS change.

  • Orders by CSV

    Shopify’s CSV tooling is export-only for orders.

    Instead: Matrixify or the order API. Note that imported financial status is cosmetic — no transactions or refunds are created.

  • Negotiable quotes and requisition lists

    These are licensed Adobe Commerce B2B features with no Shopify counterpart.

    Instead: Draft orders with PO numbers plus a quoting app cover part of it; multi-round negotiation on the order object does not exist.

  • One-step and customised checkout

    Shopify’s checkout is not merchant-editable, and checkout UI extensions are Plus-only.

    Instead: Move logic into Shopify Functions, and accept Shopify’s checkout — it is already near-single-page for Shop Pay users.

  • Multi-website with separate admins

    Shopify Markets varies currency, language, pricing and domain within one store — it does not give you separate admins.

    Instead: Model as Markets, or run separate Shopify stores and accept duplicated catalogue management.

  • Variant-level metafields via CSV

    Shopify’s product CSV does not support variant metafields.

    Instead: Use the GraphQL Admin API or Matrixify for those fields.

Your URLs, mapped.

Magento and Shopify disagree about URL shapes, so every old address needs a 301 to its new home. This is the mapping.

MagentoShopifyNote
/linen-throw.html/products/linen-throwThe base case: strip the suffix, prefix /products/.
/home/bedding/throws/linen-throw.html/products/linen-throwCategory-path product URLs. One product can have dozens — every one needs its own row.
/home/bedding.html/collections/beddingShopify collections do not nest, so deep Magento trees flatten and handles can collide.
/catalog/product/view/id/123/products/linen-throwNon-rewritten internal paths are still indexed on many stores — resolve the id back to a handle.
/about-us/pages/about-us
/home/bedding.html?color=blue/collections/beddingShopify redirects match on path only; layered-navigation query strings are not matched.
/catalogsearch/result/?q=throw/searchThe path redirects but the search term is lost.
/de/home/bedding.html/de/collections/beddingStore-view prefixes must map onto a Markets subfolder or a separate domain — generate rows per store id.
/media/catalog/product/cache/…/throw.jpg(no equivalent)Image URLs move to Shopify’s CDN with unpredictable paths; there is no redirect route.

Your extensions, matched.

  • Amasty Layered NavigationShopify Search & Discovery

    Native filters cap at 25 per store and switch off entirely on collections over 5,000 products — large catalogues need Globo, Boost or Searchanise.

  • Mirasvit Advanced SearchAlgolia / Klevu

    Algolia is the closest Elasticsearch replacement but is usage-billed; native search has no comparable synonym depth.

  • Mageplaza / Magefan BlogShopify blogs (native)

    Shopify blogs have tags but no categories, so a Magefan category tree must be flattened.

  • Amasty / Mirasvit SEO SuiteNative SEO + an SEO app

    No single app matches a full Amasty or Mirasvit SEO suite — expect to combine native features with one app.

  • Xtento / Wyomind feedsDataFeedWatch / Simprosys

    Shopify’s native export is fixed-schema and manual — no custom mapping, scheduling or FTP delivery.

  • One Step CheckoutNo equivalent

    Checkout is not merchant-editable; checkout UI extensions are Plus-only. There is no true equivalent.

  • Adobe Commerce B2BShopify B2B (native)

    Now on all plans, but capped at 3 active catalogs below Plus, and incompatible with Shop Pay, subscriptions and tipping.

  • Negotiable quotesQuote apps / draft orders

    Apps produce a quote request, not the multi-round negotiation Adobe puts on the order object.

  • Amasty / Aheadworks Reward PointsSmile.io / LoyaltyLion

    Genuinely stronger on Shopify — but all are priced on order volume, so model the real cost.

  • MageWorx Advanced Product OptionsProduct options apps

    Options become line-item properties, not variants — no per-option SKU, inventory or reporting. A structural downgrade.

  • Magento attribute sets / PIMMetafields + metaobjects

    The honest native answer for most catalogues, but there is no Shopify-native PIM with workflow or approvals.

What goes wrong.

  • Half the catalogue’s SEO URLs vanish

    Why: Only live product rows were exported, missing category-path duplicates and legacy 301 rows in the url_rewrite table.

    Avoid it: Dump the whole table for every store id, resolve redirect chains to a single hop, and reconcile against Search Console’s indexed-page count.

  • Bundle and grouped products arrive broken

    Why: Shopify has no equivalent type, so importers fall back to a bare parent SKU with no children.

    Avoid it: Extract bundle and grouped SKUs by SQL up front, decide the target model per product, and exclude them from the bulk import.

  • Configurable products silently lose an axis

    Why: Magento allows unlimited configurable axes; Shopify allows exactly three options.

    Avoid it: Count the configurable attributes per parent before you start, and decide splits during mapping rather than mid-import.

  • The import stalls partway through a big catalogue

    Why: Stores holding very large variant counts are rate-limited to roughly 10,000 new variants a day below Plus.

    Avoid it: Count total target variants early — if you are near the threshold, price in Plus or schedule the import across weeks.

  • Every customer is locked out on launch day

    Why: Passwords cannot be migrated from any platform.

    Avoid it: Import customers with a migration tag, stage a reset email before DNS moves, and watch account-recovery volume for 72 hours.

  • Historical orders look paid but no money exists

    Why: Imported order financial status is display-only — no transactions or refunds are created behind it.

    Avoid it: Decide explicitly that orders are for display, brief finance that Shopify will not reconcile to Magento, and keep Magento readable for the audit trail.

  • Promotions cannot all be recreated

    Why: Shopify caps active automatic discounts at 25 including app-based ones, and custom Functions apps require Plus.

    Avoid it: Audit active catalog and cart price rules before quoting; consolidate under 25 or scope Plus.

  • An abandoned Magento becomes a live security liability

    Why: “Keep it up just in case” leaves an unpatched storefront on a public domain, still serving a payment page.

    Avoid it: Move Magento to a non-public hostname behind IP restriction on cutover day and set a calendared destroy date.

Or hand the whole list to someone who has done it.

Send your store URL and you get back a fixed price and a plan for your store specifically: SKU count, which extensions have Shopify equivalents, the redirect plan, and the risks we can see.

Get my free migration plan