SEO · Guide
Shopify URL structure: the complete map and what to index, merge or block
Quick summary — Shopify URL Structure: The Complete Map for SEO
- Author:
- Misha Gavura
- Published:
- Reading time:
- 10 min
- Views:
- 0
- Likes:
- 0
- Summary
- Shopify fixes the URL prefixes (/products/, /collections/, /pages/, /blogs/), so your structure comes from how collections are organised and which auto-generated URLs you let Google index. Index products and collections, point internal links at /products/ URLs, and treat tag, filter and vendor pages as duplicates unless you give them real content. Shopify's default robots.txt blocks sort orders, tag combinations and multi-filter URLs, but not single tags or a single filter.
In this article · 7 sections
The short answer
You cannot redesign Shopify's URLs, and you do not need to. Shopify locks every page type behind a fixed prefix: /products/ for products, /collections/ for categories, /pages/ for static pages and /blogs/ for articles. What you control is which collections exist, how they link to each other, and which of the many URLs Shopify generates automatically you let Google index.
That second part is where most stores lose rankings. A store with 300 products can easily expose several thousand crawlable URLs: products inside every collection, every tag view, every filter combination. Most of them are duplicates. Google spends its time on them instead of on the pages that sell.
- Index: products, collections, blog articles, and pages that answer something.
- Point internal links at: /products/{handle}, never /collections/{collection}/products/{handle}.
- Treat as duplicates: tag pages, filter URLs, sort orders, /collections/all and the vendor and type pages, unless you deliberately turn one into a real landing page.
What Shopify decides for you
Before planning anything, it helps to know which parts are fixed. None of these can be changed on a standard Shopify theme. Only a headless storefront, which renders its own URLs, gets around them.
| Page type | URL format | Can you change it? |
|---|---|---|
| Product | /products/{handle} | Only the handle |
| Collection (category) | /collections/{handle} | Only the handle |
| Page | /pages/{handle} | Only the handle |
| Blog article | /blogs/{blog}/{article} | Blog and article handles |
| Market or language | /fr/..., /en-us/... | Set by Shopify Markets, with hreflang added for you |
The handle is the last part of the URL, and it is the one thing you fully own. Keep handles short, lowercase and descriptive: /collections/espresso-beans, not /collections/new-collection-2 or /collections/espresso-coffee-beans-best-quality-2024.
The complete Shopify URL map
This is every URL pattern a typical Shopify store produces, with what Shopify does by default and what we recommend. The robots.txt behaviour was checked against the default robots.txt served by live Shopify stores in September 2026.
| URL pattern | Index it? | Shopify default | What to do |
|---|---|---|---|
| /products/{handle} | Yes | Indexable, self-canonical | The only product URL to link to, list in feeds and put in the sitemap |
| /collections/{collection}/products/{handle} | No | Crawlable, canonical points to /products/{handle} | Change product-card links in the theme to the /products/ URL |
| /collections/{handle} | Yes | Indexable, in the sitemap | Your category pages. Give each an intro, FAQ and links to related collections |
| /collections/{collection}/{tag} | Usually no | Indexable. Only tag combinations with + are blocked | Keep only tags with real search demand and their own copy; noindex the rest |
| /collections/{collection}?filter.v.* | No | One filter is crawlable; two or more are blocked | Block filter parameters, or build a proper collection for the filters people search for |
| /collections/{collection}?sort_by=* | No | Blocked by robots.txt | Nothing to do |
| /products/{handle}?variant={id} | No | Canonical points to the product | Nothing to do; keep variants on one product page |
| /collections/all | Usually no | Crawlable, lists every product | Noindex, or remove internal links to it |
| /collections/vendors?q=, /collections/types?q= | No | Auto-generated and crawlable | Do not link to them; noindex if they get indexed |
| /search, /cart, /account, /policies/ | No | Blocked by robots.txt | Nothing to do |
| /blogs/{blog}/{article} | Yes | Indexable; tag combinations blocked | Link each article to the collection it supports, and back |
The five duplicate-content traps
1. Product links that include the collection
Many themes, especially older ones, link product cards to /collections/shirts/products/linen-shirt instead of /products/linen-shirt. Shopify adds a canonical tag pointing to the clean URL, so this is not a disaster, but every product now has as many URLs as it has collections, and Google crawls all of them. Fixing it is a small theme change: product cards should use the plain product URL.
2. Tag pages
Every product tag creates a filtered view like /collections/shirts/linen. Shopify's default robots.txt blocks combinations of tags (URLs with a +), but a single tag is crawlable and indexable. A handful of tag pages with real demand can be useful landing pages. Hundreds of thin ones, created because tags are also used for internal admin, are pure duplicates.
3. Filter URLs
Shopify's Search & Discovery filters add parameters like ?filter.v.availability=1 or ?filter.p.product_type=boots. The default robots.txt only blocks URLs with two or more filters, so every single-filter URL stays crawlable. If people genuinely search for a filtered set, such as waterproof hiking boots, build it as its own collection with its own copy. Block the rest.
4. /collections/all, vendors and types
Shopify creates a collection of every product, plus automatic pages for each vendor and product type. They duplicate your real collections with no copy of their own. Most stores should never link to them.
5. Handles that change without a redirect
When you edit a handle in the Shopify admin, there is a checkbox to create a URL redirect from the old address. If it is unticked, every link and ranking the old URL earned now points at a 404. Leave it ticked, and after a bulk rename or a migration to Shopify, check the URL redirects list in your Shopify admin.
The pattern behind all five: Shopify gives every product and collection several URLs, and it is your job to make sure internal links, sitemaps and feeds only ever point at one of them.
How to design your collection tree
Shopify has no nested collections. There is no /collections/coffee/espresso. Hierarchy comes from your navigation menus, breadcrumbs and internal links, not from the URL. That is fine. Flat URLs with a clear linking structure rank perfectly well.
Here is a worked example for a coffee store with about 60 products. The goal is that every product is at most three clicks from the homepage, and every collection targets a search people actually make.
| Level | Example URL | Links to | Targets searches like |
|---|---|---|---|
| Home | / | Hub collections in the main menu | Brand name |
| Hub collection | /collections/coffee-beans | All coffee subcollections and bestsellers | coffee beans online |
| Subcollection | /collections/espresso-beans | Its products, sibling collections, one brewing guide | espresso beans |
| Subcollection | /collections/decaf-coffee | Its products, the hub, one guide | decaf coffee beans |
| Product | /products/house-espresso-blend | Its collection (breadcrumb), related products | house espresso blend |
| Guide | /blogs/guides/how-to-dial-in-espresso | The espresso collection and two products | how to dial in espresso |
Three rules make this work. Every collection gets 100 to 200 words of useful copy and a short FAQ, so it is more than a product grid. Every subcollection links back to its hub and across to its siblings. Every guide links to the collection it supports. If you want a system for deciding which collections to create in the first place, that is what a semantic keyword map is for.
How to fix it, step by step
- See what Google has indexed. Search site:yourstore.com/collections and site:yourstore.com/products in Google, and look at the Pages report in Search Console for URLs with parameters or tags.
- Crawl your store with a tool such as Screaming Frog (free up to 500 URLs) and count how many URLs exist per page type.
- Fix product-card links in the theme so they use the plain /products/ URL.
- Decide on tags and filters. Keep the few with real search demand as proper collections; add noindex to the rest, or block the parameters with a rule in robots.txt.liquid.
- Add copy and FAQs to collections, starting with the ones that already get impressions in Search Console.
- Check redirects and sitemaps after any rename. Only canonical URLs should appear in the sitemap and in your Google Merchant Center feed.
Editing robots.txt.liquid is safe when you add lines, but a wrong rule can hide whole sections of a store from Google. If you are not sure, get a site structure audit first, or have a developer review the change.
Common questions
Can I remove /products/ or /collections/ from Shopify URLs?
Not on a standard Shopify theme. The prefixes are fixed for every store. A headless storefront, where you build the front end yourself, can use any URL structure, but that is a large project and rarely worth it for SEO alone. Stores rank well with Shopify's prefixes.
Does the /collections/.../products/... URL hurt my SEO?
Not badly, because Shopify points its canonical tag at the clean /products/ URL. It does waste crawl budget and splits internal link signals across several addresses, so it is worth fixing in the theme, especially on larger catalogues.
Should I let Google index my tag pages?
Only the few that match real searches and have their own copy. Tags created for filtering or admin should not be indexed. When in doubt, a proper collection is a better landing page than a tag.
Will changing a product handle hurt my rankings?
Not if Shopify creates the redirect. Keep the redirect checkbox ticked when you edit a handle, and avoid renaming pages that already rank unless the new handle is clearly better.
How many clicks deep should my products be?
Aim for every product within three clicks of the homepage: home, collection, product. Deeper pages get crawled less often and collect less internal link value.
Keep reading
- Local SEO for Shopify Stores: How to Rank for “{Product} in {City}”10 min
- Why ChatGPT Recommends Your Competitor's Shopify Store (and How to Fix It)9 min
- The History of Search Engines: From Directories to AI Answers6 min
About the author
