Before fixing the problem, it’s crucial to understand why it happens. Shopify’s structure is designed for user flexibility, which unfortunately creates multiple URL paths to the same product or collection page.

  • Canonical URL: The “true” address of a product (e.g., yourstore.com/products/cool-shirt).
  • Duplicate URL: An alternate address that shows the exact same content (e.g., yourstore.com/collections/all/products/cool-shirt).

Google sees these as two separate pages with identical content, forcing it to choose one, which can dilute your SEO authority. Our goal is to tell Google definitively which URL is the correct one to index.

Step 1: Identify the Duplicate Content in Search Console

First, you need to pinpoint exactly where Google is reporting the issue.

  1. Log in to your Google Search Console account.
  2. Navigate to the Pages report under the Indexing section in the left-hand menu.
  3. Scroll down to the “Why pages aren’t indexed” section.
  4. Look for these two specific reasons. They are your primary targets:
    • Duplicate, Google chose different canonical than user: This is the most critical one. It means Google found a duplicate page, disagreed with the canonical tag you provided (or found it confusing), and chose a different URL to index.
    • Alternate page with proper canonical tag: This is less of an “error” and more of a report. It means Google found a duplicate URL but correctly identified the canonical tag and is therefore not indexing the duplicate. While this is good, a high number here indicates your site structure is creating many unnecessary URLs that are wasting Google’s crawl budget.

Click on these reasons to see a list of the affected URLs. This list is your to-do list.

Step 2: Verify Your Theme’s Canonical Tags are Working

The rel="canonical" tag is the most important tool for fighting duplicate content. It’s a snippet of code that tells Google, “Hey, of all the URLs that show this content, this one is the official version.” Shopify is supposed to handle this automatically, but you must verify it’s working correctly.

  1. Go to your storefront. Navigate to a product page via a collection (e.g., go to “Shirts” and then click on your product).
  2. View the Page Source. Right-click anywhere on the page and select “View Page Source” (or similar, depending on your browser).
  3. Search for “canonical”. Press Ctrl + F (or Cmd + F on Mac) and type canonical.
  4. Analyze the URL. You should find a line of code like this: <link rel="canonical" href="https://yourstore.com/products/your-product-name">

The href URL must point to the simple /products/ version, not the one that includes /collections/. If it does, your canonical tags are working correctly. If it points to the collection-based URL or is missing, you need to fix your theme’s code.

How to Fix It (If Broken): This almost always lives in your theme.liquid file.

  • Go to Online Store > Themes.
  • Click the three dots next to your theme and select Edit code.
  • IMPORTANT: First, click Duplicate to create a backup.
  • In the Layout folder, open theme.liquid.
  • Find the <head> section and look for the <link rel="canonical"...> tag.
  • Ensure it uses the correct Liquid object: {{ canonical_url }}. The full line should be <link rel="canonical" href="{{ canonical_url }}">.
  • Save the file.

Step 3: Stop Google from Indexing Filtered Collection URLs

Collection pages with filters (e.g., for color, size, or tags) create parameterized URLs (?filter.p.tag=blue) that are seen as duplicate content of the main collection page. The best way to handle this is to tell Google not to index them.

  1. Go to your theme code (Online Store > Themes > Edit code).
  2. Open your theme.liquid file under the Layout folder.
  3. Find the closing </head> tag.
  4. Paste the following code snippet directly above the </head> tag:Code snippet{% if template contains 'collection' and current_tags %} <meta name="robots" content="noindex, follow"> {% endif %}
  5. Click Save.

What this code does: It checks if a user is on a collection page (template contains 'collection') AND if they have applied any filters (current_tags). If both are true, it inserts a “noindex” meta tag, telling Google not to put this specific filtered URL in its search results. It also says “follow,” which allows Google to still follow the links on the page to find your products.

Step 4: Update Your Internal Linking

You must send consistent signals to Google. If you link to the non-canonical, duplicate versions of your URLs from within your own site (e.g., in blog posts, menus, or on the homepage), you are sending confusing signals.

  1. Audit Your Links: Check the links in your main navigation, footer, collection descriptions, and blog posts.
  2. Ensure Consistency: Always ensure that when you link to a product, you are using the direct /products/ URL, not a /collections/ URL.
  3. How to Get the Canonical URL: The easiest way to get the correct URL for any product is to go to your Shopify Admin > Products, click on the product, and use the “View on online store” link or find it in the “Search engine listing preview.”

Step 5: Request Validation in Search Console

Once you’ve implemented these fixes, you need to tell Google to check your work.

  1. Go back to the Pages report in Google Search Console.
  2. Click on one of the duplicate content issues (e.g., “Duplicate, Google chose different canonical than user”).
  3. This will open a new page showing the affected URLs. At the top, you will see a button that says “Validate Fix.”
  4. Click it.

Google will now re-crawl the affected URLs. Be patient—this process can take anywhere from a few days to several weeks. You will receive an email from Google once the validation process is complete, letting you know if the fix was successful.

If you need help with shopify SEO or Shopify Technical SEO Contact us.