Shopify SEO: URLs, Duplicates, Speed and Apps
Shopify SEO is the work of getting a Shopify store’s collections and products crawled, indexed and chosen in search, within the limits the platform sets on URLs, robots rules and theme code. Shopify handles more of the technical basics than most platforms. The problems it creates are specific and repeatable, which means they are also fixable.
This guide is for Shopify merchants and the developers who work on their themes. It assumes you know the general principles of store SEO, which our ecommerce SEO guide covers, and focuses on what is different about Shopify: fixed paths, duplicate product URLs, robots.txt.liquid, theme and app speed, and structured data gaps.
On this page
- What Shopify handles for you, and what it doesn’t
- Why does Shopify create duplicate product URLs?
- Collections are your category pages
- robots.txt.liquid: when to edit it and when to leave it
- Are your theme and apps slowing the store down?
- Filling the schema gaps in Shopify themes
- Getting Shopify SEO right on your store
What Shopify handles for you, and what it doesn’t
Shopify automates canonical tags, the sitemap, robots.txt and basic product markup, but it fixes your URL structure and leaves theme quality and app weight to you.
According to Shopify’s own SEO overview, “auto-generated canonical tags are added to pages to prevent duplicate content from appearing in search results,” sitemap.xml and robots.txt are generated automatically, themes generate title tags that include your store name, and themes “automatically include schema markup for products.” SSL is on by default.
What you can’t change is the URL skeleton. Products live under /products/ and collections under /collections/. Shopify’s redirect documentation is explicit that you can’t redirect URLs that use the fixed paths /products, /collections and /collections/all. That matters most during a migration from another platform, where old category URLs have to map onto collection handles rather than keep their structure. Our website migration checklist covers the mapping work.
The good news is that the fixed prefix barely matters for rankings. Google’s SEO starter guide says keywords in the domain or URL path “alone have hardly any effect beyond appearing in breadcrumbs.” Spend your effort on the handle after the prefix being short and descriptive, and on the problems below, which do matter.
Why does Shopify create duplicate product URLs?
Shopify creates duplicate product URLs when a theme links to products “within” a collection, producing a second address like /collections/mens/products/boot for the same page as /products/boot.
The cause is a Liquid filter. Shopify’s developer documentation for the within filter says it “generates a product URL within the context of the provided collection,” and adds a warning: “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.” Many themes use it on collection grids so the breadcrumb can show which collection a shopper came from.
Shopify’s auto-generated canonical tags exist to consolidate exactly this kind of duplicate, so it is rarely an indexing disaster. It is still waste. Every collection a product sits in, including /collections/all, can add another crawlable URL, and your internal links, the strongest signal you control, point at the non-canonical versions. Canonicals are hints; consistent internal linking is what makes them stick. The diagram below shows the pattern.
Scroll the diagram sideways to see all of it.
The fix is a small theme edit: remove | within: collection from the product card snippet so links go straight to /products/handle. Check the change in a duplicate theme first, and crawl the store afterward to confirm collection grids now link to canonical URLs. Our canonical tag guide explains why the tag alone isn’t enough.
Collections are your category pages
Collections do the job of category pages on Shopify, so they need the same treatment: a descriptive title, a unique introduction, and a clean way to filter that doesn’t flood the index.
Most Shopify stores leave the collection description empty or put three sentences under a hundred products where nobody sees them. Write a short intro that helps a shopper choose, place it above or beside the grid, and make the collection title match how people search for that range (“women’s waterproof hiking boots”, not “The Wanderer Edit”).
Filtering is where Shopify stores accumulate junk URLs. Shopify’s default robots.txt already disallows collection URLs that combine tags with a plus sign (/collections/*+*), which removes one large class of combinations. Filter and sort parameters from apps and newer storefront filtering can still create crawlable URLs. Check the Crawl stats and Pages reports in Search Console for parameterized collection URLs, then decide per filter whether it deserves an indexable page, using the decision tree in our ecommerce SEO guide.
Keep collection handles stable. When a seasonal collection ends, redirect its handle to the closest evergreen collection rather than deleting it, so any links it earned keep working.
robots.txt.liquid: when to edit it and when to leave it
Leave Shopify’s default robots.txt alone unless you have a specific, measured crawl problem it doesn’t cover. The default is sensible, and a mistake here can remove the store from search.
Shopify’s robots.txt help page calls the default file “optimal for Search Engine Optimization” and lists what it blocks, shown below. To change it you create a robots.txt.liquid template in the theme. Shopify’s warnings are unusually blunt: it is “an unsupported customization,” Shopify Support can’t help with edits, and “incorrect use of the feature can result in loss of all traffic.” Replacing the Liquid with plain text is “strongly not recommended” because the rules may go out of date.
Scroll the diagram sideways to see all of it.
Legitimate reasons to edit: blocking a filter parameter that an app generates at scale and that you’ve confirmed is being crawled heavily, or adding rules for specific AI crawlers if you’ve decided to limit them (our robots.txt for AI crawlers guide covers that trade-off). Use Liquid to append rules to Shopify’s defaults so their future updates still apply. And test before publishing: Google’s robots.txt documentation says it generally caches the file for up to 24 hours, so a bad rule can keep blocking pages for a day after you fix it.
Are your theme and apps slowing the store down?
Usually yes, and apps are the more common culprit, because each one can inject scripts and styles into every page whether or not that page uses the feature.
Shopify sets a floor for its own marketplace. Its Theme Store requirements say themes “must have a minimum average Lighthouse performance score of 60 across the theme’s product, collection, and home page, for both desktop and mobile,” plus an average accessibility score of 90. A score of 60 is a pass mark for a clean theme with demo content, not a target for a live store with a dozen apps.
To measure app impact, Shopify’s storefront performance documentation compares Lighthouse scores before and after an app is installed, weighting collection pages at 43%, product pages at 40% and the home page at 17%, as shown below. The weighting is a useful hint about where your own testing should focus: collection and product templates carry most of the load.
Scroll the diagram sideways to see all of it.
A practical app audit:
- List every installed app and what it does. Uninstall the ones nobody can justify.
- After uninstalling, check the theme code for leftover snippets; some apps leave script tags behind.
- Test collection and product templates in PageSpeed Insights before and after each change, and watch field data in Search Console’s Core Web Vitals report. Google’s Web Vitals thresholds for “good” are a Largest Contentful Paint within 2.5 seconds and an Interaction to Next Paint of 200 ms or less.
- Prefer apps that load only on the templates that need them.
Images are the other big lever: correct dimensions, modern formats and lazy loading below the fold. Our site speed optimization guide and Core Web Vitals explained cover the details.
Filling the schema gaps in Shopify themes
Shopify themes include basic product markup, but most leave out the shipping, returns, breadcrumb and organization data that Google now asks for. Check what your theme actually outputs before assuming it’s complete.
Google’s Product structured data documentation recommends adding shipping costs and return policy information, and says “providing both structured data on web pages and a Merchant Center feed maximizes your eligibility.” Themes vary widely in what they emit, and review apps often add their own separate Product block, which can leave you with two conflicting Product entities on one page.
Run a product page through the Rich Results Test and look for:
- One Product entity, not two (theme plus review app).
- Offer data that matches the visible price and availability, including variant prices.
- Shipping and return details, or a Merchant Center configuration that supplies them.
- BreadcrumbList on products and collections; see our breadcrumb schema guide.
- Organization markup on the home page with your logo and sameAs profiles.
Extending schema usually means editing the theme’s JSON-LD snippet or adding a metafield-driven block. Our product schema guide has complete examples.
AI shopping surfaces are one area where Shopify merchants start ahead. OpenAI’s help article on shopping with ChatGPT says product data for Shopify merchants “is already integrated into ChatGPT through Shopify Catalog.” That makes your product titles, descriptions and variant data the copy an AI assistant reads, so the same accuracy rules apply; more in our guide to ChatGPT shopping.
Getting Shopify SEO right on your store
Shopify SEO comes down to a short list of platform fixes, done once, followed by the ordinary work of good collection pages and product content.
The one-off fixes, in order:
| Fix | Where | Effort |
|---|---|---|
Remove within: collection from product card links | Theme snippet | An hour, plus testing |
| Audit and remove unused apps and leftover code | Apps admin and theme | Half a day |
| Deduplicate Product markup and add shipping, returns, breadcrumbs | Theme JSON-LD | A day |
| Write collection titles and intros for real queries | Admin | Ongoing, top collections first |
| Check parameter URLs in Search Console | Search Console | An hour a month |
After that, the work is the same as any store: category copy, original product descriptions, buying guides and links. If your theme has accumulated years of app residue and custom code, a rebuild on a lean theme is sometimes cheaper than repairs; that’s the kind of decision our web development service helps stores make with real numbers rather than guesses.
Frequently asked questions
Is Shopify good for SEO?
Yes, for most stores. Shopify generates canonical tags, an XML sitemap and a sensible robots.txt automatically, and its themes include product markup. Its limits are structural: fixed URL prefixes, duplicate product URLs created by some themes, and speed lost to apps. All of them can be managed.
Can I change the /products/ and /collections/ URLs on Shopify?
No. Shopify uses fixed paths for products and collections, and its help center says you can't create redirects for URLs that use those fixed paths. You can still change the handle that comes after the prefix.
What is the best SEO tool for Shopify?
Start with the free tools that show what Google sees: Google Search Console for indexing and queries, and Lighthouse or PageSpeed Insights for speed. Apps help with bulk editing titles, alt text and redirects, but every app you install can add scripts, so test speed before and after.
How much does Shopify SEO cost?
It ranges from nothing but your time to a monthly retainer. Many fixes on this page are one-off theme edits: removing the collection-scoped product links, cleaning up apps, and adding missing structured data. Ongoing costs come from content, category copy and link earning, which scale with how competitive your products are.
Should I edit robots.txt.liquid on Shopify?
Only if you have a specific crawl problem the default file doesn't solve, and only with someone who understands robots rules. Shopify calls it an unsupported customization and warns that incorrect use can result in loss of all traffic. Most stores never need to touch it.
Can I do Shopify SEO myself?
Yes. Titles, meta descriptions, product copy, alt text, collection descriptions and redirects are all editable in the admin. The parts that usually need a developer are theme code changes, such as fixing collection-scoped product links, trimming app scripts and extending structured data.