Lundi matin, une boutique de 1 200 références ouvre sa Search Console : des milliers d’URLs classées « Autre page avec balise canonique appropriée ». Des /collections/robes/products/robe-lin, des ?filter.v.option.couleur=bleu, des ?variant=44718. Personne n’a rien cassé. Shopify fonctionne comme prévu. Le SEO Shopify commence là : comprendre ce que la plateforme décide à votre place, et ce qu’elle vous interdit de faire. Shopify équipe 25,3 % des sites e-commerce détectés sur mobile, deuxième plateforme derrière WooCommerce (HTTP Archive, Web Almanac 2025). Autant de boutiques qui partagent les mêmes verrous. Shopify n’est pas mauvais en SEO, il est rigide. Ses limites se contournent presque toutes, à condition de savoir lesquelles coûtent du trafic. Shopify et le SEO : solide sur les bases, verrouillé sur le reste Ce que la plateforme fait bien nativement Commençons par ce qui marche, sans app ni développeur : une balise canonical générée automatiquement sur les produits, collections et pages ; un sitemap.xml créé et mis à jour sans intervention ; un title jusqu’à 70 caractères (60 recommandés) et une meta description de 160 caractères, éditables sur chaque ressource (Shopify Help Center, 2026) ; des données structurées produit imposées aux thèmes du Theme Store (Shopify Dev Docs, 2026). Le résultat se mesure. 76 % des boutiques Shopify passent les trois Core Web Vitals sur mobile, contre 35 % pour WooCommerce et 35 % pour Magento (HTTP Archive, Web Almanac 2025). Tous sites confondus, la moyenne plafonne à 48 % sur mobile (HTTP Archive, Web Almanac 2025). Sur les fondamentaux, Shopify part devant. Le vrai problème : un CMS fermé Pas d’accès serveur. Pas de .htaccess. Pas de plugin qui réécrit les URLs. L’arborescence, les préfixes, le sitemap : tout est décidé par Shopify. Google impose, on dispose, et sur Shopify la marge de manœuvre se gagne hors des réglages. Chaque contournement passe par l’une de ces quatre portes, par ordre de préférence : le thème Liquid (code éditable, gratuit, durable) ; les metafields (champs personnalisés natifs) ; une app (rapide, mais chaque app pèse sur la vitesse) ; le headless avec Hydrogen (contrôle total, coût élevé). C’est la règle de base de tout accompagnement SEO Shopify sérieux : épuiser le Liquid avant d’empiler les apps. Les 13 limites du SEO Shopify en un tableau Limite Impact SEO Contournement URLs imposées (/products/, /collections/, /pages/, /blogs/) Aucune hiérarchie sémantique dans l’URL. Handles courts, fil d’Ariane et BreadcrumbList en JSON-LD. Doublons produit via les collections Liens internes vers des URLs non canoniques, crawl dilué. Retirer le filtre within: collection des cartes produit. Variantes en ?variant= Une seule page indexable pour toutes les couleurs. Un produit par variante à forte demande, reliés entre eux. robots.txt Aucun fichier modifiable directement. Créer le template robots.txt.liquid. Sitemap non éditable Pages inutiles soumises à Google. Métafield seo.hidden ou statut Non répertorié. Filtres et tags Explosion d’URLs paramétrées quasi identiques. Disallow ciblés et collections dédiées aux combinaisons à volume. Pagination Produits profonds peu explorés sur les gros catalogues. Liens crawlables et sous-collections. Contenu des collections Texte SEO absent ou placé au-dessus des produits. Métafield texte enrichi affiché sous la grille. Blog Pas de catégories, pages tag dupliquées. Plusieurs blogs comme catégories, noindex des tags. Données structurées Schéma Product incomplet, doublons injectés par les apps. Filtre structured_data et snippet JSON-LD sur mesure. Vitesse et apps Scripts tiers qui dégradent LCP et INP. Audit app par app, nettoyage du code résiduel. Multilingue Markets hreflang automatiques peu personnalisables. Handles traduits, pas de redirection IP forcée. Redirections 301 Impossible depuis une URL encore valide. Plan de redirection avant chaque changement de handle. Ces 13 lignes ne pèsent pas le même poids. Détail de chaque limite ci-dessous, ordre de traitement à la fin. Architecture et URLs : les limites structurelles Une structure d’URL imposée (/products/, /collections/, /pages/, /blogs/) Les préfixes Shopify ne se suppriment pas, ne se traduisent pas et ne s’imbriquent pas. Impossible d’obtenir /femme/robes/robe-lin-bleue : une sous-collection reste /collections/robes-lin, au même niveau que sa parente. Impact SEO : l’URL ne porte plus la hiérarchie du catalogue. Pas un drame : Google comprend une structure par les liens bien plus que par les dossiers. Encore faut-il lui donner ces liens. Contournement : des handles courts et ciblés (robe-lin-bleue, pas robe-en-lin-bleu-ciel-collection-ete) ; une hiérarchie portée par le menu et les liens entre collections parentes et enfants ; un fil d’Ariane visible, doublé d’un BreadcrumbList en JSON-LD. Les URLs produit dupliquées par les collections Chaque produit existe sous plusieurs formes : /products/robe-lin, mais aussi /collections/robes/products/robe-lin, et une version par collection qui le contient. Shopify place une balise canonical vers /products/robe-lin sur toutes ces versions. La plupart des guides s’arrêtent là. Le problème est ailleurs. Dans de nombreux thèmes, la carte produit de la grille construit son lien avec le filtre within: collection. Tous les liens internes depuis vos collections pointent alors vers la version non canonique. Le canonical dit « /products/ », le maillage dit l’inverse. Google crawle les deux, et le canonical n’est qu’une indication qu’il peut ignorer. Contournement : dans le snippet de carte produit (souvent card-product.liquid ou product-card.liquid), remplacer : <a href="{{ product.url | within: collection }}"> par : <a href="{{ product.url }}"> Une ligne modifiée, et le maillage s’aligne enfin sur le canonical. Plusieurs thèmes récents ont abandonné ce filtre, mais les thèmes premium et les anciennes versions le gardent souvent. Les variantes : une seule URL pour toutes les couleurs Une robe en plusieurs couleurs, c’est un seul produit et une seule URL. Chaque couleur ouvre /products/robe-lin?variant=44718, canonicalisée vers la page produit. Depuis le 15 octobre 2025, tous les marchands peuvent créer jusqu’à 2 048 variantes par produit, contre 100 auparavant (Shopify Developer Changelog, 2025). Plus de variantes possibles, toujours zéro page indexable par variante. Impact SEO : la requête « robe lin bleue » n’a pas de page dédiée. Aucun title ni H1 possible pour la couleur qui fait le volume. Contournement, au cas par cas : garder les variantes pour les tailles : personne ne cherche « robe lin taille 38 » ; créer un produit distinct pour chaque couleur à forte demande, avec son handle et son contenu ; relier ces produits : Combined Listings (app Shopify réservée aux plans Plus et enterprise) les affiche comme un seul produit avec sélecteur, sinon un metafield de type liste de produits alimente des pastilles couleur dans le thème. Vérifiez la demande avant de scinder. Sans volume, un produit par couleur multiplie les pages fines. Crawl et indexation : robots.txt, facettes, pagination, sitemap robots.txt : éditable, mais via robots.txt.liquid Le robots.txt de Shopify se modifie par une seule voie : le template robots.txt.liquid, qui remplace le fichier généré. Détail rarement mentionné : les thèmes du Theme Store n’ont pas le droit d’en embarquer un (Shopify Dev Docs, 2026). Il faut le créer soi-même, dans l’éditeur de code, via « Ajouter un modèle ». Le template manipule des objets Liquid (robots, group, rule, user_agent, sitemap). Bonne pratique : conserver les règles par défaut et n’ajouter que vos Disallow : {% for group in robots.default_groups %} {{- group.user_agent }} {%- for rule in group.rules -%} {{ rule }} {%- endfor -%} {%- if group.user_agent.value == '*' -%} {{ 'Disallow: /*collections/*?*filter.' | prepend: '\n' }} {%- endif -%} {%- if group.sitemap != blank -%} {{ group.sitemap }} {%- endif -%} {% endfor %} La règle ajoutée bloque les URLs de filtres sur /collections/ comme sur les sous-dossiers de marchés (/en/collections/). Deux précautions, détaillées dans la documentation Shopify sur la personnalisation du robots.txt : ne jamais réécrire le fichier en dur (les règles par défaut de Shopify seraient perdues), et comparer le rendu de /robots.txt au fichier d’origine avant publication, car les deux ne correspondent pas toujours. Filtres et tags : la fabrique à URLs paramétrées Les filtres natifs génèrent des paramètres au format filter.p.* et filter.v.*, par exemple /collections/all?filter.p.product_type=shoes&filter.v.option.color=red, avec 25 filtres maximum (Shopify Dev Docs, 2026). Chaque combinaison crée une URL. S’y ajoutent les anciennes URLs par tag (/collections/robes/lin), encore servies par de nombreux thèmes. Impact : Googlebot s’épuise sur des pages quasi identiques et découvre plus lentement vos nouveaux produits. Google le dit sans détour dans sa page sur la gestion de la navigation à facettes, mise à jour le 18 décembre 2025 : bloquer le crawl de ces URLs par robots.txt est la méthode recommandée, canonical et nofollow étant moins efficaces à long terme (Google Search Central, 2025). Le robots.txt par défaut de Shopify bloque déjà le tri et les combinaisons de plusieurs filtres, pas les filtres simples. Contournement en deux temps : un Disallow sur les paramètres de filtres dans robots.txt.liquid (exemple ci-dessus) ; pour chaque combinaison à vrai volume (« robe lin bleue »), une collection dédiée avec son handle, son title, son texte et un lien dans le menu. Celle-là sera indexable. Erreur fréquente : bloquer les facettes dans robots.txt ET leur ajouter un noindex. Google ne voit jamais le noindex d’une URL qu’il ne peut pas explorer. Facettes déjà indexées ? Noindex d’abord, Disallow une fois les pages sorties de l’index. Pagination : ?page= et plafond des 25 000 éléments Une collection affiche ses produits via le tag Liquid paginate : de 1 à 250 éléments par page, et aucune pagination possible au-delà du 25 000e élément (Shopify Dev Docs, 2026). Les pages suivantes prennent l’URL ?page=2, ?page=3, chacune canonicalisée vers elle-même. Impact : sur un gros catalogue, les produits en fin de pagination reçoivent peu de liens et sont explorés tard. Au-delà du plafond, la collection ne les expose plus du tout. Contournement : des liens de pagination en dur (a href), pas un bouton « Charger plus » en JavaScript sans URL ; jamais de noindex ni de canonical vers la page 1 sur les pages 2 et suivantes ; des sous-collections thématiques pour découper les gros catalogues. Sitemap automatique et non éditable Shopify génère sitemap.xml et vous ne pouvez rien y retirer directement. Produits de test, pages de remerciement, collections techniques : tout y entre. Contournement : le statut produit « Non répertorié » (Unlisted) garde un produit accessible par lien direct, hors collections, recherche interne et recommandations ; le métafield système seo.hidden (namespace seo, clé hidden, type number_integer, valeur 1) retire la ressource du sitemap et ajoute une balise noindex. Il se pose par import CSV, app de metafields ou API ; pour ajouter des sitemaps (images, vidéos, pages hors Shopify), déclarez-les dans robots.txt.liquid et dans la Search Console. Contenu : collections, blog et données structurées Collections : un seul champ description, placé en haut Une collection n’a qu’un champ description, que la plupart des thèmes affichent au-dessus de la grille. Deux mauvaises options : un texte court qui ne se positionne pas, ou un pavé qui repousse les produits et plombe la conversion. Contournement : créer un métafield de collection en texte enrichi (par exemple custom.texte_seo) ; l’afficher via une section de thème sous la grille ; garder en haut deux ou trois lignes d’introduction qui contiennent le mot-clé principal. Une collection qui vend en haut, qui se positionne en bas. Le contenu du bas sert l’acheteur (critères de choix, guide des tailles, questions fréquentes), pas Google. Un blog minimaliste Le blog Shopify fait le strict minimum. Pas de catégories. Un préfixe imposé /blogs/nom-du-blog/. Des pages /blogs/news/tagged/x générées pour chaque tag, quasi identiques entre elles. Contournement : plusieurs blogs en guise de catégories (/blogs/guides/, /blogs/entretien/) plutôt qu’un unique /blogs/news/ ; les pages tag en noindex, via une condition dans le head de theme.liquid ; un maillage manuel de chaque article vers les produits et collections : c’est là que le blog rapporte du chiffre d’affaires. {% if template contains 'blog' and current_tags %} <meta name="robots" content="noindex, follow"> {% endif %} Données structurées du thème : le minimum syndical Le thème fournit le balisage Product minimal, rarement plus. Manques fréquents : une offre par variante (prix, disponibilité, GTIN), les avis, la livraison et les retours, BreadcrumbList, Organization. Autre piège : les apps d’avis injectent souvent leur propre balisage Product. Résultat, deux entités Product sur la même page, avec des prix ou des notes discordants. Contournement : partir du filtre Liquid structured_data ({{ product | structured_data }}), qui génère un JSON-LD Product à partir des données Shopify ; compléter par un snippet JSON-LD maison (BreadcrumbList, Organization, retours) ; passer une page produit au test des résultats enrichis de Google et désactiver le balisage en doublon, celui de l’app ou celui du thème. Performance : les apps, premier ennemi des Core Web Vitals Le paradoxe tient en deux chiffres. 76 % des boutiques Shopify passent les Core Web Vitals sur mobile (HTTP Archive, Web Almanac 2025), mais leur score Lighthouse Performance médian sur mobile n’est que de 55, contre 71 sur desktop (HTTP Archive, Web Almanac 2025). C’est moins que le score moyen de 60 exigé de tout thème pour entrer au Theme Store (Shopify Dev Docs, 2026). Lecture : l’infrastructure Shopify tire les données terrain vers le haut, les ajouts du marchand tirent les mesures de laboratoire vers le bas. Le thème sort de la boîte au-dessus du seuil, la boutique en production finit en dessous. Les coupables habituels : les scripts d’apps chargés sur toutes les pages (avis, chat, upsell, pop-up, fidélité) ; le code résiduel : une app désinstallée laisse souvent ses snippets dans le thème ; les images servies sans le filtre image_url ni tailles responsives ; les polices en plusieurs graisses et les vidéos en lecture automatique en haut de page. Contournement : audit app par app : désactiver une app à la fois et mesurer LCP et INP dans PageSpeed Insights ; préférer les apps en app embeds, désactivables depuis l’éditeur de thème ; après chaque désinstallation, chercher les snippets orphelins (render ‘nom-de-l-app’) ; images via image_url avec srcset, lazy-loading sous la ligne de flottaison, jamais sur l’image LCP ; polices système, ou une seule police web préchargée. International et migrations : Markets et redirections Markets : hreflang automatiques, contrôle limité Shopify Markets gère plusieurs pays et langues sur une seule boutique, idéalement en sous-dossiers (/en/, /de/). Shopify ajoute automatiquement les hreflang au thème et les met à jour quand domaines ou langues changent. Revers : en ajouter à la main crée des annotations en doublon ou contradictoires (Shopify Dev Docs, 2026). Le contrôle fin vous échappe. Autres limites : sur les marchés secondaires, les sous-dossiers combinent langue et pays (/en-us/), et les handles restent dans la langue d’origine tant que vous ne les traduisez pas. Un /de/products/robe-lin n’aide personne à se positionner en Allemagne. Contournement : traduire les handles, titles et metas avec Translate & Adapt ou une app de traduction ; pas de redirection forcée selon l’IP : Googlebot explore surtout depuis les États-Unis et ne verrait qu’une version ; vérifier dans la Search Console que les hreflang générés pointent vers des URLs qui répondent en 200. Pour le reste, les principes sont ceux de tout projet pour référencer un site multilingue : une URL par langue, un contenu réellement traduit, des signaux cohérents. Redirections 301 natives, mais encadrées Shopify gère les 301 nativement : jusqu’à 100 000 redirections, 20 millions sur Shopify Plus (Shopify Help Center, 2026), à l’unité ou par import CSV. Trois limites à connaître : une redirection ne fonctionne que depuis une URL cassée : si l’ancienne URL charge encore une page valide, la redirection est ignorée ; impossible de rediriger depuis les URLs de collection filtrées par tag (/collections/robes/lin) ; impossible de rediriger les chemins fixes /products et /collections eux-mêmes. Contournement : un plan de redirection (ancienne URL, nouvelle URL) avant chaque refonte ou migration ; la case « Créer une redirection d’URL » cochée à chaque modification de handle ; pour un produit supprimé, une redirection vers son remplaçant ou la collection parente, jamais vers l’accueil en masse ; Shopify Flow pour automatiser les cas récurrents, comme les produits archivés. Headless et Hydrogen : quand sortir du cadre Quand le Liquid ne suffit plus, reste le headless : Shopify ne sert plus que de back-office, le front-end est séparé. La voie officielle s’appelle Hydrogen (framework React de Shopify), hébergé sur Oxygen, inclus sans surcoût sur les plans payants. Vous gagnez le contrôle total des URLs, du rendu et des facettes. Vous perdez tout ce que Shopify faisait seul. Critère Thème Liquid Headless Hydrogen Structure d’URL Préfixes imposés Libre Sitemap, canonical, hreflang Générés par Shopify À développer et maintenir Apps Installation en un clic Intégration sur mesure Coût Faible Élevé (développement et maintenance) Le headless se justifie quand plusieurs critères se cumulent : un catalogue très large, à l’arborescence profonde ; des facettes indexables à grande échelle, ingérables par collections dédiées ; une équipe tech interne ou un prestataire engagé dans la durée ; un budget de maintenance assumé. Sinon, un thème Liquid bien nettoyé fait le travail dans l’immense majorité des cas. Le headless ne corrige pas une stratégie SEO absente. Il la rend juste plus chère. SEO Shopify : par où commencer sur une boutique existante Inutile de tout traiter d’un coup. L’ordre qui rapporte le plus vite : Liens de collection vers /products/ : une ligne de Liquid, effet direct sur le crawl. robots.txt.liquid pour les facettes : fin du gaspillage de crawl sur les filtres. Audit des apps : suppression des inutiles, nettoyage du code résiduel. Contenu des collections : métafield sous la grille, d’abord sur les collections qui ont déjà des impressions. Données structurées : schéma Product complet, doublons supprimés, BreadcrumbList ajouté. Avant chaque étape, relevez les métriques de départ : pages explorées, pages indexées, impressions par collection. Plus de datas, moins de blabla : un correctif sans mesure avant et après reste une opinion. FAQ sur le SEO Shopify Shopify est-il bon pour le SEO ? Oui sur les bases (canonical, sitemap, balises, performances terrain). Non sur l’architecture : URLs, facettes, variantes et blog demandent des corrections dans le thème. Peut-on supprimer /products/ ou /collections/ des URLs ? Non, pas sur un thème Shopify classique. Seul un front-end headless (Hydrogen ou autre) libère la structure d’URL. Faut-il une app SEO sur Shopify ? Une app par besoin précis (redirections en masse, metafields, traduction), oui. Une suite tout-en-un qui injecte des scripts partout, rarement : elle alourdit la boutique pour des fonctions que le thème gère déjà. Conclusion : moins d’apps, plus de Liquid Shopify ne vous empêche pas de ranker. Il vous empêche de bricoler. Ses 13 limites sont documentées, et presque toutes se contournent dans le thème. Les boutiques qui gagnent ne sont pas celles qui installent une app de plus. Ce sont celles qui savent quels verrous sauter, et dans quel ordre. Lesquels coûtent du trafic à votre boutique ? Demandez un audit SEO de votre boutique Shopify : les 13 limites passées au crible, et des correctifs classés par impact.
L’article SEO Shopify : les vraies limites et comment les contourner est apparu en premier sur Brioude.


