Playbook · Shopify canonical URL wrong / duplicate content

Shopify canonical URL wrong or duplicate content (www vs non-www, Markets, theme head).

Written for a Shopify DTC owner whose rel=canonical points at the wrong host or path, or whose www vs non-www, Markets, or theme head setup creates duplicate content signals — GSC says Duplicate without user-selected canonical or Google chose a different canonical while the page looks fine in the browser. DIY-first: prove canonical tags, align primary domain and Markets, clear theme / SEO-app overrides. Distinct from robots.txt / noindex blocking indexing, sitemap.xml missing products, meta title / description missing, www / non-www redirect loop, and custom domain / SSL not connecting. No earnings claims, no invented case studies.

Nico at Latch AI Ops · Sep 8, 2026 · ~12 minute read

Buy the 72-hour install — $997Robots.txtwww loopMerchant FAQ

01

Wrong canonical / duplicate content — not robots, sitemap, meta titles, www redirect loop, custom domain.

Several products can look like “Google indexes the wrong URL.” They do not share a settings panel. This page is only when the canonical URL is wrong or duplicate content appears across www / non-www, Markets, or theme head. Robots.txt Disallow or noindex blocking Google is shopify-robots-txt-blocking-indexing. Sitemap.xml omitting products is shopify-sitemap-xml-missing-products. Blank or duplicated SERP titles/descriptions are shopify-meta-title-description-missing. ERR_TOO_MANY_REDIRECTS bouncing www ↔ apex is www-redirect-loop-shopify. DNS / SSL / primary domain broken so the host never loads is custom-domain-ssl-not-connecting. This page is only: wrong or missing rel="canonical", or duplicate indexable URLs that should consolidate.

Six ordinary reasons GSC picks the wrong URL: primary domain unset so www and apex both serve 200 with weak or conflicting canonicals, Markets country/language URLs canonicalizing to the wrong locale, theme.liquid or SEO apps hardcoding a staging / myshopify.com / wrong-path canonical, query-string duplicates without a self-canonical, hreflang fighting the canonical, or you confused a redirect loop / SSL pending with a canonical fight. Walk them in that order. You already pay for Online Store. You do not need another SEO seat to view-source rel="canonical".

02

Prove view-source canonical, www vs apex, Markets URLs, and Google Search Console.

Open a product, collection, and home on the live primary host. View-source and find <link rel="canonical" href="...">. Note host (www vs apex), path, and whether it matches the URL in the address bar. Fetch the same path on the other host (www ↔ non-www) and on any Markets country/language domains — compare status codes and canonical hrefs.

In Google Search Console → URL Inspection: Duplicate without user-selected canonical, Google chose different canonical, or Page with redirect. Honest proof: if the browser loops forever (ERR_TOO_MANY_REDIRECTS), leave for www-redirect-loop-shopify. If GSC says Blocked by robots.txt or Excluded by noindex, leave for shopify-robots-txt-blocking-indexing. If titles are blank but the canonical is correct, leave for shopify-meta-title-description-missing. Do not mix those proofs with a wrong-canonical / duplicate product.

03

www vs non-www both indexable with conflicting or missing canonical.

When both www and apex return 200 without a single preferred host, Google often indexes both and picks a canonical you did not intend. Shopify Settings → Domains should mark one primary domain; the other should redirect (301), not serve a parallel storefront with a different or self-conflicting canonical.

Fix: Domains → set the intended host as primary. Confirm the alternate redirects once (not a bounce). Recheck view-source on both hosts — after a correct primary, the alternate should redirect, not emit its own competing canonical. If the hosts bounce each other in a loop, that is www-redirect-loop-shopify— different product (redirect loop, not duplicate 200s). If DNS / SSL never finishes so one host never loads, that is custom-domain-ssl-not-connecting.

04

Markets / country-language URLs canonicalizing to the wrong locale or primary.

Markets domains and subfolders create multiple public URLs for the “same” product. Each locale should self-canonicalize (or follow Shopify's Markets SEO) and declare hreflang peers — not force every country URL to the primary domain when those pages are meant to be distinct, and not leave two country hosts both claiming the same canonical path.

Fix: Markets → Domains and languages → confirm each public market domain / language path is live and uses the intended primary for that market. View-source on a market URL: canonical should match that market's public URL (unless you intentionally consolidate). Check hreflang / alternate links for fights with the canonical. If currency / price is wrong for the country, that companion issue is shopify-markets-currency-wrong— different product. Recheck GSC URL Inspection per market URL.

05

Theme head / SEO app hardcoding the wrong rel=canonical.

Themes, SEO apps, and leftover Liquid snippets often inject a second rel="canonical" pointing at myshopify.com, a staging host, a truncated path, or a hardcoded homepage. Multiple canonical tags (or one that disagrees with the address bar) is a classic duplicate-content signal.

Fix: Theme code → search layout / theme.liquid / snippets for rel="canonical" and remove hardcoded overrides; prefer Shopify's native {{ canonical_url }}. In SEO apps, disable “custom canonical” / force-URL features left from a migration. Confirm view-source shows exactly one canonical that matches the live primary URL. If the app also blanked meta titles while rewriting head tags, clear that companion on shopify-meta-title-description-missingafter the canonical is honest.

06

You tested robots, sitemap, meta titles, www redirect loop, or custom domain instead.

Robots.txt / noindex blocking Google is shopify-robots-txt-blocking-indexing. Sitemap.xml missing products is shopify-sitemap-xml-missing-products. Meta title / description missing or duplicated is shopify-meta-title-description-missing. www ↔ apex ERR_TOO_MANY_REDIRECTS is www-redirect-loop-shopify. Custom domain / SSL not connecting is custom-domain-ssl-not-connecting.

The only honest test for this page: view-source shows a wrong / missing / duplicated canonical, or www and Markets URLs both return 200 with conflicting consolidation — primary domain unset, Markets locale fight, theme head / SEO-app override. Capture view-source + GSC screenshot, repair those causes, recheck. Anything else is a different product.

07

When to stay DIY vs pay $997.

Stay DIY if you can spend one afternoon on the list above: prove canonical + www/apex + Markets + GSC, set one primary domain, align Markets URLs, remove theme / SEO-app hardcoded canonicals, and stop confusing robots / sitemap / meta titles / redirect loop / custom domain with a wrong-canonical product. That is the whole playbook. No agency required. Short answers also live on the merchant FAQ. Related pages: shopify-robots-txt-blocking-indexing, shopify-sitemap-xml-missing-products, shopify-meta-title-description-missing, www-redirect-loop-shopify, custom-domain-ssl-not-connecting.

Pay for help when the work is not the canonical row — it is connecting the stack you already have so lead capture is not dying in DMs, storefront and checkout-ready exceptions land in a channel you already check, and the live store is one workflow instead of a spreadsheet plus a Slack bot you forgot. That is the Latch AI Ops install.

What $997 USD one-time buys: lead capture on the live store, ops alerts in a channel you already check, and a checkout-ready workflow. 72 hours after collaborator access, not after payment. One live Shopify store. Access plus a delivery thread. Store URL collected at checkout. Not a SaaS seat, not an SEO agency retainer, not a rankings guarantee, not a theme rebuild.

Other shops' public ranges, not testimonials: a checkout / ops install typically runs $500–$2,500. A full ops consulting block typically runs $2,000–$5,000. $997 is the cheap end of that work, sold as a 72-hour install of three systems — not as an earnings number or ranking-lift claim.

What it does not buy: more orders, recovered revenue, a forever SERP / rankings / indexing guarantee, or a case study. Latch AI Ops has not published customer proof because there are no customers yet. You are buying the install.

Checkout is on Whop. Operator is Nico. United States offer. You can revoke collaborator access after handoff. We do not take owner passwords.