Skip to main content
ShopifySEOGEOEcommerceProduct Page SEOTechnical SEO

Shopify SEO: Technical Fixes Checked on 6 Live Stores

On all six live Shopify stores we tested, collection-nested product URLs pointed their canonical at /products/handle. The platform covers that part. Thin collections, single-filter URLs and duplicate schema are still yours to fix.

CTO, Marketing Bar
Updated
19 min read
A frosted-glass slab etched with a glowing emerald hub-and-spoke node graph, evoking Shopify SEO site structure and organic ranking.

Shopify is not bad for SEO. On the six live Shopify stores we tested on October 26, 2026, the platform already did most of what technical SEO guides tell you to fix: every collection-nested product URL carried a canonical pointing to the clean /products/handle page, every filtered and sorted collection URL pointed its canonical at the bare collection, and every store served an auto-generated sitemap. What Shopify leaves to you is narrower: single-filter URLs that the default robots.txt does not block, collection pages with no copy, product schema that themes and apps can duplicate, and internal links and content that only appear after JavaScript runs.

This guide covers that list in fix order, with the test results behind it, then the content work on product and collection pages, schema, which tool shows which problem, and a realistic timeline.

TL;DR

Key takeaways

  • On 6 of 6 stores tested, a product reached through a collection (/collections/x/products/handle) returned 200 with a canonical to /products/handle, and ?utm_source= URLs canonicalized to the clean page. Your job is to check that a custom theme or app hasn't broken this.
  • Shopify's default robots.txt blocks sort URLs, tag combinations and URLs with two or more filters (/collections/*filter*&*filter*). A single-filter URL stays crawlable and relies on the canonical alone, which Google calls the weaker, slower control (Google Search Central).
  • Collection pages are usually the better ranking target for similar, non-signature products (Search Engine Journal). Most ship as a bare product grid.
  • Product structured data was in the server HTML on 4 of 6 product pages we fetched. One page carried two separate Product blocks: the theme-plus-app duplicate to look for.
  • "shopify seo" has 1,600 US searches a month and keyword difficulty 65 (DataForSEO Labs, October 2026). Technical and product-page fixes can show up in weeks. Plan on months for the head term.

Is Shopify bad for SEO?

No. The two Reddit threads in the top 8 for "shopify seo" (r/bigseo "How bad is Shopify for SEO?" and r/ecommerce "Does shopify do anything for SEO") show the worry is common. The platform's defaults are sound: HTTPS, auto-generated canonicals (Shopify: "Shopify themes automatically identify and determine the canonical version of a web page"), a sitemap that updates itself, and a robots.txt that already blocks the worst crawl traps.

The real limits are structural. The /products/, /collections/ and /pages/ prefixes are fixed: you can edit the handle after them, not the path itself. Shopify's own help center notes you can't even redirect URLs on those fixed paths (Shopify Help Center). The prefixes are SEO-neutral, so time spent fighting them is wasted. Spend it on the four jobs below.

What Shopify handles by default: six live stores tested

We fetched pages from six Shopify stores (Allbirds, Brooklinen, ColourPop, Kylie Cosmetics, Rothy's and Gymshark's Shopify storefront) and read the raw server HTML, without running JavaScript. A seventh store, Ruggable, contributed only its robots.txt.

CheckResultWhat it means for you
Product reached via a real collection, /collections/<c>/products/<handle>200 on 6 of 6, canonical → /products/<handle> on 6 of 6Duplicate URLs exist, and the canonical covers them. Verify it after every theme or app change
/collections/all/products/<handle>301 to /products/<handle> on 5 of 5 stores on their own domainNothing to fix
/products/<handle>?utm_source=testCanonical → clean /products/<handle> on 6 of 6Tracking parameters are handled
Collection with ?filter.v.availability=1&sort_by=price-ascendingCanonical → bare collection on 6 of 6Filter pages consolidate by canonical, not by blocking
Product links in the collection page's server HTMLNested /collections/<c>/products/ links on 0 of 6. Clean /products/ links on 5 of 6; Gymshark's had noneThese themes link the canonical URL. Content that only loads with JavaScript is a separate question
robots.txt blocks sort_by, + tag combinations, *filter*&*filter*7 of 7, 7 of 7, 6 of 7Single-filter URLs are not blocked by default
/sitemap.xml indexProduct, collection, page and blog child sitemaps on 6 of 6, plus a sitemap_agentic_discovery.xml child on 6 of 6The sitemap is automatic. Submit it once in Search Console
Product or ProductGroup JSON-LD in server HTML4 of 6. Two Product blocks on one pageCheck for missing or duplicated product schema

Fetched October 26, 2026 with curl and a desktop Chrome user agent; server HTML read without executing JavaScript. Product and collection handles came from each store's public /products.json and /collections.json. Stores: allbirds.com, brooklinen.com, colourpop.com, kyliecosmetics.com, rothys.com and Gymshark's Shopify storefront (us.checkout.gymshark.com, which gymshark.com product URLs redirect to). Ruggable is in the robots.txt count only: its product feed didn't return usable handles. Limits: six large, well-maintained brands are not a random sample of Shopify stores; results reflect one day; JSON-LD added by JavaScript after load isn't counted.

The pattern: Shopify solves URL duplication with canonicals, and a canonical is a hint, not a block. For duplicate product URLs that is enough once your internal links point at the canonical. Filter URLs are different: shoppers click them and themes link them, so Google keeps finding and crawling them.

The Shopify technical SEO fixes, in order

Technical fixes come first because content added to pages Google can't crawl or index efficiently is wasted. This is the order our technical SEO service follows on a Shopify audit.

Verify canonicals and internal links survive your theme and apps

The defaults worked on every store we tested, so this is a regression check, not a rebuild. Open a product through a collection and confirm the <link rel="canonical"> points to /products/handle. Then check that menus, collection tiles and related-product blocks link the /products/ URL. Themes that build product links with Liquid's within filter produce the nested path, and Shopify's own docs tell you to "consider the SEO implications" of it (Shopify Dev). Consistent internal links to the canonical URL reinforce it, and a custom section linking the nested path undercuts it. In Search Console, "Duplicate, Google chose different canonical" on product URLs is the symptom.

Decide which filter URLs should exist for Google

Shopify's default robots.txt blocks URLs with two or more filters and leaves single-filter URLs (/collections/dresses?filter.v.option.color=Red) open, with a canonical back to the collection. Google's guidance is that canonicals "may, over time, decrease the crawl volume" of such URLs and are "generally less effective in the long term" than a robots.txt disallow (Google Search Central, updated December 2025). On a catalog of a few hundred products this rarely matters. On thousands of products with a dozen filters, it can.

Edit robots.txt.liquid only with the Liquid objects

Shopify generates robots.txt by default and the robots.txt.liquid template overrides it. Shopify's developer docs recommend building on robots.default_groups rather than plain-text rules, note that the rendered output "doesn't always match the generated file exactly", and advise saving a copy of the current /robots.txt to compare before publishing (Shopify Dev). One thing we saw: the three stores whose robots.txt matched the generated default carried a new comment block addressed to AI shopping agents (pointing to /agents.md and a UCP endpoint). The four whose files differed from the default didn't. An override can drift from Shopify's defaults, so re-compare it with the generated file after Shopify changes them.

Submit the sitemap and leave it alone

Shopify generates /sitemap.xml with links to products, primary product images, pages, collections and blog posts, and updates it when you add any of them. With international domains, each domain gets its own sitemap, and a store in password (private) mode blocks Google from reading it (Shopify Help Center). Two of the six stores we checked sell into several markets, and their sitemap indexes list 27 and 36 sets of child sitemaps, one per market. All six now list sitemap_agentic_discovery.xml, which on the store we opened contains a single URL, /agents.md. Submit the index in Search Console. There is nothing to hand-edit.

Check what Google sees without JavaScript

On one of the six stores, the Shopify-hosted collection page returned no product links in its server HTML. Apps that inject reviews, descriptions or collection copy client-side can do the same to content you want indexed. Compare the page source with Search Console's URL Inspection "View crawled page" output. If descriptions, reviews or collection copy appear only in the rendered version, ask the app vendor for a server-rendered option.

Product page SEO

Product pages target long-tail queries with lower competition than category terms, so this is where on-page work tends to show first.

Add to the manufacturer's description. Every store selling the SKU starts with the same supplier copy. Ahrefs treats that copy as a foundation and points out a retailer is "in a great position… to offer more than what the manufacturer provides" (Ahrefs): who the product suits, how to choose a size or shade, what's in the box.

Group variants under one product. Use Shopify's variant structure rather than a separate product per color or size. Search Engine Journal's advice for near-identical products is to "add variant schema to your product pages vs. unique descriptions and content for each" (Search Engine Journal). Google's markup for this is ProductGroup with hasVariant and variesBy, and each variant must be selectable through its own URL, which Shopify's ?variant= parameter provides (Google Search Central). Three of the six product pages we fetched already emit ProductGroup.

Put real reviews in the HTML. Customer reviews add query-matching text to a page that's otherwise a description and photos, and they feed review data into structured data. They only count if Google sees them (step 5 above).

Fix the basics Shopify leaves at default. Title tag and meta description with the product's actual search terms, alt text that describes the product, and a clean handle. These are often left at whatever the product title and description produce.

Collection pages: where the category rankings are

Collection pages target the commercial category queries ("vitamin c serum", "wide-leg jeans"). Search Engine Journal's guidance: "Collection pages are the better solution to optimize when a lot of the products are the same," and "product pages do not need to rank on their own unless it is a signature product" (Search Engine Journal). Yet a default collection template renders a grid and little else.

Write collection copy that helps someone choose. What the category covers, how the options differ, and the questions that apply across products. The same article recommends grouping FAQs and questions that apply to several products. A short intro above the grid and the longer copy below keeps the grid where shoppers expect it. If you'd rather outsource the writing, an SEO content agency can carry it.

Merge collections that are too small to stand alone. A collection with three products and one line of copy is a thin page. Give each SEO collection enough inventory and copy, or fold it into its parent.

Collections and product pages capture transactional intent, and blog content captures the informational queries that feed them: the topic map our SEO service builds for a store. For turning that traffic into revenue, the Shopify conversion rate optimization guide covers the PDP and checkout side. The Shopify Plus vs Shopify comparison maps where the platform tiers differ. For choosing outside help beyond the Shopify mechanics, see the ecommerce SEO agency buyer's guide.

Internal linking on Shopify

Shopify's default linking is navigational: menu → collection → product. Two additions do most of the work.

Link from content into collections with descriptive anchors. An article on choosing a serum should link to the serum collection in the sentence where it fits. That passes relevance from informational pages to commercial ones. On a deep catalog, this is a job worth handing to SEO automation.

Add contextual links, not more menu items. "Complete the routine" blocks and links inside collection copy tell crawlers how products relate. Point them at /products/ URLs. Keep crawlable links to filter and tag pages limited to the ones you decided to open (decision rule above), so links don't flow to pages you canonicalize away. If the theme is past patching, our guide to website redesign services covers rebuilding without losing rankings.

Schema and structured data for Shopify

Product or ProductGroup on every product page, once. Google recommends JSON-LD "if your site's setup allows it" (Google Search Central). Semrush notes that with Product markup "Google can choose to display star ratings" and that rich results "may see higher CTRs" (Semrush). Both are possibilities, not guarantees. In our test, 4 of 6 product pages had it in the server HTML, and one page carried two separate Product blocks. That is the usual result of a theme and a reviews or SEO app each emitting their own. Keep one source.

Merchant listing details. Price, availability, shipping and returns in product markup feed Google's shopping surfaces: the Shopping Knowledge panel, Popular Products, Google Images and Google Lens (Search Engine Journal, quoting Google's documentation). Google now recommends setting a store-wide return policy under Organization markup instead of repeating it per product (Google Search Central).

BreadcrumbList and Organization; skip FAQ markup. Breadcrumbs mirror the hierarchy in the SERP, and Organization markup defines the brand entity. FAQ markup no longer earns rich results for stores: since August 2023 Google shows FAQ rich results "only… for well-known, authoritative government and health websites" (Google Search Central). Never mark up reviews you don't display. Google's rule is "don't mark up content that is not visible to readers of the page", and a structured data manual action removes the page's eligibility for rich results (Google Search Central).

Structured data is also the machine-readable catalog that AI search surfaces can read, and Shopify is already publishing agent-facing files on stores (the /agents.md and UCP entries above). Our LLM SEO guide, the primer on GEO for DTC operators and the SEO vs GEO vs AEO glossary cover where it fits. If you want that work run for you, see what a generative engine optimization agency takes on.

Shopify SEO apps vs Ahrefs: which tool finds which problem

Searches like "Plug in SEO vs Ahrefs" compare two kinds of tool, and a store usually needs both plus Search Console.

Problem from this guideIn-admin SEO app (e.g. Plug in SEO)Crawler + search data (Ahrefs, Semrush; Screaming Frog for crawling)Google Search Console
Missing or duplicate titles, meta descriptions, alt textFinds and bulk-editsFindsNo
Broken internal links, redirectsFinds and fixesFindsPartly (404s Google hit)
Canonical misfires, nested product linksNoFindsShows which canonical Google chose
Filter URLs being crawledNoFinds what's linkedCrawl stats and indexing reports
Thin or unindexed collectionsNoPartly (word count, rankings)"Crawled – currently not indexed"
Duplicate Product JSON-LDSome apps emit itFinds in the HTMLRich result reports flag errors
Rankings, competitors, backlinksNoYesYour own queries and positions only

Plug in SEO's App Store listing describes it as scanning every page and letting you "fix image alt text, file names, URLs and meta tags in bulk". Plans are Lite $29.99/month (200 pages), Standard $49.99/month (2,000 pages) and Premium $79.99/month (unlimited pages), each with a 7-day free trial (checked Oct 2026, Shopify App Store). After installing any SEO app, view the source of a product page and count the Product JSON-LD blocks.

Timeline: weeks for fixes, months for the head term

"shopify seo" has 1,600 US monthly searches and keyword difficulty 65 (DataForSEO Labs keyword suggestions, US, pulled October 7, 2026). The top 8 on October 24, 2026 (DataForSEO, US desktop) were agency service pages, guides, checklists and two Reddit threads, and the AI Overview cited help.shopify.com, apps.shopify.com and youtube.com. That is a hard term. "shopify technical seo" on October 26, 2026 returned 8 organic results: a Reddit thread, six guides and checklists, and a Shopify Community FAQ. Published ranges for SEO in general: Ahrefs, citing a poll of 3,680 people, puts typical results at "three to six months" (Ahrefs), and Semrush cites a Google video for "4-12 months" (Semrush).

In practice that means two tracks. Canonical, robots and schema fixes, plus product pages aimed at specific long-tail queries, are the work that can show up in Search Console within weeks of Google recrawling. Collection copy and internal links that lift category terms take months, and the head term takes longest. Anyone promising a competitive head-term ranking by a fixed date is guessing. For smaller stores weighing outside help, our guide to an SEO agency for small business covers that decision. If you'd rather have a specialist run the technical layer than build it in-house, the SEO consultant vs agency comparison lays out when each model fits. If you also run physical stores, a local SEO agency handles the map-pack work this guide leaves out.

FAQ

Can I do Shopify SEO myself?

Yes, for most of it. The checks in the table above need a browser's view-source and Search Console. Writing product and collection copy needs time, not tools. A crawler such as Screaming Frog or Ahrefs helps once the catalog is too large to check by hand.

Does Shopify create a sitemap automatically?

Yes. /sitemap.xml is generated and updated whenever you add products, collections, pages, images or blog posts. Submit it in Search Console. It isn't readable while the store is password-protected (Shopify Help Center).

Should I edit robots.txt.liquid?

Only for a specific crawl problem you can see in Search Console, such as a filter you decided to block. Build on Shopify's robots.default_groups rather than replacing the file with plain text, and compare the output with your current /robots.txt before publishing.

How to start: the Shopify SEO audit

Before any optimization, the store needs a diagnosis: whether canonicals still fire after your theme and app changes, which filter URLs Google crawls, which collections are thin, and where product schema is missing or doubled. Our breakdown of an SEO audit service for DTC brands covers what a full audit includes. Our SEO + GEO + AEO service runs the technical and content diagnosis, and our SEO audit gives a free first-pass read before any engagement. Pricing is scoped per engagement. Contact us for a quote.

Written by

CTO, Marketing Bar

Drives technical strategy across the agency — measurement, attribution, automation, and the AI tooling that keeps us ahead of platform changes.

Share