Updated October 18, 2026

Shopify URL structure and how to redirect into it

Shopify's URL structure puts every product under /products/, every collection under /collections/, every page under /pages/ and every blog post under /blogs/. You can edit the handle at the end of each URL, but not the prefix, so most old URLs change when you move to Shopify and each one needs a redirect, added from Content > Menus > View URL Redirects or imported in bulk from a CSV.

Shopify calls /products and /collections fixed paths, and it won't let you redirect them or a handful of other reserved URLs. Those restrictions, and the way Shopify generates handles, decide what your redirect map can look like.

The URL patterns Shopify uses

Content Shopify URL Source
Home page / routes object
Product /products/{product-handle} Ajax Product API
Collection /collections/{collection-handle} URL redirects help page
All products /collections/all routes object
List of all collections /collections routes object
Page (About, Contact, policies) /pages/{page-handle} Liquid basics: handles
Blog /blogs/{blog-handle} blog object
Blog post /blogs/{blog-handle}/{article-handle} articles object
Product inside a collection /collections/{collection-handle}/products/{product-handle} within filter
Search /search routes object
Cart /cart routes object

Two consequences shape the whole redirect map:

  • Most old paths change. Shopify's own migration guide uses the example of example.com/policies/shipping-policy becoming example.com/pages/shipping-policy, and warns that links to individual pages on your old site likely won't load without redirects.
  • The same product can live at two URLs. A product is reachable at /products/{handle} and, when a theme links to it through a collection, at /collections/{collection}/products/{handle}. Shopify's docs point out that these are the same content on separate URLs and ask you to consider the search implications. Point your redirects at the /products/{handle} form, not the collection-scoped one.

How Shopify creates handles

The handle is the only part of a Shopify URL you control. Shopify generates it from the title, and the rules are:

  • Handles are always lowercase.
  • Spaces and special characters become hyphens. Runs of them collapse into one hyphen, and leading ones are dropped.
  • Handles must be unique. A second product titled Potion gets the handle potion-1.
  • Changing a title later does not change the handle.

That third rule breaks redirect maps built by slugifying titles in a spreadsheet. If your old catalog had two products with the same name, one of them is at -1 on Shopify, and a map that guessed the handle sends that URL to the wrong product. Build the "redirect to" column from the handles in the new store, not from the old titles.

The fourth rule matters if you clean up titles after import. The URLs keep the handles generated from the original titles until someone edits them by hand.

Mapping old URLs to Shopify

The old-side paths below are examples of common shapes, not any one platform's defaults. Check your own URLs before you copy a pattern. Coming from WordPress or WooCommerce? WordPress to Shopify redirects maps each WordPress URL type to its Shopify destination.

Old URL Shopify URL Note
/product/blue-mug/ /products/blue-mug Handle matches the old slug
/category/mugs/ /collections/mugs Category becomes a collection
/category/mugs/blue/ /collections/blue-mugs Collection URLs have one handle, so nested categories need a flattened handle
/about-us/ /pages/about-us
/policies/shipping-policy /pages/shipping-policy Shopify's own example
/blog/2024/05/glaze-guide/ /blogs/news/glaze-guide Date folders go away
/item.php?id=42 /products/blue-mug Query-string URLs: test first, see below
/blue-mug.html /products/blue-mug .html rule, see below

Map each old URL to the page that replaces it. Google's site-move guide says not to redirect many old URLs to one irrelevant destination such as the home page. The exception is consolidation: if several old pages were merged into one new page, they can all redirect there. Shopify lets you enter / as a redirect target, but using it as a catch-all for unmatched URLs is the pattern Google warns against.

URLs Shopify won't redirect

Shopify's URL redirect page lists these restrictions:

  • Only broken URLs redirect. A redirect works only when the "redirect from" URL returns a 404. If a live product, page or collection sits at that path, the page wins and the redirect never fires.
  • Reserved prefixes. URLs starting with /apps, /application, /cart, /carts, /orders, /services or /shop can't be redirected. If your old store kept products under /shop/..., create one test redirect before you build the map around those URLs.
  • Fixed paths. /products, /collections and /collections/all can't be redirected. Paths such as /collections/vendors, /collections/types, /a/, /community/ and /tools/ are also reserved.
  • Collection tag URLs. A URL like /collections/{collection}/{tag} filters a collection by tag and can't be redirected, even when no products carry that tag.
  • .html endings. A URL ending in .html can't redirect to the same URL without .html, because Shopify treats the two as one URL. The rule as written covers only that pair, so test one .html redirect to a different path, such as /blue-mug.html to /products/blue-mug, before you map the rest.
  • Query strings. Shopify says URLs with query strings "might not work as expected" as redirect sources. If your old site used URLs like ?id=42 or ?page_id=7, test a handful before you rely on them.

Redirecting a URL that is still live

Since redirects only fire on 404s, retiring a product or collection takes two steps. Setting a product to Draft, removing it from all sales channels, or hiding a collection makes its URL return a 404, and then a redirect from it will work. If you later set it back to visible, Shopify deletes the redirect automatically.

When you change a collection's handle, the admin offers a checkbox to create a redirect from the old URL to the new one. The same page warns against editing handles often, because the collection might stop showing in search results.

Market subfolders

Shopify's redirect page contradicts itself on market and language subfolders. One section says redirects don't automatically apply to all market subfolders, and another says they apply to all of them. If you sell through subfolders, test one redirect under each. You can create separate redirects per subfolder if the shared one doesn't carry over.

Adding the redirects

One at a time. In the admin, go to Content > Menus, click View URL Redirects, then Create URL redirect. Put the old path in "Redirect from" and the new one in "Redirect to". Use a relative path such as /products/blue-mug for targets on your primary domain and a full URL for anything outside it. Redirects start working immediately.

In bulk. From the URL redirects screen, choose Import, upload a CSV, review it, then confirm. Shopify's help page links a sample URL redirect CSV to use as a template, so fill in its columns instead of guessing the headers. You can also export your existing redirects to CSV from the same screen, which is useful for auditing them after launch.

From code. The Admin GraphQL API exposes a UrlRedirect object with a path (the old path) and a target (where visitors are sent), created with the urlRedirectCreate mutation. Use this if your redirect map comes out of a script.

Limits. A store can hold up to 100,000 redirects unless it is on the Plus plan, which allows up to 20,000,000, according to Shopify.

After launch

If you'd rather not build the spreadsheet by hand, RedirX starts from your old and new URL inventories, proposes a destination for each old URL, keeps every proposal in review until it is confirmed, and writes the approved map for your platform, Shopify included.