Les données structurées produit sont un bloc de code (JSON-LD, vocabulaire schema.org) qui décrit à Google le nom, le prix, la disponibilité, la note et les avis de chaque fiche. Bien implémentées sur Shopify, elles rendent vos pages éligibles aux étoiles, au prix et à la mention « En stock » dans les résultats, ainsi qu'aux fiches marchandes. Le travail consiste moins à « ajouter du schema » qu'à avoir un seul balisage complet, cohérent avec la page, et suivi dans Search Console.
Données structurées produit : ce que Google en fait vraiment
Google lit ce balisage pour comprendre sans ambiguïté ce que contient la page. En échange, il peut enrichir votre résultat : note sur 5 avec le nombre d'avis, prix, disponibilité, parfois frais de livraison et politique de retour.
Deux familles d'affichage coexistent, et Google les distingue clairement dans sa documentation sur les données structurées Product :
| Affichage | Pages concernées | Ce qu'il peut montrer |
|---|---|---|
| Extraits de produit (product snippets) | Toute page parlant d'un produit : fiche, test, comparatif | Note, avis, prix, disponibilité |
| Fiches marchandes (merchant listings) | Pages où l'on achète directement le produit | Prix, stock, livraison, retours, variantes, visibilité dans l'onglet Shopping et Google Images |
Une fiche produit Shopify est concernée par les deux. C'est pour cela que Search Console affiche deux rapports distincts, avec des exigences différentes.
Un point à garder en tête : ces données n'améliorent pas votre position. Elles améliorent la façon dont votre résultat est présenté, donc le taux de clic. Sur une requête produit où cinq boutiques se ressemblent, celle qui affiche 4,8 étoiles, un prix et « En stock » part avec un avantage net. Pour le travail de fond sur le classement, voyez notre méthode pour rédiger une fiche produit qui ranke et qui convertit.
Les propriétés obligatoires et recommandées
La page Google sur les fiches marchandes liste les propriétés attendues. Voici la version utile pour un e-commerçant.
Obligatoires pour les fiches marchandes
name: le nom du produit.image: une ou plusieurs images de bonne résolution.offersavecpriceetpriceCurrency(EUR). Le prix doit être supérieur à zéro : un produit à 0 € n'est pas éligible aux fiches marchandes.
Recommandées (et à remplir en pratique)
availability: InStock, OutOfStock, PreOrder, BackOrder… avec les valeurs exactes de schema.org.skuet un identifiantgtin(gtin13 pour un EAN) si vos produits en ont un.brand: votre marque.aggregateRatingetreviewsi vous affichez des avis.shippingDetailsethasMerchantReturnPolicypour la livraison et les retours.priceValidUntilsi vous affichez un prix promotionnel limité dans le temps.
Pour les extraits de produit, Google demande seulement name et au moins un élément parmi review, aggregateRating ou offers, comme le précise sa documentation sur les extraits de produit. Si vous balisez l'offre sans la note, l'outil de test peut remonter un avertissement : ce n'est pas bloquant, mais c'est le signe qu'il manque les étoiles.
Livraison et retours : au niveau de la boutique ou du produit
Google recommande de déclarer une politique de livraison et de retour globale au niveau de l'organisation plutôt que de la répéter sur chaque offre. Vous pouvez aussi renseigner ces informations dans Google Merchant Center. Réservez le balisage au niveau du produit aux cas particuliers (produit encombrant, retours non acceptés).
Comment Shopify génère le balisage produit
Sur Shopify, vous partez rarement de zéro. Le filtre Liquid structured_data produit automatiquement un bloc JSON-LD : un Product pour un produit sans variante, un ProductGroup quand le produit a des variantes. Les thèmes récents l'utilisent dans le gabarit produit.
Le problème est ailleurs. Sur la plupart des boutiques que nous auditons, on trouve une ou plusieurs de ces situations :
- Un vieux thème avec un balisage écrit à la main il y a des années, incomplet (pas de marque, pas de GTIN, disponibilité mal formatée).
- Deux blocs Product : celui du thème, plus celui d'une application SEO ou d'avis. Google reçoit deux descriptions du même produit, parfois contradictoires.
- Une application d'avis qui affiche des étoiles sur la page mais n'injecte pas
aggregateRatingdans le bon bloc, ou l'injecte dans un bloc séparé. - Un reste d'application désinstallée qui continue d'injecter du code.
La règle : une seule source de vérité pour le bloc Product. Soit le thème (et l'application d'avis vient s'y greffer), soit une application dédiée (et vous désactivez le bloc du thème). Pas les deux.
Étoiles d'avis dans Google : les règles à respecter
Les étoiles sont l'élément qui fait le plus varier le taux de clic, et celui qui pose le plus de problèmes. Les consignes de Google sur les extraits d'avis tiennent en quelques points :
- Les avis balisés doivent être visibles sur la page : la note moyenne et des avis lisibles par le visiteur, pas uniquement dans le code.
- La note agrégée doit indiquer
ratingCountoureviewCount. - La note balisée doit correspondre à celle affichée. Une page qui affiche 4,6 et balise 4,9 est un signal de manipulation.
- Les avis « auto-attribués » sur votre propre entreprise (type Organization ou LocalBusiness) ne sont pas éligibles. Les avis clients sur un produit le sont.
Autrement dit, une fiche produit avec de vrais avis clients, visibles et balisés dans le bloc Product, coche toutes les cases. Pour collecter ces avis et les mettre en valeur côté conversion, voyez notre guide sur la preuve sociale et les avis clients.
Variantes : Product ou ProductGroup ?
Un t-shirt en 4 tailles et 3 couleurs, c'est 12 variantes avec parfois des prix et des stocks différents. Google prend en charge un balisage dédié : un ProductGroup qui porte les propriétés communes, avec hasVariant pour chaque déclinaison et variesBy pour indiquer les axes (taille, couleur).
Sur Shopify, le filtre structured_data génère déjà cette structure pour les produits à variantes. Si votre thème utilise encore un balisage maison, vérifiez qu'il ne déclare pas un seul prix et une seule disponibilité pour l'ensemble. Le cas classique : la page annonce « En stock » alors que la variante affichée par défaut est épuisée, et Merchant Center remonte une incohérence de disponibilité.
Exemple de bloc JSON-LD propre
Voici un exemple simplifié pour un produit sans variante (valeurs fictives) :
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Bougie parfumée Figue 220 g",
"image": ["https://exemple.fr/cdn/bougie-figue.jpg"],
"sku": "BG-FIG-220",
"gtin13": "3760000000000",
"brand": { "@type": "Brand", "name": "Maison Exemple" },
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "128" },
"offers": {
"@type": "Offer",
"url": "https://exemple.fr/products/bougie-figue",
"price": "35.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}
Tout ce qui figure ici doit être visible sur la page : le nom, le prix de 35 €, la note de 4,7 sur 128 avis et la disponibilité.
Les erreurs Search Console les plus fréquentes et leur correction
Dans Search Console, section Améliorations (ou Expériences d'achat), ouvrez les rapports « Fiches marchandes » et « Extraits de produit ». Voici les messages que nous rencontrons le plus souvent.
| Message Search Console | Cause habituelle sur Shopify | Correction |
|---|---|---|
| Champ « offers », « review » ou « aggregateRating » manquant | Bloc incomplet d'un vieux thème ou d'une page sans prix | Utiliser le bloc du thème à jour ou compléter le gabarit produit |
| Champ « price » manquant ou non valide | Prix formaté avec symbole ou virgule (« 35,00 € ») | Prix numérique avec point décimal, devise dans priceCurrency |
| Champ « availability » non valide | Texte libre (« Disponible ») au lieu d'une URL schema.org | Utiliser les valeurs officielles (InStock, OutOfStock…) |
| Champ « shippingDetails » ou « hasMerchantReturnPolicy » manquant | Avertissement, non bloquant | Déclarer livraison et retours au niveau de l'organisation ou dans Merchant Center |
| Élément en double / plusieurs éléments Product | Thème + application SEO ou d'avis | Désactiver l'une des deux sources |
| Identifiant global manquant (gtin) | GTIN absent dans Shopify | Renseigner le champ code-barres des variantes si vos produits en ont un |
Distinguez erreurs et avertissements. Une erreur rend la page inéligible à l'affichage enrichi. Un avertissement signale une information recommandée manquante : à traiter, mais après les erreurs.
Une fois la correction publiée, cliquez sur « Valider la correction » dans le rapport. Google recrawle les pages concernées et vous suivez la progression.
Les erreurs à éviter
- Baliser des avis qui n'existent pas sur la page. C'est la façon la plus sûre d'obtenir une action manuelle pour données structurées trompeuses.
- Laisser un prix barré dans le balisage. Le
pricedoit être le prix payé aujourd'hui, pas le prix de référence. - Tester une seule fiche. Le thème s'applique à tout le catalogue, mais les données varient : produit sans avis, produit épuisé, produit à variantes, produit en promotion. Testez un exemple de chaque cas.
- Oublier la cohérence avec Merchant Center. Si vous diffusez des annonces Shopping, un prix ou un stock différent entre la page, le balisage et le flux déclenche des refus. Les bonnes pratiques de flux sont détaillées dans notre article sur l'optimisation du flux Google Merchant Center.
- Empiler les applications SEO. Chaque application ajoute son code, ses scripts et souvent son propre balisage.
Checklist de vérification en 20 minutes
- Ouvrez une fiche produit dans l'outil de test des résultats enrichis et comptez les éléments Product détectés : il doit y en avoir un seul.
- Vérifiez que nom, prix, devise, disponibilité et image sont présents et exacts.
- Vérifiez que la note et le nombre d'avis correspondent à ce qui est affiché.
- Répétez sur un produit épuisé, un produit à variantes et un produit sans avis.
- Ouvrez les rapports « Fiches marchandes » et « Extraits de produit » dans Search Console, notez le nombre de pages en erreur.
- Listez les applications installées qui touchent au SEO ou aux avis, et identifiez celle qui produit le balisage.
Ce travail s'inscrit dans le socle technique décrit dans notre guide complet du SEO e-commerce et dans notre guide pour bien référencer une boutique Shopify.
Par où commencer cette semaine
Commencez par le test des résultats enrichis sur cinq fiches représentatives, puis par les rapports Search Console. Si vous trouvez deux blocs Product, c'est votre priorité numéro un. Ensuite, assurez-vous que vos avis sont bien injectés dans le bon bloc. Enfin, déclarez livraison et retours.
Les étoiles augmentent le clic, mais elles ne vendent pas à la place de la page : des visuels produit qui donnent envie font le reste, et c'est précisément ce que produit Le Lab avec ses packshots et créas IA livrés en 72 h. Si vous voulez que le SEO s'intègre à un plan d'acquisition complet, c'est le rôle de notre accompagnement Écosystème sur 90 jours, et le détail de notre approche technique est sur la page agence SEO e-commerce.
Si vous préférez qu'on regarde votre balisage ensemble, vous pouvez réserver un appel stratégique de 30 minutes.
