---
title: How to Build a WooCommerce to Shopify Redirect Map (and Import It)
date: 2026-07-09
description: WooCommerce and Shopify use different URL structures, so every product and category URL changes when you migrate. How to build the 301 redirect map that protects your search rankings, including the part Altera generates for you.
tags: ["Guides","Migration","SEO","Redirects"]
url: https://www.getaltera.com/blog/2026-07-09-woocommerce-to-shopify-redirect-map/
---


When you move from WooCommerce to Shopify, every product and category URL changes. WooCommerce lets you shape URLs however you like (`/shop/blue-widget/`, `/store/product/blue-widget/`, a flat `/blue-widget/`). Shopify does not. It puts products under `/products/`, collections under `/collections/`, and blog posts under `/blogs/`, and you cannot change those prefixes.

So the old URLs stop existing. Without redirects, every link Google has indexed, every link another site points at you with, and every bookmark a customer saved returns a 404. The rankings you built over years drain away in the weeks after launch, and the first month becomes a cleanup job instead of a launch.

A redirect map fixes this. It is a list of old URL to new URL pairs, imported into Shopify as 301 (permanent) redirects, so an old WooCommerce URL sends both visitors and search engines to the right Shopify page. This guide covers how to build that map, import it, and check it. It is part of the wider [WooCommerce to Shopify migration guide](/woocommerce-to-shopify-migration/).

## Why the URLs change

A quick look at what moves where, because the pattern drives the whole map:

| WooCommerce URL | Shopify URL |
|---|---|
| `/product/blue-widget/` | `/products/blue-widget` |
| `/product-category/widgets/` | `/collections/widgets` |
| `/product-category/widgets/blue/` | `/collections/blue` |
| `/?p=99` or `/blog/post-title/` | `/blogs/news/post-title` |

The slug usually survives (`blue-widget` stays `blue-widget`), but the prefix changes and the path flattens. Nested WooCommerce categories are the awkward case: WooCommerce nests them (`/product-category/widgets/blue/`), Shopify collections are flat (`/collections/blue`). The map has to flatten that nesting, so it does more than swap the prefix.

## Altera generates the product and category redirects for you

This is the part most migration write-ups tell you to do by hand with a crawler. You do not have to.

When Altera pulls your WooCommerce store, it builds a Redirects sheet from your product and category slugs as part of the migration. It reads the URL patterns directly, so the map covers:

- Every product URL (`/product/<slug>/ → /products/<slug>`)
- Every category URL, including nested parent chains, mapped to the right Shopify collection (`/product-category/parent/child/ → /collections/child`)
- Image URLs referenced inside product descriptions, so inline images that pointed at the old WooCommerce paths resolve after the move

The result is a Redirects sheet in the standard Shopify import format, with a column for the old path and a column for the new one:

| Redirect from | Redirect to |
|---|---|
| /product/blue-widget/ | /products/blue-widget |
| /product-category/widgets/ | /collections/widgets |
| /product-category/widgets/blue/ | /collections/blue |

You review this sheet like any other part of the migration, then import it. That covers the bulk of the URLs that carry your search rankings, the product and collection pages, without crawling anything.

<!-- TODO screenshot: the generated Redirects sheet open in a spreadsheet, showing Redirect from / Redirect to columns with product and nested-category rows -->
{{< figure src="/images/blog/woo-redirects-sheet.jpg" alt="The generated Redirects sheet with a Redirect from column and a Redirect to column, showing product and nested category URLs mapped to Shopify paths" caption="Altera builds the Redirects sheet from your WooCommerce product and category slugs, including nested categories." >}}

## When you still need to crawl

The generated map covers products and categories. It does not cover URLs that live outside that structure, because Altera reads your store data, not every page WordPress can serve. You fill those gaps with a crawler.

Run [Screaming Frog](https://www.screamingfrog.co.uk/seo-spider/) (or any site crawler) against your live WooCommerce site before you switch the domain, and export the full list of URLs. Compare it against the generated map and look for what is missing:

- **WordPress pages** that are not products or categories: an About page, a size guide, a landing page built in a page builder.
- **Custom permalinks** a previous owner set on individual posts or products that do not follow the default pattern.
- **Tag and attribute archive URLs** (`/product-tag/sale/`), if you had them indexed and want to preserve them.
- **Pagination and filter URLs** that picked up links or rankings.

For each one that matters, add a row to the Redirects sheet by hand, pointing it at the closest Shopify equivalent. A WordPress About page might map to a Shopify page; a tag archive might map to a collection.

You do not need to redirect everything. Prioritise. Pull your top landing pages from Google Search Console, sort by clicks, and make sure every high-traffic URL has a one-to-one redirect to the most relevant Shopify page. A long tail of zero-traffic URLs redirecting to the homepage is fine; your best pages deserve exact targets.

## Import the map into Shopify

The Redirects sheet imports through Altera like the rest of the migration. If you are moving the whole store, it travels in the same multi-sheet file and imports in order. If you are only doing redirects, it imports on its own.

A few things to know about how Shopify handles redirects, so you set expectations correctly:

- **No wildcards or regex.** Shopify URL redirects are exact-match, one old path to one new path. If you are used to Apache `RewriteRule` patterns or WordPress redirect plugins that take regular expressions, that does not carry over. Each redirect is a literal pair, which is why the map can run to thousands of rows on a large store. The generated sheet handles that volume for you.
- **One redirect per source path.** A given old URL points at exactly one destination.
- **They take effect immediately** once imported, but only fire when someone actually requests the old URL.

## Common mistakes

- **Forgetting image URLs.** Inline description images that pointed at `yourstore.com/wp-content/uploads/...` will 404 once WordPress is gone. Altera includes redirects for these, but if you build the map by hand it is an easy set to miss.
- **Expecting wildcards to work.** Trying to redirect `/product-category/*` with a single rule. Shopify does not support it. Every category needs its own row, which is exactly what the generated map gives you.
- **Skipping the nested categories.** A hand-built map that swaps `/product-category/` for `/collections/` but keeps the nesting produces `/collections/widgets/blue`, which does not exist on Shopify. The destination has to be the flat `/collections/blue`.
- **Redirecting everything to the homepage.** It avoids the 404, but it tells search engines the old page's content is gone, and you lose the ranking. A soft 404 to the homepage is barely better than a hard 404. Map to the real equivalent page.

## After launch: monitor for 30 days

Once the domain points at Shopify, the redirects are live. Watch them for the first month:

- In **Google Search Console**, check the Pages report (formerly Coverage) for a spike in "Not found (404)" URLs. Each one is a missing redirect. Add it to a sheet and import the gap.
- Test a sample by hand: a top product, a deep nested category, a description image, a WordPress page you redirected. Confirm each lands on the right Shopify page with a 301, not a 302 or a 404.
- Watch your top landing pages in Search Console for the weeks after launch. A temporary dip during recrawl is normal; a sustained drop on a specific page usually means its redirect is wrong or missing.

## Where this fits

The redirect map protects the rankings your [product pages](/blog/2026-07-13-migrate-woocommerce-products-to-shopify/) already earned, so it is worth doing alongside the catalogue move rather than after. For the full sequence (products, customers, orders, redirects, and the order they import in), see the [WooCommerce to Shopify migration guide](/woocommerce-to-shopify-migration/).

