Canonical Shopify : 5 erreurs fréquentes et leurs fixes
Shopify génère les canonical auto, mais échoue dans 5 scénarios (variantes, filtres, tags, multi-domaine). Snippets Liquid pour les corriger dans le thème.
Dans cet article
Shopify génère automatiquement les balises canonical sur chaque page, mais il existe cinq scénarios où la génération automatique échoue et crée du contenu dupliqué aux yeux de Google. Variantes de produit, produits accédés depuis plusieurs collections, filtres de recherche, URL avec tags et domaines parallèles : dans tous ces cas, il faut vérifier manuellement que la canonical pointe vers l’URL que vous voulez ranker, pas vers celle que Shopify décide.
Ce guide explique comment fonctionne le canonical dans Shopify, les erreurs les plus coûteuses que je vois en audit, et les snippets Liquid pour les corriger dans le thème quand la correction automatique ne suffit pas. Pour la vue complète du SEO technique Shopify, SEO Shopify pour ecommerce 2026 couvre les canonicals à côté du reste de la checklist.
En 30 secondes :
- La canonical Shopify est générée via
{{ canonical_url }}danstheme.liquidet respecte le domaine principal (Google canonical guide, 2025)- 5 scénarios où la génération auto échoue : variantes de produit, produits dans collections, filtres de recherche, tags, multi-domaine
- Une canonical mal pointée consolide les signaux de ranking sur la mauvaise URL — Google ignore parfois la canonical et en choisit une autre
- Méthode rapide d’audit : view-source des 5 templates principaux et vérifier que
<link rel="canonical">pointe vers l’URL canonique attendue- Les apps SEO qui réécrivent les canonicals sont une source fréquente de problèmes — elles dupliquent ou écrasent celle du thème
Comment Shopify génère-t-il les balises canonical par défaut ?
Shopify expose une variable Liquid {{ canonical_url }} insérée dans le <head> du thème. Par défaut, cette variable pointe vers l’URL la plus « propre » disponible pour cette page : l’URL du produit, de la collection ou de la page sans paramètres de tracking. Ça signifie qu’elle exclut automatiquement les paramètres UTM et de tracking d’apps, pointe vers le domaine principal quand il y a plusieurs domaines (pas vers myshopify.com), et garde la cohérence du trailing slash.
Là où la variable native ne suffit pas, c’est dans cinq scénarios précis qu’on trouve dans n’importe quelle boutique active : variantes de produit accédées via ?variant=12345, même produit accédé via différentes collections (/collections/X/products/Y vs /products/Y), pages de collection avec filtres appliqués (?filter.p.tag=rouge), pages de tag spécifiques (/collections/all/rouge), et les cas rares de sous-domaines ou domaines alternatifs qui apparaissent en migration. Les cinq nécessitent une intervention manuelle.
Quand j’audite une boutique Shopify, le premier test c’est d’ouvrir 5 produits au hasard, faire view-source et vérifier la balise <link rel="canonical">. Si les 5 pointent vers https://[domaine].com/products/[handle] sans paramètres, la canonical de base est OK. Les problèmes sérieux commencent quand entrent en jeu les variantes, les filtres ou les apps tierces.
Quels problèmes créent les canonicals mal pointées ?
Une canonical mal pointée est une des erreurs SEO les plus silencieuses sur Shopify parce que la boutique continue de fonctionner parfaitement — sauf que Google ne consolide pas les signaux de ranking où il devrait. Trois conséquences concrètes :
Dispersion de l’autorité entre URL dupliquées. Si /collections/ete/products/tshirt-rouge et /products/tshirt-rouge ont chacune une canonical qui pointe vers elles-mêmes, Google voit deux pages distinctes avec le même contenu. Les backlinks qui arrivent sur la version avec collection y restent au lieu de se transférer au produit canonique.
Indexation des URL avec paramètres. Si les URL filtrées (?filter.p.tag=...) n’ont pas de canonical vers la collection de base, Google peut les indexer et la SERP se remplit de variantes du même produit. Je l’ai vu surtout dans des boutiques avec beaucoup de tags où apparaissent 20 versions de la même collection dans l’index.
Conflit entre canonical et hreflang. Sur les boutiques multi-langue avec Shopify Markets, si la canonical pointe vers la mauvaise langue, Google peut ignorer les annotations hreflang et consolider les signaux sur la mauvaise version. C’est un problème rare mais coûteux parce qu’il casse le SEO international globalement.
Pour les détecter sans rien toucher, un audit SEO technique Shopify croise sitemap, canonicals et hreflang en une passe et renvoie une carte exacte des URL dupliquées.
Comment corriger les canonicals sur les variantes de produit ?
Les variantes sont le problème le plus fréquent. Quand un utilisateur arrive sur /products/tshirt?variant=12345, Shopify génère par défaut une canonical pointant vers l’URL sans le paramètre de variante, ce qui est correct dans la plupart des cas. Mais il y a trois exceptions où le comportement par défaut cause des problèmes :
- Variantes avec URL custom, par exemple quand on utilise une app pour créer des « color landing pages » (
/products/tshirt-rouge,/products/tshirt-bleuséparés). Chacune doit avoir sa propre canonical pointant vers elle-même, pas vers le produit parent. - Variantes accédées depuis des campagnes avec UTM :
?variant=12345&utm_source=meta. La canonical correcte est/products/tshirtsans paramètres, et Shopify le fait bien par défaut.
Pour forcer une canonical spécifique sur une variante, il faut écraser la variable native dans le head du thème. Le snippet dans layout/theme.liquid :
{% if template contains 'product' and product.selected_variant and request.path contains '?variant=' %}
<link rel="canonical" href="{{ shop.url }}{{ product.url }}">
{% else %}
<link rel="canonical" href="{{ canonical_url }}">
{% endif %}
Ce snippet force toute URL avec ?variant= à toujours pointer vers le produit parent, en ignorant la variante sélectionnée dans la canonical.
Que faire avec les produits dans plusieurs collections ?
Shopify gère ça bien par défaut : l’URL /collections/ete/products/tshirt-rouge a une canonical pointant vers /products/tshirt-rouge. Le problème apparaît quand une app SEO tierce écrase cette canonical, ou quand le thème a une canonical hardcodée dans templates/product.liquid au lieu de layout/theme.liquid.
Pour vérifier rapidement, ouvrez une URL avec collection (https://votreboutique.com/collections/X/products/Y) et faites view-source en cherchant la balise <link rel="canonical". Le href devrait être https://votreboutique.com/products/Y sans la collection. S’il inclut /collections/, il y a un problème. Les deux causes les plus fréquentes : une app SEO qui ajoute sa propre canonical (vérifier les apps installées) ou le thème a la canonical dans product.liquid au lieu de l’hériter de theme.liquid. La solution : éliminer les canonicals dupliquées et n’utiliser que {{ canonical_url }} dans le head global. Si les canonicals sont bonnes mais que d’anciennes URL avec redirects 301 pointent mal, redirections Shopify et SEO couvre comment gérer ce cas.
Comment gérer les canonicals avec filtres et tags ?
Les filtres dans Shopify génèrent des URL du type /collections/tshirts?filter.p.tag=rouge ou /collections/all/rouge. Ces URL sont utiles pour l’utilisateur mais ne doivent pas ranker indépendamment — toutes doivent consolider les signaux sur la collection de base.
Shopify fait généralement bien le travail pour les filtres avec paramètres (?filter.p.tag=), où la canonical pointe vers /collections/tshirts. Mais l’URL /collections/all/rouge est plus problématique : techniquement c’est une nouvelle URL sémantiquement équivalente à un filtre, et par défaut la canonical pointe vers elle-même.
La correction recommandée dépend de votre stratégie SEO. Si vous voulez que les pages de tag rankent (parce que vous avez du contenu unique pour « tshirts rouges »), laissez-les telles quelles. Si vous voulez tout consolider sur les collections principales, modifiez la canonical dans templates/collection.liquid pour pointer vers le tag de base :
{% if collection.handle == 'all' and current_tags %}
<link rel="canonical" href="{{ shop.url }}/collections/all">
{% endif %}
Prendre cette décision sans vérifier d’abord le trafic actuel aux pages de tag est une erreur. Si Search Console montre que les pages /collections/all/rouge reçoivent du trafic, les éliminer via canonical fait perdre des rankings. Auditer avant de changer.
Comment vérifier toutes les canonicals de la boutique sans les auditer une par une ?
Pour les boutiques avec 100+ URL, le manuel ne tient pas. Trois outils que je combine :
| Outil | Ce qu’il fait | Quand l’utiliser |
|---|---|---|
| Screaming Frog | Crawl complet du site, extrait la canonical de chaque URL | Audit initial du site complet |
| Search Console | Affiche « Page indexed, but not submitted in sitemap » et « Duplicate without user-selected canonical » | Détecter les canonicals que Google ignore |
curl + grep | Inspection rapide de canonical sur 5-10 URL spécifiques | Valider après un changement |
Commande utile pour valider la canonical d’une URL spécifique :
curl -s https://votreboutique.com/products/tshirt-rouge | grep -oE '<link rel="canonical"[^>]+>'
Quand Search Console rapporte « Duplicate without user-selected canonical », ça signifie que Google a trouvé des URL dupliquées, a ignoré la canonical et a choisi l’URL canonique par lui-même. Ce rapport est le signal le plus clair que la canonical ne fonctionne pas comme vous l’attendez. Les étapes : revoir les URL affectées, vérifier manuellement que la canonical pointe où vous voulez, et si elle est bien pointée, investiguer pourquoi Google l’ignore (contenu quasi-identique est la cause numéro 1).
Questions fréquentes
Les apps SEO de Shopify peuvent-elles corrompre les balises canonical ?
Oui, et c’est une des causes les plus fréquentes que je vois en audit. Des apps comme SEO Manager, Smart SEO ou Plug in SEO peuvent ajouter leur propre <link rel="canonical"> au head sans désinstaller celle du thème. Résultat : deux canonicals sur la même page, et Google en choisit une (pas forcément la bonne). Si votre site a une app SEO installée, vérifiez en view-source qu’une seule canonical apparaît.
Et les canonicals sur les pages checkout et account ?
Les pages de checkout (/checkout/*), account (/account/*) et orders (/orders/*) sont bloquées dans le robots.txt par défaut de Shopify, donc leurs canonicals n’ont pas d’importance SEO. Google ne les crawl pas. Si vous modifiez robots.txt.liquid pour autoriser le crawl, assurez-vous d’ajouter noindex sur ces pages ou elles seront indexées et apparaîtront en SERP.
Faut-il utiliser canonical pour gérer la pagination des collections ?
Non. Pour la pagination (/collections/tshirts?page=2), utiliser canonical qui pointe vers la page 1 n’est plus recommandé par Google depuis 2019. Google préfère maintenant que chaque page paginée ait sa propre auto-canonical ou les traite comme une série via rel="next"/rel="prev" (aussi déprécié). En pratique, laisser chaque page paginée avec une self-canonical et faire confiance à Google pour les traiter comme un groupe est la solution la plus stable.
Comment tester si un changement de canonical a vraiment pris effet ?
Trois validations après un changement : (1) view-source de l’URL modifiée et confirmer la nouvelle canonical, (2) dans Search Console > URL Inspection, coller l’URL et vérifier que Google la lit correctement (bouton « Test live URL »), et (3) attendre 2-4 semaines et vérifier si « Duplicate without user-selected canonical » disparaît dans Search Console.
Shopify Plus permet-il plus de contrôle sur les canonicals ?
Pas directement. Plus n’ajoute pas de nouvelles options de canonical ; le contrôle supplémentaire vient de pouvoir éditer robots.txt.liquid et de Shopify Functions pour de la logique custom. Mais l’édition réelle de la canonical se fait toujours via Liquid dans theme.liquid, comme sur n’importe quel plan.
Comment Shopify Markets affecte-t-il les canonicals sur les URL traduites ?
Shopify Markets respecte les canonicals par langue — chaque URL traduite (/es/products/X, /en/products/X) a sa propre canonical pointant vers elle-même. Ce qui est géré via hreflang ce sont les versions alternatives, pas des canonicals cross-locale. Mélanger les canonicals entre langues est une des erreurs les plus coûteuses et casse le SEO international. Si le thème ne respecte pas cette séparation, les snippets corrects sont dans Shopify Liquid pour le SEO.
Sources
- Google Search Central. Consolidate duplicate URLs. https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls. 2025.
- Shopify Dev. Canonical URLs in Liquid. https://shopify.dev/docs/api/liquid/objects/canonical_url. 2025.
- Google Search Central. URL canonicalization. https://developers.google.com/search/docs/crawling-indexing/canonicalization. 2025.
- Shopify Help. SEO settings for collections. https://help.shopify.com/en/manual/online-store/themes/themes-by-shopify/dawn/dawn-collection-pages. 2025.
- Google Search Central. URL Inspection Tool. https://support.google.com/webmasters/answer/9012289. 2025.
Search Console vous signale « Duplicate without user-selected canonical » sur votre Shopify et vous ne savez pas où est le problème ? Je propose des audits SEO techniques Shopify — carte complète des canonicals dupliquées ou mal pointées avec plan de remédiation. 30 minutes initiales sans engagement.
Vos campagnes publicitaires
pourraient-elles mieux performer ?
30 minutes pour analyser votre situation et vous dire exactement ce que je changerais. Sans pitch, sans proposition commerciale.