Migration · Magento / Adobe Commerce → Shopify Plus

Magento to Shopify Migration

A replatform does not lose your data, your rankings, or your uptime. A bad one does. The platform was never the risk. The execution is, and that is exactly what we own.

Magento source store, kept selling Reconciled map · redirects · rollback Shopify Plus DTC and native B2B
Migration reconciliation staging · parallel run
Magento → Shopify PlusCounted against baseline

Why teams are leaving Magento in 2026

Nobody leaves Magento for a cheaper month. They leave the upkeep.

The exit is structural, not a single fee: the upgrade and maintenance treadmill, self-hosting plus security and PCI, and a GMV-banded Adobe Commerce license that grows as you do. Magento 1 lost security patches in 2020, and 2.4.5 and 2.4.6 reach end of life around August 11, 2026, after which those stores get no patches and PCI compliance is at risk.

01 / the treadmill

The upgrade treadmill

Each Adobe Commerce release line gets roughly three years of standard support. Staying current means recurring, project-grade upgrades that re-test every extension you depend on.

02 / the burden

Self-hosting, security, PCI

Open Source merchants own the full server stack and PCI scope. Patching is on you, and the August 2026 end-of-life clock turns a missed patch into a compliance problem.

03 / the license

A license that grows with you

Adobe Commerce keeps native B2B in the paid edition behind a GMV-banded license: tens of thousands to six figures, climbing as your sales climb. Shopify Plus deletes the category.

Fear 01

Lose my data

Products, configurables, customers, orders, attribute sets. The thing the business runs on, mid-flight between two platforms.

→ a reconciliation line item
Fear 02

Lose my rankings

Every .html and category URL changes on Shopify's fixed prefixes. Skip the redirect map and organic traffic drops.

→ a 1:1 301 map from the url_rewrite table
Fear 03

Go dark in the switch

The dread of a storefront down for migration while customers and revenue wait.

→ a DNS cutover, not an outage
Fear 04

Lose a feature

Especially B2B pricing logic, quotes, and approvals that took years to tune.

→ carried where it moves, rebuilt where it must
Our position

Every fear on that list is an execution line item, not a platform property. Your catalog, customers, and orders move cleanly. What we rebuild, and where the value is, is the storefront, your flexible catalog schema (EAV and attribute sets), your B2B pricing engine, and your integrations, re-engineered onto a fully hosted, PCI-certified Shopify Plus with no upgrade treadmill, no self-hosting, and no GMV-banded license.

The data-migration map

What moves, in what shape, and where the model bends.

Your catalog, customers, and orders move on a known path. The risk is not the data: it is the handful of places where Magento and Shopify model the world differently. Note that Shopify's own first-party importer does not even list Magento as a source, so everything richer than a CSV runs through a built pipeline.

Source of record, kept live

Magento

exported, never deleted

The migration pipeline

Makro Middleware.

map · reconcile · redirect

The new storefront

Shopify Plus

DTC and native B2B

Master data: Magento → pipeline → Shopify, one way, in dependency order
The old store: stays selling through the build, frozen only at the final delta
Products & configurablesMagento's six product types collapse into Shopify products and variants: a configurable parent plus its child simples becomes one product with variants. Shopify now allows up to 2,048 variants per product, but still only 3 options, and bundle, grouped, and downloadable have no native Shopify type. A per-product decision, not an automated field map.Magento → Shopify
Attribute sets & EAVMagento's EAV attribute model and per-type attribute sets have no Shopify primitive. Values flatten into metafields and tags, and the flexible schema is re-modeled with metafield definitions and metaobjects. The information-architecture phase, planned for, not discovered.Magento → Shopify
Categories → collectionsMagento's deeply nested category tree flattens. Shopify collections are flat; the hierarchy is rebuilt in menus and automated-collection rules. The shape changes, the navigation does not have to.Magento → Shopify
Customers & passwordsCustomers migrate, including store credit, and customer groups become tags. Passwords never migrate. They are encrypted outside Shopify, so every customer gets an account-activation invite at launch. Planned for, not discovered.Magento → Shopify
OrdersHistorical orders import by SKU, products first, via a migration app or the Admin API, not the native admin CSV, which cannot import orders at all. Imported orders are archived for history and reporting, not live transactions: nothing re-charges. Notified staff are muted before the run.Magento → Shopify
URL rewrites & redirectsPages and blogs migrate; every .html and category URL changes on Shopify's fixed prefixes. A complete 1:1 301 map is built from the live crawl reconciled against the url_rewrite table, never assumed, and ships before launch. Migration apps do not build it.Magento → Shopify

Feature parity, honestly

Where Shopify is better, at parity, different, and where the real gaps are.

The accurate answer is not "Shopify can do everything." It is a map: better in places, a different model in others, and a few real gaps we name rather than bury. That honesty is what makes the rest of the map credible.

Better on Shopify At parity Different model A real gap to rebuild

DTC catalog & checkout

The storefront most of your traffic touches.

Variants per product2,048 on Shopify, raised from 100 in Oct 2025; a configurable's children fit cleanly better
Options per productStill 3 on Shopify; a configurable with 4+ variation attributes needs a combined listing or an app gap
Hosting, patching, PCIFully hosted, Level 1 PCI by default; no server stack, no patch cadence better
Attribute schema (EAV / sets)No EAV primitive; re-modeled as metafields and metaobjects, upgrade-safe different
Bundle / grouped / downloadableNo native product type; rebuilt with apps or restructuring gap
Multi-storefront / internationalWebsite/store/store-view splits into Markets (per locale) and Plus expansion stores (per brand) different

B2B engine

Where the real platform decision is usually made.

Companies, locations, contactsNative B2B objects on Shopify Plus, no paid-edition license parity
Shared catalogs & price listsNative, with fixed prices, percentage adjustments, volume breaks parity
Net terms & volume pricingNative net 7 to 90 terms and quantity rules per catalog parity
Workflow modelSelf-serve catalog-led vs Adobe Commerce quote-and-rep with approval rules different
Negotiable quotesNo quote object; rebuilt on draft orders or an app gap
Requisition lists, credit ledger, role treesQuick order lists native; revolving credit and multi-tier roles rebuilt gap
The honest line

"Shopify can't do B2B like Adobe Commerce" is false. Shopify Plus does native multi-entity B2B that often fits real B2B better, without a paid-edition license. The difference is the workflow model and four specific primitives, negotiable quotes, requisition lists, deep role hierarchies, and revolving credit, not raw capability.

B2B, carried vs rebuilt

Your customer list, orders, and B2B prices move. Your pricing engine gets re-engineered.

This is the split that decides a DTC-plus-B2B migration. Because Adobe Commerce B2B lives in the same instance as your core data, the export is a single-source job, easier than a two-system B2B platform. Said plainly so nobody is surprised at go-live: done right, the rebuild is an upgrade from a heavyweight licensed module.

Carries over

The directory and the records move

  • Company / location / contact directorybulk import
  • Customersincl. store credit
  • Order historyby SKU, app / API
  • Net-terms policyre-applied
  • Per-variant B2B pricesbulk load
  • Quick order listsnative

A tooling path exists for everything in this column. It moves on a known route.

Gets rebuilt

The pricing engine and workflows are built

  • Shared catalogs & price listsAdmin API
  • Negotiable quotesdraft orders / app
  • PO approval rulesFlow / app
  • Company credit / AR ledgerrebuilt
  • Saved requisition listsapp / custom
  • Custom ACL roles2 per-location roles

Plan this column as a build line, not a migration line. Price data extracts; the catalogs are re-created via priceListCreate, and Matrixify only writes into catalogs that already exist.

SEO and redirect preservation

The number-one fear, and the cleanest thing to prove.

SEO loss is a symptom of skipping the redirect map and the pre-launch crawl. It is not a property of Shopify. An agency that crawls the live store, exports the url_rewrite table, and ships a 1:1 redirect map is the difference between this fear being false and true.

Why every URL changes

Magento URLs are configurable, suffixed, and nested: a .html suffix, optional category-path product URLs, and a url_rewrite table holding years of auto-generated 301s. Shopify forces fixed prefixes (/products/, /collections/) with no .html and no category nesting. For a mature Magento store every product and category URL changes, so a 1:1 301 map is mandatory, not optional.

We crawl the live store and export the url_rewrite table, never assuming the structure. We map one-to-one, never many-to-one, because mass redirects read as soft-404s and lose equity. We collapse chains, including Magento's historical rewrites stacked under the new platform-change 301s. 301s, no chains, held a year, shipped before launch.

Scale is never the constraint. Shopify Plus accepts up to 20,000,000 redirects against 100,000 on standard, and 301s do not lose PageRank: that is Google's own position. One Magento-specific trap: Shopify serves the same product under /products/ and /collections/.../products/, so the migrated theme must emit clean self-referencing canonicals. Expect a few weeks of fluctuation, then recovery.

Magento URL301 → Shopify URL
/lighting/pendant-x.html301/products/pendant-x
/catalog/category/fasteners.html301/collections/fasteners
/shipping-policy301/pages/shipping-policy
/blog/2025/spec-guide301/blogs/news/spec-guide
/brands/northbridge.html301/collections/northbridge
01Old indexed .html URLs 404 after launchPreventionCrawl the live store and export the url_rewrite table, build a 1:1 301 for every indexed URL, load it before the DNS flip so no URL is ever live without its redirect.
02Mass redirects to the homepage or a collectionPreventionMap each .html URL to its exact new page. Many-to-one redirects are read as soft-404s and shed the equity you are trying to keep.
03302s or stacked url_rewrite chains dilute equityPrevention301 permanent only, with no chains. Collapse Magento's historical url_rewrite chains rather than stacking new platform-change 301s on top of them.
04Category-path duplicate URLs left livePreventionPick one canonical path per product and 301 the rest. Magento's optional category-path product URLs are a duplicate-content trap that must resolve to a single target.
05The Shopify dual-URL canonical trapPreventionEmit clean self-referencing canonicals so /collections/.../products/ does not compete with /products/. The theme fixes this, not the redirect map.
06Redirects retired early, or app assumed to handle SEOPreventionHold the full map at least a year, submit the new sitemap and a Change of Address. Migration apps move records, not the judgment-heavy url_rewrite reconciliation.

The de-risk method

Six gates. Nothing advances until the evidence passes.

We sell the method, not a list of promises. The differentiator is that the whole migration is observable, reversible, and staged. Each phase is a gate with a deliverable; the work moves forward only when the prior gate's evidence checks out.

Gate 01

Audit

Count and export everything on the live Magento store: products, configurables, attribute sets, customers, orders, the url_rewrite table, the extension inventory, and the live URL crawl.

→ the baseline counts and inventory
Gate 02

Data map

An explicit old-field to new-field map plus an exception list of what will not round-trip: 4+ option configurables, bundle and grouped types, the EAV re-model, B2B shared catalogs.

→ the exception list
Gate 03

Build

Import into a non-production Shopify Plus store, behind a password page, in dependency order: products, then customers, then orders. Orders by SKU via API or app, never CSV.

→ the staging store
Gate 04

Parallel run

Both stores live. Reconcile counts against the baseline and run the full launch-checklist test matrix, including a Bogus-Gateway payment test and B2B catalog parity. Zero customer exposure.

→ reconciliation report + passed matrix
Gate 05

Staged cutover

Pre-warm DNS to a low TTL, take redirects live before the switch, run the final delta behind a Magento maintenance-mode freeze, then flip the domain. A managed freeze window, not a big-bang flip.

→ redirects-first, delta-synced flip
Gate 06

Rollback & verify

DNS-revert rollback with Magento untouched and backed up, never deleted. Verify zero 404s, submit the sitemap and a Change of Address, hold redirects at least a year. Google treats this as a site move.

→ verified, reversible, held

Claims you can check

What you have heard, against what the docs actually say.

Every myth here is the same failure dressed differently: a property of a careless DIY migration restated as a property of Shopify. Each claim is paired with the deliverable that neutralizes it.

01The claim"You'll lose your SEO."+
The reality

A mishandled replatform loses rankings, not a replatform. Shopify's fixed prefixes change nearly every .html and category URL, so a 1:1 301 map, crawled live and reconciled against url_rewrite, loaded before launch and held a year, preserves the equity. Google says 301s do not cause a loss in PageRank, and Plus holds up to 20M redirects.

Source: Shopify Enterprise, Google, Search Engine Journal

02The claim"Shopify can't match Magento's flexibility, customization, or B2B."+
The reality

Shopify Plus reaches native parity on most DTC and B2B features and wins on operational burden: no hosting, patching, or PCI, and upgrade-safe Functions. It loses only at the edges: arbitrary server-side code, four B2B primitives (negotiable quotes, requisition lists, deep role hierarchies, revolving credit), multi-brand containers, and capped filtering.

Source: Shopify Help, Adobe Commerce docs

03The claim"Migration means downtime."+
The reality

Near-zero storefront downtime. The new store is built and QA'd behind a password page while Magento keeps selling. Cutover is a DNS change plus a short Magento maintenance-mode freeze for the final delta, not an outage.

Source: Shopify Enterprise, Adobe Commerce docs

04The claim"Just run the automated importer."+
The reality

The most dangerous true-sounding claim, and on Magento it is worse: Shopify's own first-party importer cannot even ingest Magento. Third-party tools move records, not the theme, redirects, extensions, or B2B structure. The importer is one step of about twelve.

Source: Shopify, LitExtension docs

05The claim"You'll lose your extensions and custom features."+
The reality

The PHP code does not port; the capability is re-expressed as Shopify apps, Functions, metaobjects, and the Admin API. A per-extension audit classifies each as native, app, rebuild, or drop. Most features survive; the code does not.

Source: Adobe Commerce docs, Shopify dev

06The claim"Magento is cheaper because it's open source."+
The reality

The license is free; the platform is not. Self-hosting, security patching, PCI scope, the full server stack, and, for B2B, the paid Adobe Commerce license are all yours, and the license grows with GMV. Shopify folds hosting, SSL, and PCI Level 1 into the plan fee. False on total cost.

Source: Adobe Commerce, Shopify

07The claim"Our B2B shared catalogs and price lists will just move over."+
The reality

Price data extracts and per-variant fixed prices bulk-load, but catalogs and price lists are built first via the Admin API. Matrixify only writes into catalogs that already exist. The gated "this company sees these products at these prices" logic is re-architected, not copied. Plan it as a build line.

Source: Matrixify docs, Shopify dev

08The claim"We'll keep our negotiable quotes and approval rules."+
The reality

There is no Shopify quote object to import into. Quoting is rebuilt on draft orders or an app, the multi-tier PO-approval engine is rebuilt on Flow or draft orders, and historical quotes are reference data only.

Source: Shopify dev, Adobe Commerce docs

The relocation runway

Observable, reversible, staged. The whole move on one runway.

A migration is a relocation: cargo carried gate to gate, reconciled against a counted baseline, with the entities that need hand-shaping visibly diverted, never silently dropped, and a rollback lane back to the source the entire way.

Magento Shopify Plus
cutover window · TTL 300
Magento source · kept live Shopify Plus target · verified 01 Audit 02 Data map 03 Build 04 Parallel run 05 Cutover 06 Rollback Products 18,000 ✓ Attribute sets 42 ✓ Customers 25,000 ✓ Orders 120,400 ✓ URL rewrites 31,800 ✓ B2B companies 480 ✓ Hand-built bay · diverts, then rejoins 4+ option configs B2B shared catalogs Rollback lane · DNS revert to Magento, any gate
Manifest reconciled
195,722 / 195,722
Diverted to hand-built bay
2 classes
Cutover window
redirects-first · delta freeze
Rollback
DNS revert, source intact
Runway: master data, one way Hand-built bay: diverts visibly, then rejoins Rollback: revert to Magento at any gate

Counts shown are illustrative demo data, not a real client. The point is the shape: every crate carries a count that reconciles against the baseline, nothing is dropped in silence, and the source store is never deleted.

Proof and replatform muscle

The pattern, with real numbers, none invented.

We lead with a public, named, same-source Magento to Shopify Plus replatform, then the B2B migration-integrity muscle a DTC-plus-B2B Magento move needs: a pricing and quote engine rebuilt the right way, at scale.

82%

NewPro Containers · Magento → Shopify PlusA full Magento to Shopify Plus wholesale replatform: support tickets down 82%, with "0 data migration issues" listed among the solved challenges and the full migration completed in two months. The lead anchor: a public, named, hard-metric, same-source Magento move, the exact shape of this project.

44%

Mobile order completion up 44% on the same NewPro replatform, alongside 60% faster loads and a 3.2x B2B reorder rate.

0

NewPro · data migration issuesZero data-migration issues, full migration in two months. The migration safety and speed metric, not an outcome stat to take on faith.

60,000+ SKUs

Wire America / DWC · Shopify Plus B2B100% of SKUs structured, attributed and imported. We architected the data model, product discovery, pricing logic and quoting workflows from the ground up. The closest B2B migration-integrity proof.

Signed

A national convenience and telecom brand's Magento to Shopify replatform, plus a legacy-to-Plus move on JC Perreault. The replatform pattern, proven repeatedly.

The honest gap

NewPro is a public, named, same-source Magento to Shopify Plus case. What no case proves with a number is kept rankings, so for the buyer's number-one fear the data-migration map and the six-gate redirect method are the substitute proof: migration integrity you can count.

Frequently asked questions

The questions every Magento merchant asks first.

Answered the way we would answer them on a call, with the honest caveats included rather than buried.

01How hard is it to migrate from Magento to Shopify?+
Magento is one of the more complex platforms to migrate from, rated three to four times the effort of a WooCommerce move, because of its EAV attribute model, six product types, and B2B structure. None of that makes it risky when it is run as a staged, reconciled project: the complexity is known up front and handled as line items, not discovered at launch.
02What data actually migrates from Magento?+
Products and configurables, customers with their store credit, customer groups as tags, historical orders linked by SKU, content pages, and B2B companies all migrate. Passwords never migrate, so every customer receives an account-activation invite at launch, and Shopify's own first-party importer does not accept Magento as a source, so everything richer than a CSV runs through a built pipeline.
03Will I lose my SEO and rankings?+
Shopify forces fixed URL patterns (/products/, /collections/) with no .html suffix, so for a mature Magento store nearly every URL changes and a complete 301 redirect map is mandatory. Built from a live crawl reconciled against the url_rewrite table, mapped one-to-one, and loaded before launch, it preserves your rankings; 301s do not lose PageRank. Expect a short re-crawl window, then recovery.
04How do the 301 redirects work from Magento's .html URLs?+
Every old Magento .html and category-path URL gets a permanent 301 to its Shopify equivalent, with no chains and no many-to-one mass redirects, which read as soft-404s. We collapse Magento's historical url_rewrite chains rather than stacking on top, and we emit clean self-referencing canonicals so Shopify's /collections/.../products/ path does not re-create a duplicate-content problem. Shopify Plus holds up to 20,000,000 redirects.
05What happens to my Magento extensions and customizations?+
Magento PHP extensions do not port, but the capability does. Each extension is audited and re-expressed as a Shopify app, a Function, a metaobject, or the Admin API, or dropped if it is no longer needed. Most features survive the move; the code does not, and the result is upgrade-safe rather than tied to a patch cadence.
06Do I need an agency, or can a migration app do it?+
A migration app moves products, collections, customers, and orders. It does not move the theme, custom extensions, B2B shared catalogs and price lists, negotiable quotes, or a complete 301 redirect map, which is where migration projects actually fail. Shopify itself ranks hiring a Partner and a custom API above apps, and its importer cannot ingest Magento. The app is a component, not the plan.

Bring your store URL and your last Magento upgrade or license quote. We'll crawl it and walk you the real scope.

A real conversation about your catalog, your attribute sets, your B2B pricing logic, your indexed URLs, and the cutover window, not a templated importer run.

Still comparing? Read Magento vs Shopify (the deep-dive guide) ->
magento / migration