# Magento to Shopify Migration Without Losing Rankings

Source: https://www.smartecomseo.com/blog/magento-to-shopify-seo/  
Published: 2026-09-16  
Updated: 2026-09-29

How to move from Magento or Adobe Commerce to Shopify with your rankings intact: the url_rewrite table, redirect counts, category copy in CMS blocks, layered navigation and store views.

## Key takeaways

- Magento's url_rewrite table is the best source for a Magento to Shopify URL map: it holds every live URL and every historic 301, by product, category and store view.
- Shopify allows 100,000 URL redirects, or 20,000,000 on Plus. A Magento store with category paths, several store views and years of URL key changes can come close to the lower limit.
- Point Magento's old 301s straight at the final Shopify URL, not at the Magento URL they used to redirect to. That is how you avoid redirect chains.
- Category copy stored in Magento CMS blocks is not in a normal category export, and losing it is one of the most common causes of collection ranking drops after a Magento move.
- Adobe's lifecycle policy ended standard support for Adobe Commerce 2.4.6 on August 11, 2026, with extended support running to August 31, 2027.

Magento stores arrive at Shopify with the most complicated URL history of any platform we migrate. Years of category paths, `.html` suffixes, store views, layered navigation parameters and system URLs, plus a table of historic redirects the old team forgot existed. None of that is a reason to stay. It's a reason to plan a Magento to Shopify migration properly.

The timing pressure is real. Adobe's lifecycle policy puts the end of standard support for Adobe Commerce 2.4.6 at August 11, 2026, with extended support to August 31, 2027, and standard support for 2.4.7 ends May 31, 2027. Magento 1 lost official support back in June 2020. Many brands are choosing between an expensive upgrade and a replatform right now.

This guide covers what's specific to Magento and Adobe Commerce. For the general process, use the [Shopify migration SEO checklist](/blog/shopify-migration-seo-checklist/).

> **Check your own version:** Adobe publishes support dates per release line, and Magento Open Source doesn't always get the same extended support as Adobe Commerce. Check Adobe's lifecycle policy for your exact version before you set a deadline.

## Magento URL patterns and where they go

Magento builds URLs from the settings under **Stores > Configuration > Catalog > Catalog > Search Engine Optimization**: the product and category URL suffix (`.html` by default), whether product URLs include the category path, and whether a permanent redirect is created when a URL key changes. Look at these settings first. They tell you how many URL versions of each product exist.

| Magento URL type | Example | Shopify destination |
| --- | --- | --- |
| Product, no category path | `/walnut-dining-table.html` | `/products/walnut-dining-table` |
| Product, with category path | `/furniture/dining/walnut-dining-table.html` | `/products/walnut-dining-table` |
| Category | `/furniture/dining.html` | `/collections/dining-tables` |
| Subcategory | `/furniture/dining/extendable.html` | `/collections/extendable-dining-tables` |
| System product URL | `/catalog/product/view/id/4412` | `/products/walnut-dining-table` |
| System category URL | `/catalog/category/view/id/38` | `/collections/dining-tables` |
| Store view prefix | `/de/furniture/dining.html` | The German market URL for `/collections/dining-tables` |
| CMS page | `/delivery-information` | `/pages/delivery-information` |
| Blog (extension) | `/blog/choosing-a-dining-table.html` | `/blogs/guides/choosing-a-dining-table` |
| Layered navigation | `/furniture/dining.html?color=49&material=112` | Usually none (see below) |
| Sorting and pagination | `?product_list_order=price`, `?p=2` | None |
| Product review list | `/review/product/list/id/4412/` | The product |
| Search results | `/catalogsearch/result/?q=walnut` | None |

When "Use Categories Path for Product URLs" is on, a product in three categories has three category-path URLs plus the short one. Multiply by store views and years of URL key changes and the list gets long fast.

## Export the url_rewrite table

Magento 2 keeps every URL it knows in the `url_rewrite` table: the requested path, the internal target, the redirect type, the entity type (product, category or CMS page), the entity ID and the store. That includes the historic 301s Magento created each time someone changed a URL key.

That makes it the best starting point for your map, better than any crawl. Ask your developer for an export:

```text
SELECT request_path, target_path, redirect_type,
       entity_type, entity_id, store_id
FROM url_rewrite
WHERE entity_type IN ('product', 'category', 'cms-page')
ORDER BY entity_type, entity_id, store_id;
```

How to use it:

1. **Rows with ****`redirect_type = 0`** are live URLs. Each one maps to the Shopify URL for its `entity_id`.
2. **Rows with ****`redirect_type = 301`** are old URLs that already redirect. Point them straight at the final Shopify URL, not at the Magento URL they used to redirect to. That's how you avoid chains.
3. **Join ****`entity_id`**** to your product and category exports** (SKU, URL key) so every row gets its Shopify handle automatically.
4. **Merge in Search Console, analytics and backlink URLs** to catch parameter URLs and anything the table doesn't hold.

## Count your redirects before you pick a plan

Shopify allows up to 100,000 URL redirects per store, or 20,000,000 on Shopify Plus. Magento catalogs can get close to the first number.

An illustrative example: 4,000 products, category paths on, two categories per product on average, three store views.

| URL source | Count |
| --- | --- |
| Short product URLs (4,000 × 3 store views) | 12,000 |
| Category-path product URLs (4,000 × 2 × 3) | 24,000 |
| Category URLs (300 × 3) | 900 |
| Historic 301s from URL key changes | 15,000 to 60,000 |
| CMS, blog and system URLs with traffic | 2,000 |
| **Total** | **roughly 54,000 to 99,000** |

That's close to the ceiling on a standard plan. You have two choices. Prioritize: every live product, category and CMS URL, plus every old URL with traffic, links, rankings or revenue. Or move to [Shopify Plus](/shopify-plus-seo/). Shopify also says a redirect applies across market subfolders automatically, so if your Shopify subfolders match your Magento store codes you may not need a row per language. Test that on your own Markets setup before you count on it.

## Rebuild the catalog, not just the URLs

Magento's product model doesn't map one-to-one onto Shopify's.

| Magento concept | Shopify equivalent | SEO decision |
| --- | --- | --- |
| Configurable product | Product with variants | Up to three options and 2,048 variants. Redirect the configurable URL. |
| Simple products visible on their own | Separate products, or variants of one product | If simples had their own URLs and rankings (common for colors), decide per product. Merging means redirects; keeping means unique copy. |
| Bundle and grouped products | A bundles app, or a product linking its components | Make sure the old bundle URL lands somewhere useful. |
| Attribute sets | Metafields | Specs like dimensions and weight move to metafields and power filters. |
| Layered navigation | Search & Discovery filters | Filter URLs change format. Map only the valuable ones. |
| CMS blocks on category pages | Collection description or theme sections | Copy them over by hand. |
| Customer groups and tier prices | B2B catalogs | Keep wholesale-only pages out of the index. |

Two of these cause most of the ranking losses we see.

**CMS blocks on categories.** Magento categories with the display mode "Static block and products" show content from a CMS block. That copy isn't in the category's description field, so migration tools often skip it. The category loses its 500 words of buying advice, and the new collection slides a few weeks later.

**Layered navigation pages that ranked.** Some Magento stores made filter pages indexable, often with an SEO extension that gave them clean paths like `/sofas/leather/black.html`. If one of those ranks for "black leather sofa", the right Shopify destination is a real collection with that name, not a filter URL. Build the collection, write the copy, redirect the old URL. Our guide to [faceted navigation on Shopify](/blog/shopify-faceted-navigation-seo/) covers which filter pages deserve to exist.

## Flatten the category tree without flattening relevance

Shopify collections are flat: `/collections/extendable-dining-tables`, never `/collections/furniture/dining/extendable`. The hierarchy survives in menus, breadcrumbs and internal links, not in the URL. That's fine for rankings, as long as the handle still says what the page is. Our guide to [Shopify URL structure](/blog/shopify-url-structure/) covers how we name handles.

Rules we use:

- One collection per Magento category that had traffic, with the same or better copy.
- Handles that describe the page on their own: `extendable-dining-tables`, not `extendable`.
- Unique handles across the catalog. Magento happily serves `/dining/tables.html` and `/office/tables.html`. Shopify can't have two `tables` collections.
- Breadcrumbs and parent collection links in the theme, so the old hierarchy still shows to shoppers and crawlers.

## Store views, languages and hreflang

Many Magento stores run a store view per language, with store codes in the URL and an extension for hreflang, since Magento doesn't output it out of the box. Shopify's version is Markets: one store, several markets, each on a subfolder or domain, with hreflang tags generated for you.

- Map each store view to a market, and each store view URL to the matching Shopify market URL.
- Import translations before launch, with Shopify's Translate & Adapt app or a translation app. A German subfolder full of English copy is a thin duplicate.
- If you ran separate Magento websites on country domains, you're consolidating domains too. That's a bigger move, and our [international SEO](/shopify-seo-services/international-seo/) team plans it as its own project.

**Leaving Magento before support runs out?** We export your url_rewrite table, count the redirects, rebuild category copy and hreflang, and watch rankings daily through launch. [See Magento migration SEO](/shopify-migration-seo/magento-to-shopify/)

## Getting the data out

Shopify's Store Migration app connects directly to several platforms, but Magento isn't among the direct connections Shopify lists. Most Magento moves use one of three routes:

1. **CSV exports** from Magento, reshaped into Shopify's product and customer CSV templates.
2. **Third-party migration apps** from the Shopify App Store that connect to Magento.
3. **A developer script** using the Shopify Admin API. For large catalogs with complex attributes, this is what we'd pick.

Whatever the route, import to a development store first and compare it with the old site page by page: titles, meta descriptions, descriptions, images with alt text, specs and reviews. Magento's meta title and meta description fields map to Shopify's SEO title and description. Check that they arrived, because tools handle them differently.

## Images and media URLs

Magento serves product images from paths like `/media/catalog/product/w/a/walnut-dining-table.jpg`, often with cache folders in between. For furniture, grills and other visual categories, Google Images can send real traffic to those files.

Check Search Console with the search type set to Image. If a handful of images carry clicks, redirect those files to the new Shopify image URLs, and keep descriptive file names and alt text when you upload the images to Shopify. Ignore the cache variants; there are too many of them and they rarely carry traffic on their own.

## Timeline for a mid-size Magento store

| When | Work |
| --- | --- |
| 12 to 10 weeks before launch | Benchmark rankings and revenue by landing page; export url_rewrite, Search Console and backlinks |
| 10 to 7 weeks before | Build the URL map; count redirects; decide on Plus; plan collections and handles |
| 7 to 4 weeks before | Test import; content parity checks; schema, hreflang and speed on the new theme |
| 4 to 1 weeks before | Redirect CSV finished and tested on the dev store; internal links rewritten |
| Launch week | Import redirects, crawl the old URL list, submit sitemaps, check Merchant Center |
| 1 to 12 weeks after | Daily, then weekly, checks against the benchmark |

Stores with tens of thousands of SKUs need longer. Our [large catalog SEO](/shopify-seo-services/large-catalog-seo/) work usually starts during the migration rather than after it.

## Magento migration mistakes we see

- **Mapping from a crawl alone.** The url_rewrite table and Search Console hold URLs no crawler will find.
- **Leaving historic 301s pointing at dead Magento paths.** Every old redirect must end at a final Shopify URL in one hop.
- **Losing CMS block copy on categories.** The most common cause of slow collection losses after a Magento move.
- **Trying to redirect every layered navigation URL.** Shopify warns that redirects from URLs with query strings might not work as expected, and most filter URLs never had traffic anyway.
- **Ignoring Shopify's own duplicates.** Collection-aware product URLs and market versions need canonical and internal link checks. See [Shopify duplicate content](/blog/shopify-duplicate-content/).

Magento gave you control and a maintenance bill. Shopify gives you less control and a simpler operation. A good migration keeps the rankings you built on the first while you move to the second. For the redirect mechanics in detail, read [Shopify redirects at scale](/blog/shopify-redirects-at-scale/), or talk to our [Shopify migration SEO](/shopify-migration-seo/) team.

## FAQs

### Is migrating from Magento to Shopify bad for SEO?

Not in itself. Rankings drop after Magento migrations when redirects are incomplete, when category copy stored in CMS blocks gets left behind, or when historic redirects create chains. Built from the url_rewrite table, Search Console and backlink data, with content carried over page by page, a Magento to Shopify move usually shows a short dip while Google recrawls, then settles.

### How do I redirect Magento .html URLs to Shopify?

Import a CSV into Shopify's URL redirects with the old path in Redirect from and the new Shopify path in Redirect to, for example /furniture/dining.html to /collections/dining-tables. Build the list from Magento's url_rewrite table so every category-path version and historic URL is included. Shopify only fires a redirect when the old path would otherwise return a 404, so test a sample after import.

### Do I need Shopify Plus to migrate from Magento?

Only if your redirect count is near Shopify's standard limit of 100,000, or you need Plus-only features. Plus raises the limit to 20,000,000. Count redirects early: live product and category URLs across store views plus historic 301s and URLs with traffic. Many mid-size Magento stores fit under 100,000 once low-value parameter URLs are left out.

### What happens to Magento layered navigation URLs on Shopify?

Most should simply stop existing. Parameter URLs such as ?color=49 rarely had search traffic, and Shopify warns that redirects from URLs with query strings might not work as expected. The exceptions are filter pages that ranked, often with clean URLs from an SEO extension. Rebuild those as real Shopify collections with their own copy and redirect the old URL there.

### How do Magento store views work on Shopify?

Shopify replaces store views with Markets. Each language or country becomes a market on a subfolder or domain, and Shopify generates hreflang tags for them. Map every store view URL to its matching market URL, import translations before launch, and check the hreflang output. Separate Magento websites on country domains are a bigger consolidation and need their own plan.