Shopify to Magento Migration: What Moves
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.

| 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.

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.

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:
- 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.
- Design the catalogue model. Attribute sets, configurables and layered navigation, agreed before a single export runs.
- 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.
- Build the redirect map. From a crawl, many-to-one, one hop, tested against the staging site.
- Plan the credential reset. The customer email, its timing, and the support script for the week that follows.
- 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.
- 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.