Skip to content
Free Store Audit

Shopify SEO & Growth · · 7 min

Shopify Duplicate Content: Fixing Collection-Product URLs and Canonicals

Where Shopify duplicate content comes from (collection product URLs, tags, filters, variants) and how to fix it with canonicals and clean internal links.

Shopify duplicate content usually means the same product or collection is reachable at more than one URL. The most common case is products appearing both at /products/handle and at /collections/name/products/handle. Shopify themes normally add a canonical tag pointing to the main product URL, which tells Google which version to index. The fix is to make sure canonicals are correct, link internally to the canonical URL, and keep tag, filter and near-duplicate product pages under control.

Quick Summary: Executive Takeaways

  • Collection-scoped product URLs are the main source of Shopify duplicates.
  • Canonical tags tell search engines which URL is the main version; check your theme outputs them.
  • Link to /products/handle in product cards to avoid sending signals to duplicate paths.
  • Tag and filter URLs can create many thin pages; avoid linking to them prominently.
  • Near-duplicate products (same item, different colour as separate products) need unique content or consolidation.
  • Duplicate content isn’t a penalty in itself, but it wastes crawl attention and splits signals.

Introduction: What Duplicate Content Means on Shopify

Duplicate content is substantially similar content that appears at more than one URL. Google explains in its guidance on consolidating duplicate URLs that it picks one URL as canonical and may show that version in results. Problems arise when Google picks a URL you don’t want, or when signals such as links are split across versions.

A canonical tag is an HTML link element (rel="canonical") that tells search engines which URL is the preferred version of a page.

This guide is written by the Lazapi team, a Shopify development agency with locations in Kozhikode (Kerala), Bangalore and the UAE. In Shopify SEO audits, we often find a theme with correct canonicals undermined by its own product cards linking to collection-scoped URLs on every collection page, so crawlers keep finding the duplicate path first.

Where Shopify Duplicate Content Comes From

Most Shopify duplicates come from a handful of URL patterns. This table shows them and the usual fix.

Source Example URL Usual fix
Collection-scoped product URLs /collections/shirts/products/oxford-shirt Canonical to /products/oxford-shirt + clean internal links
Product in many collections Same product under several collection paths Same as above
Tag pages /collections/shirts/blue Avoid prominent links; consider noindex for thin tag pages
Filter parameters /collections/shirts?filter.v.option.color=Blue Usually handled by canonical; don’t link as main navigation
Sorting and pagination ?sort_by=price-ascending, ?page=2 Canonical/self-referencing; keep defaults clean
Variant URLs /products/oxford-shirt?variant=123 Canonical to product URL
Near-duplicate products Separate products per colour with copied text Unique content or combine as variants
/collections/all and vendor/type pages /collections/vendors?q=brand Avoid linking; don’t rely on them for SEO

How Canonicals Work on Shopify

Most Shopify themes output a canonical tag in theme.liquid using Shopify’s canonical_url object, which points product pages to /products/handle even when visited through a collection path.

In practice, check your theme’s <head> for this line:

<link rel="canonical" href="{{ canonical_url }}">

Then view the source of a collection-scoped product URL and confirm the canonical shows /products/handle. If the tag is missing, add it to the theme’s head.

Fixing internal links in product cards

Canonicals are hints, not commands. Internal links are strong signals, so link to the canonical URL. Many themes build product card links with the within filter:

{%- comment -%} Creates /collections/x/products/y (duplicate path) {%- endcomment -%}
<a href="{{ product.url | within: collection }}">{{ product.title }}</a>

{%- comment -%} Links to the canonical /products/y {%- endcomment -%}
<a href="{{ product.url }}">{{ product.title }}</a>

Search your theme’s snippets (often card-product.liquid or product-card.liquid) for within: and replace it. Many newer themes already link to product.url.

Edge case: the within filter can power breadcrumbs that show which collection a shopper came from. If you remove it, consider keeping breadcrumbs based on a primary collection metafield instead.

Tags, Filters and Near-Duplicate Products

Beyond product paths, duplicates often come from how a catalogue is organised.

Tag pages

Shopify tag URLs filter a collection by tag. They often have no unique title or content, so they compete weakly with your main collections. Avoid putting them in menus. If they’re thin and indexed, some stores add a noindex for tag pages in the theme, but test carefully and keep important tag combinations as proper collections instead.

Filter URLs

Faceted navigation is filtering a listing by attributes such as size, colour or price, which creates parameter URLs. Shopify’s filter URLs are usually canonicalised to the collection. Don’t link to filtered states as main navigation; create a real collection for important combinations like “linen shirts”.

Near-duplicate products

If you list each colour as a separate product with identical text, Google may treat them as duplicates. Either combine them as variants of one product, or write genuinely different content for each.

Pagination and Sorting

Collection pages with many products create paginated URLs such as ?page=2, and sorting options create URLs such as ?sort_by=price-ascending. These aren’t harmful by themselves, but they need sensible handling.

Pagination is splitting a long list of items across several pages. Google’s guidance on pagination and incremental page loading recommends linking pages sequentially and giving each paginated page its own canonical URL, rather than canonicalising every page to page one.

URL type Recommended handling
/collections/shirts?page=2 Self-referencing canonical; normal crawlable links
/collections/shirts?sort_by=... Canonical to the unsorted collection
/collections/shirts?filter... Canonical to the collection unless it’s a deliberate landing page
Infinite scroll Make sure paginated URLs still exist for crawlers

In practice, check how your theme outputs canonicals on page 2 of a collection. Some themes canonicalise every page to page one, which can hide products deeper in the collection from search.

Edge case: “load more” buttons built purely with JavaScript may stop crawlers reaching deeper products. Keep standard pagination links available.

Step-by-Step: Auditing and Fixing Shopify Duplicate Content

  1. Crawl your store with a crawler and list duplicate titles and URLs.
  2. Check canonicals on a product, a collection-scoped product URL, a variant URL and a tag page.
  3. Fix missing canonicals in theme.liquid if needed.
  4. Update product card links to use product.url.
  5. Remove tag and filter links from menus and footers.
  6. Create real collections for important tag or filter combinations.
  7. Consolidate near-duplicate products or give them unique content.
  8. Check Google Search Console Pages report for “Duplicate, Google chose different canonical than user”.
  9. Request reindexing for key fixed pages.
  10. Re-crawl monthly to catch new duplicates from new apps or theme changes.

International stores and hreflang

If you sell in several countries with Shopify Markets, you may have similar pages in different languages or currencies, such as /en-ae/products/oxford-shirt. Hreflang is markup that tells search engines which language or regional version of a page to show. Shopify adds hreflang for Markets with subfolders or domains, which helps Google treat them as alternates rather than duplicates. Check the page source for hreflang links after setting up Markets.

Common Pitfalls and Mistakes to Avoid

  • Assuming canonicals alone solve everything while internal links point to duplicates.
  • Blocking duplicates in robots.txt, which can stop Google from seeing canonicals.
  • Noindexing important collections by mistake when targeting tags.
  • Copying manufacturer descriptions across many products.
  • SEO apps that output a second canonical tag, causing conflicts.
  • Not re-checking after theme updates, which can restore old card snippets.

FAQ

Does Shopify create duplicate content?

Shopify can make the same product reachable through several URLs, mainly collection-scoped product paths. Themes usually add canonical tags pointing to the main product URL, which handles most cases.

Will duplicate content get my Shopify store penalised?

Duplicate content isn’t usually a penalty. Google picks a canonical version. The risk is that it picks the wrong URL or splits signals, so clean canonicals and internal links help.

How do I check canonical tags on Shopify?

View the page source and search for rel=”canonical”. On a collection-scoped product URL, it should point to the /products/ URL.

Should I noindex Shopify tag pages?

Often, if they’re thin and not useful as landing pages. Test carefully, avoid noindexing important collections, and turn valuable tag combinations into real collections instead.

Do Shopify variant URLs cause duplicate content?

Variant URLs such as ?variant=123 normally carry a canonical tag pointing to the main product URL, so they’re usually not a problem. Check your theme outputs the canonical correctly.

Conclusion and Next Steps

Shopify duplicate content is manageable: confirm canonicals, link to /products/handle, keep tag and filter pages out of navigation, and fix near-duplicate products.

Next steps:

  1. Run steps 1–4 above on your theme today.
  2. Read our Shopify SEO guide for the wider SEO picture.
  3. Want a technical SEO review? See our Shopify SEO service or request a free store audit.

Discuss your Shopify project

We use your details only to reply to this enquiry. Privacy Policy