Royking Niba

Shopify SEO: What the Platform Does for You, What It Won’t Let You Change, and the Collection URL Trap

· Royking Niba

Stock photograph of hands browsing a shopping website on a laptop. Illustrative only, not a specific store or a client site.

Shopify SEO is mostly about the decisions Shopify leaves to you, because the platform already generates the sitemap, the robots.txt file and a canonical tag on every page. What it does not decide for you is how your theme links to products, what goes in each title and description, which URLs you redirect when products change, and whether you edit robots.txt at all. The biggest technical trap is that the same product can live at more than one URL inside your collections. Below are Shopify’s and Google’s own words on each of these, a decision table of what is fixed and what you control, and a worked model of how fast duplicate product URLs multiply.

What Shopify already does for you

All quotes below are from Shopify’s help center and developer documentation, checked today, 9 October 2026. None of these pages shows a last-updated date, so check them again before acting on a detail.

  • Sitemap. Shopify’s generated sitemap “contains links to all your products, primary product image, pages, collections, and blog posts”, and “Sitemap files are automatically updated when you add a new webpage, product, collection, image, or blog post”. It sits at the root of your domain, at /sitemap.xml.
  • robots.txt. “Shopify generates a default robots.txt file that works for most stores.”
  • Canonical tags. Themes can output a canonical URL for any page with “the global Liquid canonical_url object”.
  • Titles and descriptions. By default your theme uses your shop name followed by the title of the content, and in the admin “You can enter up to 70 characters in the title.” Shopify recommends 160 characters for the meta description.

That default set is why a new Shopify store rarely has the crawl disasters a hand-built site can have. It is also why the remaining problems are easy to miss: they come from themes, apps and choices made later, not from the platform.

What is fixed, and what you control

This decision table is the quickest way to see where your time goes. The left column is the task, the middle is what Shopify fixes or provides, and the right is the part that is yours.

TaskFixed or provided by ShopifyWhat you control
URL structureProducts, collections, pages and blogs live under fixed path prefixes such as /products/ and /collections/The handle after the prefix, and whether old handles are redirected
SitemapGenerated and updated automaticallyWhich products and pages exist, and whether thin ones are published at all
robots.txtA default file for every storeWhether to replace it with a robots.txt.liquid template (rarely needed)
Canonical tagThe canonical_url Liquid objectWhether your theme outputs it, and whether internal links point at the canonical URL
Product links inside collectionsNothing; this is theme codeWhether the theme uses the within filter to build collection-scoped product URLs
Titles and meta descriptionsA default pattern from the shop name and content titleThe text of each one, up to 70 characters for titles
RedirectsA redirect manager, up to 100,000 redirects (20,000,000 on Plus)Creating them when you rename, merge or delete products

The collection URL trap

A Shopify product has its own URL under /products/. Many themes also link to it from collection pages with a longer URL that includes the collection, built with a Liquid filter called within. Shopify’s own documentation of that filter describes it as one that “Generates a product URL within the context of the provided collection”, and then warns:

Because a standard product page and a product page in the context of a collection have the same content on separate URLs, you should consider the SEO implications of using the within filter.

Shopify Liquid reference, within filter

That is Shopify telling you, in its own reference, that the filter creates duplicate URLs. If your theme outputs canonical_url, each collection-scoped URL should declare the /products/ version as its canonical, and Google’s guide to consolidating duplicate URLs, last updated 2026-07-10, calls a rel=”canonical” annotation “A strong signal that the specified URL should become canonical.” A strong signal is not the same as a crawl you never pay for. Every collection-scoped link is still a URL Googlebot can request, and the page Google keeps may not be the one you chose, which is how stores end up with the Search Console status explained in duplicate without user-selected canonical.

A worked model: how fast duplicates multiply

This is the original element of this post. Assumptions, stated so you can swap in your own numbers: a store with 400 products; each product sits in a set number of collections; the theme links to products from collection pages using within, so each product is reachable at one /products/ URL plus one collection-scoped URL per collection; tag-filtered and paginated collection pages are left out, so the real count would be higher.

Collections per productProduct URLs crawlableUnique product pagesDuplicate URLsShare of product URLs that are duplicates
180040040050.0%
21,20040080066.7%
31,6004001,20075.0%
42,0004001,60080.0%
52,4004002,00083.3%
Worked model with stated assumptions: 400 products, theme uses the within filter, no tag or pagination URLs counted.

At three collections per product, a common setup once a store has category, sale and new-in collections, 1,600 product URLs exist for 400 products and 75 percent of them are duplicates. Each extra collection a product joins adds another 400 URLs to the store. The fix is not in robots.txt: Google’s same guide says “Don’t use the robots.txt file for canonicalization purposes.” The fix is in the theme, by linking from collection pages straight to the /products/ URL so the duplicates are never linked in the first place. That turns a canonical tag from the thing holding the line into a backstop. The wider crawl effect of URL inflation is covered in my posts on crawl budget and faceted navigation, which is the same problem with filters instead of collections.

Editing robots.txt on Shopify

You can customise robots.txt by adding a template called robots.txt.liquid to your theme. Shopify is clear about the cost: “Adding the robots.txt.liquid template replaces Shopify’s generated robots.txt output.” Its documentation asks you to “save a copy of your current /robots.txt output and compare it with the rendered template output” before publishing, notes that the rendered template “doesn’t always match Shopify’s generated file exactly”, and says “it’s strongly recommended to use the provided Liquid objects whenever possible.”

My view: most stores never need this file. The legitimate reasons are narrow, such as blocking a specific crawler or disallowing an internal search parameter that is being crawled at scale. If you edit it, the general rules in robots.txt for SEO apply, above all that blocking a URL in robots.txt stops Google reading its canonical and noindex tags too.

Redirects when products change

Products get renamed, merged and discontinued, and every one of those changes can turn a ranking URL into a 404. Shopify’s redirect manager lets you redirect a broken URL to a live one, and its help page sets the ceiling: “You can create a maximum of 100,000 URL redirects”, or 20,000,000 on Plus. The same page also says you cannot redirect URLs that use the fixed Shopify paths /products, /collections and /collections/all, while its own worked example redirects a /products/ URL. Read that as a restriction on redirecting the bare path prefixes rather than individual product URLs, and test any redirect you create by loading the old URL.

If you are moving a store onto Shopify from another platform, redirect mapping is the step that decides whether traffic survives the move. The full process is in my SEO migration checklist.

International domains and Markets

Shopify’s sitemap help says that on the Basic plan or higher “you have sitemaps for every additional domain you’re using for international domains”, and gives one instruction worth following exactly: “If you have multiple domains and aren’t using them for international targeting, then make sure all domains redirect to your primary domain.” The hreflang and URL-structure decisions behind international stores are covered in international SEO and hreflang implementation.

Common Shopify SEO mistakes

  • Leaving the theme on within. The single biggest source of duplicate URLs on Shopify, and the fix is a template change.
  • Replacing robots.txt to fix duplicates. Google says not to use robots.txt for canonicalization, and a blocked URL cannot pass its canonical.
  • Renaming product handles without redirects. Every ranking product URL that changes needs a redirect to its new address.
  • Accepting default titles everywhere. Shop name plus product title is a starting point, not a title strategy.
  • Publishing every variant or empty collection. The sitemap lists what exists, so thin pages go straight into it.
  • Several storefront domains with no international purpose. Shopify’s own advice is to redirect them all to the primary domain.

If a Shopify store has already lost traffic and you are not sure whether the cause is technical or a Google penalty, the triage starts in my Google penalty recovery guide.

Related reading

Need help with your own site?

Tell me where it stands. I reply within a day, and the first look is free.

Send me a message

Goes straight to my inbox. I reply within a day.

Leave a Reply

Your email address will not be published. Required fields are marked *