Skip to content

Shopify technical SEO: duplicate URLs, canonicals, product schema and speed

Published 7 October 20268 min readBy the SmoothSeen editorial team

Shopify technical SEO is mostly about not breaking what the platform already does: it generates the canonical, sitemap, robots.txt and SSL certificate, and its themes mark up products with structured data. What is left to you is watching for duplicate URLs created by themes and apps, hiding what you do not want indexed, managing redirects and keeping speed in check.

Key points

  • Shopify generates the canonical, sitemap, robots.txt and SSL certificate on its own; your job is not to break them with your theme or apps.
  • On the Dawn demo store, a product URL inside a collection returned a 301 to the /products/ URL on 9 October 2026, and sorted and filtered collections declared the plain collection as canonical.
  • The Dawn and Horizon themes mark up products with the structured_data filter, which outputs a ProductGroup for products with variants, without the variesBy property Google recommends.
  • There are three official ways to keep something out of search, with different side effects: Unlisted status, the seo.hidden metafield or a noindex tag in theme.liquid.
  • Shopify's web performance reports use real-visitor data at the 75th percentile and Google's thresholds: LCP 2.5 s, INP 200 ms and CLS 0.1.

To check it on your own site: Online shops

On this page

Shopify is a hosted ecommerce platform: you have no access to the server, so compression, HTTPS and headers are not yours to manage. You do control the theme (written in Liquid), the copy on every product and collection, the apps you install and, if you need to, robots.txt. This guide covers the technical side; which AI crawlers to let in and how to edit robots.txt is in the guide to Shopify robots.txt for AI crawlers, and what applies to every shop is in the guide to ecommerce SEO for Google and AI search.

What does Shopify do for you, and what is left to you?

Piece
Canonical
Does Shopify handle it?
Yes, on every page1
What is left to you
Make sure the theme prints canonical_url
Piece
Sitemap
Does Shopify handle it?
Yes, at /sitemap.xml, with products, collections, pages and blogs2
What is left to you
Submit it to Search Console
Piece
robots.txt
Does Shopify handle it?
Yes, generated
What is left to you
Only edit it with good reason
Piece
HTTPS
Does Shopify handle it?
Yes, SSL on by default1
What is left to you
Nothing
Piece
Title tag and meta description
Does Shopify handle it?
Generates defaults
What is left to you
Write them for each product and collection
Piece
Structured data
Does Shopify handle it?
Shopify's themes mark up products1
What is left to you
Avoid duplicates from apps
Piece
Redirects
Does Shopify handle it?
Only the ones you create
What is left to you
Create them when you delete or rename
Piece
Speed
Does Shopify handle it?
The platform
What is left to you
Theme, apps and images

You write a product's title tag and meta description under Products: open the product and, in the Search engine listing section, click the pencil icon to edit the Page title, Meta description and URL handle fields3. Shopify warns against changing the handle too often, because it changes the URL.

Why does Shopify create duplicate product URLs?

A product lives at /products/handle, but a theme can link to it inside a collection, at /collections/trainers/products/handle, using the Liquid within filter. Shopify's documentation warns that both URLs carry the same content and asks you to consider the SEO implications before using that filter4.

We checked current behaviour on the public demo store for the Dawn theme on 9 October 2026:

URL requested
/products/art-deco-cyclamen
Response
200
Canonical
The same URL
URL requested
/collections/all/products/art-deco-cyclamen
Response
301 to /products/art-deco-cyclamen
Canonical
(after the redirect) the /products/ one
URL requested
/products/art-deco-cyclamen?variant=1
Response
200
Canonical
/products/art-deco-cyclamen
URL requested
/collections/all?sort_by=price-ascending
Response
200
Canonical
/collections/all
URL requested
/collections/all?filter.v.availability=1
Response
200
Canonical
/collections/all
URL requested
/collections/all?page=2
Response
200
Canonical
/collections/all?page=2

Shopify does not document that redirect, so check it on your own store with curl -I before relying on it. What you can check in the code: Dawn and Horizon, Shopify's free themes, link product cards with product.url, without within56. If your theme is older or from a third party, open a collection, view the source and look for links shaped like /collections/…/products/…. If you find them, replace within: collection with the plain URL in the product card.

Pagination does what Google asks: every page in the series is crawlable and declares itself as canonical7. Sorting and filters declare the plain collection, and the default robots.txt keeps out sort orders, tag filters with + and URLs with two or more filters8.

How do you hide a page or product from Google in Shopify?

Shopify documents three ways, and they do not do the same thing9:

Method
Unlisted status (products only)
Search engines and sitemap
Out
Storefront collections and recommendations
Out
Third-party channels
Out
Method
seo.hidden metafield set to 1
Search engines and sitemap
Out
Storefront collections and recommendations
Still shown
Third-party channels
Still shown
Method
noindex tag in theme.liquid
Search engines and sitemap
Out of the index
Storefront collections and recommendations
Still shown
Third-party channels
Unchanged

For a product that should only open from a direct link, Shopify recommends Unlisted status. For a page, blog post or product that should stay in the store, the seo.hidden metafield removes it from the sitemap and from search engines. The third route is a condition in theme.liquid that prints <meta name="robots" content="noindex"> by template or handle9. Do not use robots.txt for this: it blocks crawling, not indexing, and a blocked URL can still show up if other pages link to it.

What structured data do Shopify themes output?

Shopify has a Liquid filter, structured_data, that turns a product into schema.org markup: Product if it has no variants and ProductGroup if it has them10. Dawn and Horizon use it on the product template56. On the demo store, the markup for a product with variants contains the following (checked on 9 October 2026), set against what Google asks for variants and merchant listings1112:

Property
ProductGroup.name, description, brand, url
Dawn (demo)
Yes
Google
name required; the rest recommended
Property
productGroupID, hasVariant
Dawn (demo)
Yes
Google
Recommended
Property
variesBy
Dawn (demo)
No
Google
Recommended
Property
Variant: sku, gtin, image
Dawn (demo)
Yes
Google
A unique ID per variant
Property
Offer: price, priceCurrency, availability, url
Dawn (demo)
Yes
Google
Price and currency required
Property
aggregateRating
Dawn (demo)
No (depends on your reviews app)
Google
Recommended
Property
shippingDetails, hasMerchantReturnPolicy
Dawn (demo)
No
Google
Recommended

The base is sound. The two usual problems sit outside the theme: a reviews or SEO app that adds its own Product with different data, and a third-party theme that skips the filter and writes incomplete markup of its own. Count the application/ld+json blocks with a Product or ProductGroup in the source of a product page: there should be one. For shipping and returns, Google recommends declaring them once in your Organization markup12. More detail in the guide to product schema.

How do you manage redirects in Shopify?

Go to Content > Menus, click View URL redirects and then Create URL redirect, with the Redirect from and Redirect to fields13. Three limits worth knowing:

  1. They only work from broken URLs: if the old URL still loads a page, the redirect does not apply.
  2. You cannot redirect from fixed paths such as /products or /collections, nor from prefixes such as /cart, /orders or /apps.
  3. There is a cap of 100,000 redirects, except on Shopify Plus.

When you delete a product with traffic, redirect its URL to the closest product or to its collection. When you migrate from another platform, have the full list ready before the domain switch: Shopify lists missing redirects after a migration as one of the reasons a store does not show up in results14.

How do you measure and improve the speed of a Shopify store?

Shopify has web performance reports under Analytics > Reports, covering LCP, INP and CLS, and a summary of those metrics on the Online Store themes page. They use real-visitor data, the 75th percentile and the last 30 days, with up to 36 hours of delay; for data to appear, the store cannot be in private mode15. The thresholds match Google's: LCP of 2.5 s or less, INP of 200 ms or less and CLS of 0.1 or less16.

Since you do not touch the server, speed comes down to three things:

  1. Apps. Every app that adds scripts to the storefront weighs on every page. Uninstall the ones you do not use and check they leave no code behind in the theme.
  2. Images and video. Upload images at the size they are displayed and review what fills the visible part of each template, which is where LCP is measured. Shopify lists theme code, apps, images, videos, carousels and social media feeds among the features that can slow a store down17.
  3. Theme. A heavily customised theme, or one with sections you do not use, loads more than it needs.

Compare Shopify's reports with PageSpeed Insights, which publishes Chrome field data for your URL when there is enough traffic. The guide to Core Web Vitals for ecommerce explains how to prioritise.

How to check it

  • Duplicates: curl -I https://www.example.com/collections/all/products/a-product and see whether it returns a 301, and where to.
  • Canonical and noindex: Search Console URL Inspection on a product, a filtered collection and a hidden page.
  • Markup: the Rich Results Test on a product with variants.
  • Sitemap: submit sitemap.xml in Search Console; with international domains, one per domain2.

What SmoothSeen does with this

SmoothSeen analyses a product or collection page and checks what this guide configures: robots.txt, sitemap, canonical and noindex, product structured data, speed with real-user Core Web Vitals (or Lighthouse when there is no field data), HTTPS and headers. On the AI side it checks which crawlers your robots.txt allows, keeping search and training apart, and how much text arrives in the HTML without JavaScript.

What to do this week

View the source of a collection and search for /collections/…/products/ links; if there are any, change them in the product card. Then count the Product blocks on a product with variants and remove the app that duplicates the markup. To see the rest measured, analyse your online store with SmoothSeen.

Frequently asked questions

Can you remove /products/ or /collections/ from Shopify URLs?

No. They are fixed platform paths: you cannot even use them as the source of a redirect. What you do control is the handle after them, in the URL handle field of each product or collection. Pick a short, descriptive one when you create the product and avoid changing it later.

Do you need an SEO app on Shopify?

Not for the essentials. The canonical, sitemap, robots.txt and product markup come ready, and you write the title tag and meta description on each product. An app can help with bulk jobs, such as rewriting hundreds of descriptions, but check that it does not add a second Product markup or scripts that slow the store down.

Why does Search Console say «Indexed, though blocked by robots.txt»?

Because Google can index a URL it does not crawl if other pages link to it. Shopify explains that this is a normal message on stores using its default robots.txt, which blocks the cart, checkout and sorted or filtered collections, and that it is usually nothing to worry about. Only act if the blocked URL is one you actually want in the index.

Does Google index a Shopify store in private mode or on a trial?

No. With private mode on, Google cannot even read the sitemap, and Shopify states that search engines do not index trial stores. To verify the domain in Search Console you need to turn private mode off; if you are not ready to launch, you can turn it back on after verification.

Sources

  1. 1SEO overview, Shopify Help Center, accessed 7 October 2026.
  2. 2Finding and submitting your sitemap, Shopify Help Center, accessed 9 October 2026.
  3. 3Adding and updating products, Shopify Help Center, accessed 9 October 2026.
  4. 4within (Liquid filter), Shopify.dev, accessed 7 October 2026.
  5. 5Shopify/dawn: snippets/card-product.liquid and sections/main-product.liquid, official Shopify repository, accessed 7 October 2026.
  6. 6Shopify/horizon 4.2.0: snippets/product-card.liquid and sections/product-information.liquid, official Shopify repository, accessed 9 October 2026.
  7. 7Pagination, incremental page loading, and their impact on Google Search, Google Search Central, updated 10 December 2025.
  8. 8Editing robots.txt.liquid, Shopify Help Center, accessed 9 October 2026.
  9. 9Hiding a page from search engines, Shopify Help Center, accessed 7 October 2026.
  10. 10structured_data (Liquid filter), Shopify.dev, accessed 7 October 2026.
  11. 11Product variant structured data, Google Search Central, updated 8 September 2026.
  12. 12Merchant listing (Product, Offer) structured data, Google Search Central, updated 8 September 2026.
  13. 13Creating and managing URL redirects, Shopify Help Center, accessed 9 October 2026.
  14. 14Frequently asked questions about SEO, Shopify Help Center, accessed 7 October 2026.
  15. 15Web performance reports, Shopify Help Center, accessed 9 October 2026.
  16. 16Web Vitals, web.dev (Google), updated 31 October 2024.
  17. 17Online store web performance, Shopify Help Center, accessed 9 October 2026.

How to cite this article

SmoothSeen. (2026, October 7). Shopify technical SEO: duplicate URLs, canonicals, product schema and speed. https://smoothseen.com/en/blog/shopify-technical-seo/

Who writes this

SmoothSeen is a website audit tool that measures visibility in search engines and AI assistants and delivers reports under the agency's own brand.

This blog belongs to SmoothSeen: when an article discusses the product, it does so knowing the product is ours. Third-party figures link to their original source.

Change history

  • First version.

Keep reading

Shopify technical SEO: duplicates, schema and speed