Shopify 9 min read

Shopify to Magento Migration: What Moves

Branded QodeBites card reading Leaving Shopify moves less than you think, beside a diagram where catalogue and customer records cross a dashed cutover line while passwords, saved cards and apps stop at it

A Shopify to Magento migration moves less than most plans assume. Your catalogue, your customer records and your content cross the line as data. Your orders arrive as history rather than as orders. Passwords, stored cards, subscription contracts, loyalty balances and the entire storefront do not cross at all — they are rebuilt, re-collected or re-earned on the other side.

That is not an argument against moving. It is the list the estimate usually omits, and it is why a project scoped as “export the data, import the data” runs long. Below is what actually transfers, what has to be translated, and what you take ownership of the moment you leave a hosted platform.

What a Shopify to Magento migration actually transfers

Shopify will give you the data. Products, variants, images, collections, customers, orders and blog content all come out through CSV exports or, for anything with depth, the Admin API. Getting it out is the easy half. What decides the timeline is which of those assets is a transfer, which is a translation, and which has no equivalent to land in.

Diagram sorting Shopify store assets into three lanes at the cutover line: assets that transfer as data, assets that translate into a different Magento model, and assets that must be rebuilt or re-collected because nothing carries them across
Every asset in the store lands in one of three lanes. Only the first lane is a data job.
Asset What happens to it Where the work is
Products, images, collections Translates Variant options become attributes and attribute sets; nothing is lost, but the model changes shape
Metafields Translates Become Magento attributes, and anything that read them on the storefront is rebuilt
Customer records Transfers Names, addresses and order history import cleanly
Customer passwords Does not move Every customer sets a new one; plan the email that tells them why
Stored payment methods Does not move Held by the payment provider, not by the store
Orders Transfers as records Readable history; refunds and captures still belong to the old system
Subscriptions Does not move Contracts and their billing schedules are rebuilt and re-authorised
Reviews, loyalty points, wishlists Depends on the app The data belongs to each app vendor; check every export before you commit
Theme and storefront Rebuilt Liquid has no counterpart in Magento’s templating
Apps Rebuilt Each one becomes an extension, a custom build, or a feature you drop

The catalogue is a translation, not a copy

Shopify models a product as a small set of option dimensions that generate variants. Magento models it as attributes grouped into attribute sets, with configurable products assembled from simple ones. Both can hold the same catalogue; they hold it differently.

The practical consequence is that the mapping has to be designed before anything is exported. Which Shopify options become configurable attributes, which become simple product attributes, and which of your metafields deserve to be filterable in layered navigation are decisions someone has to make deliberately. Make them badly and you get a catalogue that imports successfully and then cannot be filtered, searched or merchandised the way the old one was. This is the part of the job worth the most planning, and it is the same discipline we describe in our guide to how e-commerce data migration is actually sequenced.

Customers move. Their credentials do not.

Shopify’s customer export carries the person, not their access. There is no password field in it, because there is no safe way to hand password hashes between platforms — so on launch day every customer account exists and no customer can log in with what they remember. The migration that goes badly here is the one that discovers this in the launch week and sends a reset email that reads like a breach notification.

Stored payment methods are the same problem with money attached. A saved card is not held in your store; it is a token held by the payment provider that issued it, usable only by that provider. Moving to a self-hosted Magento generally means a different gateway, and a different gateway cannot read someone else’s vault. Unless your provider stays the same and supports a vault migration, every returning customer re-enters their card.

Subscriptions inherit both problems at once. A Shopify subscription is a contract plus a payment mandate plus an app that runs the schedule, and none of the three is portable. They are re-created and re-authorised, which means asking active, paying customers to take an action — the single highest-risk item on most of these projects, and the one that belongs at the top of the plan rather than in the launch checklist.

Orders become history, not orders

Order import is usually treated as a tick-box, and it is genuinely useful: customers see their history, support can answer questions, and reporting has a past. What it is not is a working order. The payment behind an imported order was captured by a gateway you are leaving, and a refund has to be issued by whoever holds that transaction.

Timeline diagram showing the order-state boundary at cutover, with orders placed before the move remaining actionable only in the old Shopify system while their records sit read-only in Magento, and a dual-window period where the returns policy spans both systems
Imported orders are history. Anything that touches money on them still has to happen where the transaction lives.

So for as long as your returns window runs, two systems are live: the new store takes new orders, and the old one is kept open, in whatever reduced state your plan allows, to service the old ones. Decide the length of that dual window from your actual returns policy, decide who has access to the old admin, and write down what staff should do when an order predates the move. Gift-card balances belong in the same conversation — they are an outstanding liability to your customers, and the codes themselves are not something you can simply lift out of the admin and reissue elsewhere.

Your URLs change shape on the first day

This is the part that shows up in Search Console rather than in the project plan. Shopify’s URL structure is fixed and prefixed: products live under /products/, collections under /collections/, content under /pages/, and articles under /blogs/. Magento builds URLs from a product’s URL key and its category path, with a configurable suffix. Nothing you rank for keeps its address.

Diagram mapping Shopify URL patterns for products, collections, pages and blog articles onto their Magento equivalents, showing several Shopify paths for the same product collapsing onto a single Magento product URL
Shopify can serve one product at several addresses. The redirect map has to send all of them to one place.

The complication is that Shopify serves a single product at more than one path — the bare product URL and the collection-scoped variant of it — which means the map is many-to-one before it is anything else. Build it from a crawl of what is actually indexed and actually linked, not from a database export, and hold it to one hop: chains of redirects waste the crawl budget you are about to need. Our post on building a 301 redirect map that survives a replatform covers the method; the platform changes, the discipline does not.

What you take on the moment you leave

The migration ends; the ownership does not. Shopify was doing work on your behalf that becomes yours the day you launch on self-hosted Magento.

  • The infrastructure. Sizing, scaling, monitoring, backups and the restore test that proves the backups work.
  • The patch cycle. Security releases arrive on the vendor’s schedule and have to be applied on yours. An unpatched Magento is not a saving.
  • The checkout. The thing many brands leave Shopify to control is also the thing they now maintain, harden and keep compliant. Before assuming that is necessary, it is worth confirming the limit is real — what Shopify’s checkout will and will not let you change is where these plans most often turn out to be solving an implementation problem rather than a platform one.
  • Payment compliance. On Shopify, the checkout’s PCI position is largely the platform’s. Self-hosted, establishing and maintaining your own scope is your responsibility.
  • The people. Magento assumes a team. Where that team is a retainer for feature work rather than someone accountable for upgrades, the platform slowly stops being maintained.

None of that is an argument that the move is wrong. It is an argument for pricing it honestly. There is a defensible case for Magento, and we have made it in print — when Magento is genuinely better than Shopify sets out the conditions we check before recommending it, and the head-to-head Shopify vs Magento comparison puts the two side by side. If the driver is enterprise-tier commercial logic specifically, Shopify Plus against Magento Enterprise is the narrower comparison to read first.

A sequence that survives the cutover

The order of work matters more than the tooling. What we run, in this order:

  1. Confirm the reason. Name the specific thing Shopify would not let you do, and verify it is a platform limit rather than a build decision. If it is not, stop here.
  2. Design the catalogue model. Attribute sets, configurables and layered navigation, agreed before a single export runs.
  3. Inventory the app stack. For every app: the Magento equivalent, the custom build, or the decision to live without it — plus whether its data can be exported at all.
  4. Build the redirect map. From a crawl, many-to-one, one hop, tested against the staging site.
  5. Plan the credential reset. The customer email, its timing, and the support script for the week that follows.
  6. Rehearse the cutover. A dry run against a full data copy, with the rollback written down. Our migration cutover plan covers the DNS and freeze mechanics.
  7. Keep the old store reachable for the length of the returns window, with documented access.

Frequently asked questions

Can you migrate from Shopify to Magento without losing SEO?

You can hold most of it, and the redirect map is what decides. Every indexed Shopify URL needs a single-hop 301 to its Magento equivalent, including the collection-scoped product paths. Expect movement in the weeks after launch while the new URLs are recrawled; that is normal and recoverable. What is not recoverable is a set of URLs that were never mapped.

Do customer passwords transfer from Shopify to Magento?

No. Password hashes are not part of any Shopify export, by design. Accounts migrate, credentials do not, and every customer sets a new password after launch. Treat the reset communication as part of the launch, not as an afterthought.

Can imported orders be refunded in Magento?

Not against the original payment. The imported order is a record; the transaction still sits with the gateway that captured it. Refunds for pre-migration orders are issued in the old system for as long as your returns policy allows them.

How long does a Shopify to Magento migration take?

The honest answer is that the catalogue model and the app stack set the timeline, not the record count. A store with a simple catalogue and few apps is a different project from one with a decade of metafields and twenty integrations, even at the same order volume. Anyone quoting a duration before seeing both is quoting a template.

The takeaway

A Shopify to Magento migration is three projects wearing one name: a data translation, a storefront rebuild, and a handover of operational responsibility that starts the day you launch. The data is the smallest of the three and the only one most plans budget for.

If you are weighing the move and want the version specific to your catalogue, your app stack and what your checkout actually needs to do, the free Shopify store audit is where we start — including when the finding is that you should stay where you are.

Share X in wa
Mohamed ElQadi
Mohamed ElQadi Tech Lead @ Qode Bites

I help business owners untangle the mess between their website and their revenue — performance, conversion, and the unglamorous fixes that move numbers. Egypt + US.

Follow QodeBites on LinkedIn →
• FREE PLAYBOOK

The E-Commerce
Growth Playbook

17 moves that turn a store into a revenue machine — the exact levers our team pulls for the brands we build and grow.

  • Convert more of the traffic you already pay for
  • Speed wins that lift revenue on every visit
  • Retention flows that make the second sale cheaper
  • Ad math so you scale in profit, not blind

Get the free PDF

Enter your details and we’ll send it straight to your screen.

No spam — the guide now, and the occasional useful email. Unsubscribe anytime.

More Insights

Discover more articles, expert perspectives, and practical insights on software development, product design, emerging technologies, and digital innovation.

Ready to light it up?

Start a Project

Your Trusted Growth Partner
For Startups And Enterprises

From first concept to final deployment, Qode Bites delivers everything needed to take your idea live — with seamless setup, performance-ready infrastructure, and expert support every step of the way. Book a free 30-minute strategy call.

What We'll Cover

  • Current store performance
  • UX and conversion bottlenecks
  • Growth opportunities
  • Recommended action plan
Book a Strategy Call

June

FriSatSunMonTueWedThu

Sat, June 2