One product, several URLs
With category paths turned on, Magento serves the same product at /oak-table.html and /furniture/tables/oak-table.html. Each version may hold links. All need a home.
Shopify-only SEO: the technical base, the collection pages that earn revenue, and the content and links that push them up.
See allGet your store cited when shoppers ask ChatGPT, Google AI Mode and Perplexity what to buy.
See allTwo kinds of brands: Western brands selling $1,000+ products, and Chinese brands selling to the West.
See allMagento stores tend to be large, old and full of URLs nobody remembers creating. That history is where your rankings live. We map all of it, including the rewrites Magento has been quietly adding for years, before a single product goes live on Shopify.
With category paths turned on, Magento serves the same product at /oak-table.html and /furniture/tables/oak-table.html. Each version may hold links. All need a home.
Every changed URL key can leave a permanent redirect in the url_rewrite table. Ignore it and old URLs that still receive links go to a 404.
Filter URLs like ?material=12 use attribute option IDs. Some were indexed and ranked. Shopify cannot redirect most query-string URLs reliably.
Child simple products set to visible in search have their own URLs. On Shopify they become variants, and the old child URLs need mapping to the parent.
Multi-language store views and separate country websites from one Magento install need a plan for Shopify Markets, hreflang and domains.
Specs, tier prices and attribute-driven blocks do not map to Shopify fields by default. Without metafields, product pages lose detail.
Magento 2 defaults with the .html suffix shown. Your suffix and category-path settings may differ; the crawl tells us which.
| Compare | Magento / Adobe Commerce | Shopify |
|---|---|---|
| Product | /oak-dining-table.html | /products/oak-dining-table |
| Product with category path | /furniture/tables/oak-dining-table.html | /products/oak-dining-table (one URL) |
| Category | /furniture/tables.html | /collections/dining-tables |
| Layered navigation | /furniture/tables.html?material=12 | Shopify filter parameters, canonical to the collection |
| CMS page | /about-us | /pages/about-us |
| System URL | /catalog/product/view/id/123 | /products/oak-dining-table |
| Store view | /de/tische.html | /de/collections/tische (Markets subfolder) |
| Site search | /catalogsearch/result/?q=oak | /search?q=oak (kept out of the index) |
We export the url_rewrite table, product and category URL keys, store view settings and attribute sets. A crawl alone misses rewrites that only links still use.
Search Console, analytics and backlink data tell us which URLs carry clicks and links, including filter URLs and old category paths.
Categories become keyword-led collections. Attributes that buyers filter on become metafields, so Shopify filters and product specs keep working.
Old rewrite chains are collapsed so each legacy URL jumps straight to its final Shopify URL in one hop.
Titles, meta, H1s, category copy, internal links and product schema compared old against new on the unpublished store.
Redirects imported, the old URL list crawled against the live store on day one, then weekly checks for 90 days.
Magento has been around long enough that many stores have been through Magento 1, a move to Magento 2 and several redesigns. Each left URLs behind.
Magento can create a permanent redirect every time a URL key changes. Over the years that becomes a chain: an old URL goes to a newer one, which goes to the current one. On Shopify we map every URL in that history straight to the final destination. Chains waste crawl budget and can lose signal at each hop.
Magento product and category URLs usually end in .html. Redirecting /oak-dining-table.html to /products/oak-dining-table works fine on Shopify. What Shopify will not do is redirect a URL ending in .html to the identical path without it, so we never plan redirects that depend on that.
Shopify's redirect tool treats query strings as unreliable. For layered navigation URLs that earned links or traffic, we point internal links and canonicals at the new collection and, where a filter deserves to rank on its own, we build it as a proper collection page with its own copy. That is usually better SEO than the filter page ever was.
Native Magento reviews need a database export or an extension before they can be imported into a Shopify review app. Customer records and orders migrate, but password hashes do not, so customers reset or use one-time code sign-in. Customer groups and tier pricing usually map to Shopify B2B catalogs on Plus. If wholesale buyers find you through search, our B2B SEO work covers that side.
If your Magento install serves several languages or countries, we decide early whether they become Shopify Markets subfolders, separate domains or expansion stores. The Shopify Plus migration page covers that choice in depth, and large catalog SEO covers what happens after launch when you have tens of thousands of SKUs.
Also see the migration SEO hub and Salesforce Commerce Cloud to Shopify if you are comparing enterprise exits.
Every URL in the url_rewrite table, scored for traffic and backlinks.
One hop from every legacy URL to its final Shopify URL.
Categories and filterable attributes mapped to Shopify structure.
Languages and countries mapped to Markets, domains and hreflang.
Titles, meta, content and schema compared page by page.
Weekly checks against your pre-launch baseline.
Often, yes. Magento stores tend to be older and larger, with category-path product URLs, layered navigation URLs and years of stored rewrites. That means more URLs that carry traffic or links. The risk is manageable with a database-level export and a complete, flattened redirect map, but it is not a job for a product CSV and a weekend.
No. Shopify URLs follow fixed patterns like /products/handle and /collections/handle without a file extension. Redirecting old .html URLs to their new Shopify paths works fine. The one thing Shopify cannot do is redirect a URL ending in .html to the same path without it, which is rarely needed in a replatform.
Filter URLs with query parameters cannot be redirected reliably in Shopify. If a filtered page earned real traffic, such as oak dining tables, we build it as its own Shopify collection with copy and a clean URL. Low-value filter URLs are left to canonical tags and internal links pointing at the main collection.
Usually as one Shopify store with Markets, using subfolders like /de/ or /fr/ or separate country domains, with hreflang handled by Shopify. Some brands need separate expansion stores instead. We decide based on catalog differences, pricing, language and where your rankings sit today, then map each store view accordingly.
For a mid-size catalog, plan six to ten weeks of SEO work before launch: audit, collection design, redirect map, parity checks and staging QA. Large catalogs with several store views take longer. Monitoring then runs for at least 90 days after launch, with reports at day 7, 30, 60 and 90.
Send us your domain. We will tell you how many legacy URLs your Magento store is carrying and which ones still matter.