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
- What does Shopify do for you, and what is left to you?
- Why does Shopify create duplicate product URLs?
- How do you hide a page or product from Google in Shopify?
- What structured data do Shopify themes output?
- How do you manage redirects in Shopify?
- How do you measure and improve the speed of a Shopify store?
- How to check it
- What SmoothSeen does with this
- What to do this week
- Frequently asked questions
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.hiddenmetafield 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
namerequired; the rest recommended
- Property
productGroupID,hasVariant- Dawn (demo)
- Yes
- Recommended
- Property
variesBy- Dawn (demo)
- No
- Recommended
- Property
- Variant:
sku,gtin,image - Dawn (demo)
- Yes
- A unique ID per variant
- Property
- Offer:
price,priceCurrency,availability,url - Dawn (demo)
- Yes
- Price and currency required
- Property
aggregateRating- Dawn (demo)
- No (depends on your reviews app)
- Recommended
- Property
shippingDetails,hasMerchantReturnPolicy- Dawn (demo)
- No
- 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:
- They only work from broken URLs: if the old URL still loads a page, the redirect does not apply.
- You cannot redirect from fixed paths such as
/productsor/collections, nor from prefixes such as/cart,/ordersor/apps. - 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:
- 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.
- 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.
- 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-productand 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.xmlin 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
- 1SEO overview, Shopify Help Center, accessed 7 October 2026.
- 2Finding and submitting your sitemap, Shopify Help Center, accessed 9 October 2026.
- 3Adding and updating products, Shopify Help Center, accessed 9 October 2026.
- 4within (Liquid filter), Shopify.dev, accessed 7 October 2026.
- 5Shopify/dawn: snippets/card-product.liquid and sections/main-product.liquid, official Shopify repository, accessed 7 October 2026.
- 6Shopify/horizon 4.2.0: snippets/product-card.liquid and sections/product-information.liquid, official Shopify repository, accessed 9 October 2026.
- 7Pagination, incremental page loading, and their impact on Google Search, Google Search Central, updated 10 December 2025.
- 8Editing robots.txt.liquid, Shopify Help Center, accessed 9 October 2026.
- 9Hiding a page from search engines, Shopify Help Center, accessed 7 October 2026.
- 10structured_data (Liquid filter), Shopify.dev, accessed 7 October 2026.
- 11Product variant structured data, Google Search Central, updated 8 September 2026.
- 12Merchant listing (Product, Offer) structured data, Google Search Central, updated 8 September 2026.
- 13Creating and managing URL redirects, Shopify Help Center, accessed 9 October 2026.
- 14Frequently asked questions about SEO, Shopify Help Center, accessed 7 October 2026.
- 15Web performance reports, Shopify Help Center, accessed 9 October 2026.
- 16Web Vitals, web.dev (Google), updated 31 October 2024.
- 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/
Keep reading
E-commerce SEO for AI search: product and category pages that Google and ChatGPT understand
How to rank an online shop in Google and get products into ChatGPT: product pages, categories, Product schema, filters, speed, reviews and Merchant Center.
Core Web Vitals for e-commerce: what breaks LCP, INP and CLS on product and category pages
What breaks LCP, INP and CLS on an online shop's product and category pages, why you measure by template and which fixes to make first, with code.
How to track ChatGPT and AI traffic in GA4, and AI Overviews in Search Console
How to see ChatGPT, Gemini and Perplexity visits in GA4, what the AI Assistant channel is, and what Search Console shows for AI Overviews and AI Mode.