Auditez vos données structurées Product, Offer et AggregateRating sur PrestaShop. Découvrez comment valider, corriger et optimiser vos rich snippets pour le SEO e-commerce.
L'audit des données structurées Product, Offer et AggregateRating sur PrestaShop consiste à vérifier la conformité du balisage JSON-LD afin d'obtenir des rich snippets dans les résultats de recherche Google, améliorant ainsi le taux de clic et la visibilité des fiches produits.
Pour auditer vos données structurées PrestaShop, commencez par inspecter le code source de vos pages produits et vérifiez la présence du schéma Product avec les propriétés offer et aggregateRating. Utilisez l'outil Rich Results Test de Google pour valider chaque fiche, puis corrigez les erreurs comme les prix manquants, les devises absentes ou les évaluations non conformes. Optimisez ensuite les champs facultatifs comme brand, gtin, et review pour maximiser l'affichage des snippets. Enfin, automatisez la génération du JSON-LD via un module dédié ou un override de classe pour garantir une mise à jour dynamique.
Cas fréquent observé : les marchands PrestaShop installent un module SEO qui génère des données structurées, mais celles-ci ne respectent pas les spécifications Google pour les prix ou les évaluations, ce qui bloque l'affichage des rich snippets. Dans les faits, la majorité des erreurs proviennent d'une absence de l'offre (Offer) ou d'un aggregateRating mal formaté, souvent à cause de thèmes obsolètes ou de modules non mis à jour. En accompagnement, il est courant de constater que les propriétés comme priceCurrency ou availability sont omises, ou que les reviews sont agrégées sans lien vers les avis individuels, rendant le balisage invalide.
Les données structurées sont un langage standardisé (JSON-LD) que Google utilise pour comprendre le contenu de vos pages et afficher des rich snippets. Pour un site e-commerce PrestaShop, trois schémas sont essentiels : Product, Offer et AggregateRating. Le schéma Product décrit l'article lui-même (nom, image, description), Offer détaille l'offre commerciale (prix, devise, disponibilité), et AggregateRating agrège les avis clients (note moyenne, nombre d'avis).
L'objectif est d'obtenir des résultats enrichis comme les étoiles de notation, le prix barré, ou le badge 'En stock'. Google exige que ces données soient exactes et cohérentes avec le contenu visible. Une erreur courante est de copier-coller un code statique sans le lier à la base de données, ce qui donne des informations obsolètes. PrestaShop génère souvent un JSON-LD basique dans le thème par défaut, mais il peut manquer des propriétés obligatoires comme priceCurrency ou availability.
Pour auditer efficacement, il faut connaître les champs requis : Product nécessite name et image ; Offer nécessite price, priceCurrency, availability ; AggregateRating nécessite ratingValue, reviewCount, bestRating. L'absence d'un seul champ peut empêcher l'affichage du snippet. De plus, Google tolère mal les incohérences : si le prix affiché diffère du prix dans le JSON, le snippet peut être supprimé.
L'audit commence par l'inspection du code source d'une page produit type. Ouvrez la page dans le navigateur, faites un clic droit et 'Afficher le code source de la page', puis recherchez 'application/ld+json'. Si vous ne trouvez rien, le thème ou le module ne génère pas de données structurées. Si vous trouvez un bloc, copiez-le et collez-le dans le Rich Results Test de Google.
Le test vous indique les erreurs, avertissements et éléments valides. Les erreurs courantes sont : 'Le champ price est manquant', 'Le champ availability doit être une URL valide' (par exemple, http://schema.org/InStock), 'Le champ aggregateRating doit avoir reviewCount'. Corrigez chaque erreur dans le code source ou via le module. Pour les avertissements, comme 'Le champ brand est recommandé', ajoutez-le pour améliorer la qualité.
Répétez l'opération sur 3 à 5 produits représentatifs (best-seller, nouveau produit, produit sans avis). Notez les incohérences : certains produits peuvent avoir des données structurées, d'autres non, selon la configuration du module. Vérifiez aussi les pages catégories : elles ne doivent pas contenir de données structurées Product, mais plutôt ItemList. Enfin, utilisez la Search Console pour voir si Google détecte des erreurs sur l'ensemble du site.
La première erreur est l'absence de l'offre (Offer) dans le JSON-LD. Sans elle, Google ne peut pas afficher le prix dans le snippet. Vérifiez que le bloc contient un objet 'offers' avec les propriétés 'price', 'priceCurrency' et 'availability'. La devise doit être en code ISO (EUR, USD) et la disponibilité doit être une URL schema.org valide.
Deuxième erreur : l'aggregateRating est mal formaté. Par exemple, si le module d'avis n'est pas installé, le champ peut être vide ou contenir des valeurs par défaut comme ratingValue : 0. Google interprète cela comme une note nulle et peut bloquer le snippet. Assurez-vous que le champ n'apparaît que si des avis existent, ou supprimez-le.
Troisième erreur : les prix ne sont pas dynamiques. Si vous utilisez un code statique, les prix soldés ou les variations de déclinaisons ne seront pas mis à jour. PrestaShop gère les combinaisons de produits ; le JSON-LD doit refléter le prix de la combinaison sélectionnée par défaut. Utilisez un module qui injecte le prix via Smarty ou JavaScript pour garantir la mise à jour.
Enfin, l'absence de l'attribut 'image' ou une URL d'image non valide peut aussi causer des erreurs. Vérifiez que le champ 'image' contient une URL absolue complète, sans caractères spéciaux.
Le Rich Results Test de Google est l'outil principal : il valide une URL ou un code JSON-LD et montre les erreurs en temps réel. Utilisez-le pour chaque page modifiée. Le Schema Markup Validator de Google (anciennement Structured Data Testing Tool) est plus complet pour les schémas complexes, mais il est progressivement remplacé par le Rich Results Test.
Pour un audit de masse, la Search Console est indispensable : allez dans 'Améliorations' > 'Produits' pour voir les erreurs détectées par Google sur l'ensemble du site. Vous pouvez exporter la liste des URLs avec erreurs et les corriger une par une. Des outils comme Merchant Center (si vous utilisez Google Shopping) peuvent aussi signaler des incohérences dans les prix ou les disponibilités.
Côté PrestaShop, des modules comme PrestaSEO Structured Data ou SEO Expert permettent de générer un JSON-LD dynamique et valide. Avant d'acheter, testez la version gratuite ou lisez les avis pour vérifier qu'il gère les combinaisons et les avis. Pour les développeurs, un override de la classe Product peut injecter le JSON-LD directement dans le template header.tpl.
Au-delà des champs obligatoires, Google valorise les propriétés supplémentaires qui enrichissent le snippet. Le champ brand (marque) est fortement recommandé : il peut apparaître dans le résultat de recherche et améliorer la confiance. Dans PrestaShop, si vous utilisez le champ 'marque' dans la fiche produit, assurez-vous qu'il est inclus dans le JSON-LD.
Le champ gtin (code-barres) ou mpn (référence fabricant) permet à Google d'identifier précisément le produit, ce qui peut déclencher des snippets plus riches, notamment pour les produits comparables. Saisissez ces codes dans les attributs produits PrestaShop et mappez-les dans le module de données structurées.
Pour les produits avec plusieurs déclinaisons (taille, couleur), utilisez la propriété offers avec un tableau d'offres, chacune avec son propre prix et sa disponibilité. Google accepte les offres multiples si elles sont correctement structurées. Évitez de mettre un seul prix moyen : cela serait considéré comme inexact.
Enfin, les reviews individuelles peuvent être intégrées via le schéma Review, lié à AggregateRating. Si votre module d'avis le permet, ajoutez un tableau 'review' avec chaque avis (author, reviewBody, datePublished). Cela peut générer un snippet avec extraits d'avis.
Pour un produit sans avis, ne pas inclure l'objet aggregateRating dans le JSON-LD. Si vous le laissez avec ratingValue : 0, Google peut interpréter cela comme une note nulle et afficher un snippet peu attrayant, voire le bloquer. Préférez omettre la propriété jusqu'à ce que des avis soient collectés.
Pour les produits à prix variable (ex : options de personnalisation), le prix affiché par défaut doit être celui de la combinaison la plus vendue ou la moins chère, selon votre stratégie. Indiquez ce prix dans l'offre principale, et si vous le souhaitez, ajoutez des offres supplémentaires pour les autres combinaisons. Attention : Google peut pénaliser si le prix du snippet diffère du prix sur la page après sélection d'une option.
Les pages catégories ne doivent pas utiliser le schéma Product, mais ItemList pour lister les produits. Certains modules ajoutent par erreur Product sur les catégories, ce qui peut causer des avertissements. Vérifiez que seules les pages produits contiennent le schéma Product. Les pages catégories peuvent bénéficier du schéma CollectionPage ou ItemList pour améliorer l'affichage dans la recherche.
Beaucoup de thèmes PrestaShop incluent un JSON-LD basique dans le fichier header.tpl, souvent statique et non mis à jour. Par exemple, le thème par défaut 'classic' génère un bloc avec des champs vides ou des valeurs par défaut. Si vous utilisez un thème personnalisé, vérifiez que le code est dynamique et utilise les variables Smarty comme {$product.price_amount}.
Les modules SEO populaires peuvent entrer en conflit avec le thème. Par exemple, si le module ajoute un second bloc JSON-LD, Google peut voir deux définitions et ne pas savoir laquelle prendre. Utilisez l'inspecteur de code pour vérifier qu'un seul bloc application/ld+json est présent. Si deux blocs existent, désactivez l'un d'eux dans les préférences du module ou du thème.
Enfin, les mises à jour de PrestaShop ou des modules peuvent casser le balisage. Après chaque mise à jour, refaites un audit rapide sur 2-3 produits. Un module qui fonctionnait avant peut perdre ses fonctionnalités si les hooks changent. Testez également la compatibilité avec les modules d'avis : certains modules d'avis ne mettent pas à jour l'aggregateRating en temps réel.
Une fois l'audit terminé et les corrections appliquées, mettez en place un suivi régulier. Utilisez la Search Console pour surveiller les erreurs de données structurées chaque semaine. Créez un rapport personnalisé dans Google Analytics pour suivre le taux de clic (CTR) des pages avec snippets vs sans snippets, afin de mesurer l'impact.
Planifiez un audit mensuel sur un échantillon de produits, surtout après l'ajout de nouveaux produits ou une campagne promotionnelle. Les prix soldés doivent être reflétés dans le JSON-LD, sinon Google peut afficher l'ancien prix. Pour les produits en rupture de stock, mettez à jour la propriété availability en OutOfStock.
Documentez les bonnes pratiques dans un guide interne pour l'équipe : comment ajouter un nouveau produit avec les champs gtin, marque, et comment vérifier le JSON-LD avant publication. Formez les rédacteurs à ne pas modifier manuellement le code source, mais à utiliser les champs dédiés dans le back-office. Enfin, testez régulièrement avec l'outil de test de Google pour anticiper les changements d'algorithmes.
Un audit bien mené des données structurées peut augmenter le taux de clic (CTR) de 10 à 30 % sur les pages produits, selon les études sectorielles. Les rich snippets attirent l'œil dans les résultats de recherche, notamment les étoiles de notation et le prix barré. Pour un site avec des avis clients, l'affichage des étoiles peut faire la différence face à un concurrent sans snippet.
De plus, Google utilise les données structurées pour alimenter des fonctionnalités comme le carrousel de produits, les résultats de recherche vocale, ou Google Shopping. Un balisage correct peut donc améliorer la visibilité au-delà des résultats organiques classiques. Enfin, un audit régulier évite les pénalités : Google peut dégrader le classement d'un site qui utilise des données trompeuses.
Pour mesurer l'impact, comparez le CTR avant et après l'audit sur les pages corrigées. Utilisez la Search Console pour voir les impressions et les clics. Si le CTR s'améliore, l'effort d'audit est justifié. N'oubliez pas que les données structurées sont un levier SEO technique souvent sous-exploité sur PrestaShop.
Diagnostic e-commerce
Partagez votre boutique : on repère les leviers SEO, UX et conversion à fort impact, et on vous donne l'ordre dans lequel les activer.
| Module | Fonctionnalités clés | Points de vigilance |
|---|---|---|
| PrestaSEO Structured Data | JSON-LD dynamique, support des combinaisons, intégration avis | Version payante, nécessite configuration des champs GTIN |
| SEO Expert | Multi-schémas (Product, Article, FAQ), validation intégrée | Peut entrer en conflit avec certains thèmes, support limité |
| PrestaShop Native (thème classic) | Génération basique de Product et Offer | Champs souvent vides, pas d'aggregateRating, statique |
| Custom override (développeur) | Contrôle total, sur mesure | Nécessite compétences techniques, maintenance manuelle |
| Erreur détectée | Cause probable | Correction recommandée |
|---|---|---|
| Champ price manquant | Module non configuré pour les prix dynamiques | Utiliser Smarty {product.price_amount} dans le template |
| availability non valide | URL schema.org incorrecte | Remplacer par http://schema.org/InStock ou OutOfStock |
| aggregateRating avec ratingValue : 0 | Module d'avis inactif ou mal paramétré | Supprimer l'objet si aucun avis, ou activer le module |
| Deux blocs JSON-LD | Conflit entre thème et module | Désactiver le bloc du thème dans header.tpl |
| Image absente ou URL relative | Chemin d'image non absolu | Utiliser {$product.cover.large.url} avec URL complète |
| Propriété | Obligatoire/Recommandé | Impact sur le snippet |
|---|---|---|
| name | Obligatoire | Titre du produit affiché |
| image | Obligatoire | Image dans le snippet (si applicable) |
| offers.price | Obligatoire | Prix affiché |
| offers.priceCurrency | Obligatoire | Devise (EUR, USD) |
| offers.availability | Obligatoire | Disponibilité (en stock, rupture) |
| aggregateRating.ratingValue | Recommandé si avis | Étoiles de notation |
| brand | Recommandé | Nom de la marque dans le snippet |
| gtin | Recommandé | Identification produit (code-barres) |
Plusieurs raisons possibles : les champs obligatoires comme price ou availability sont manquants, le JSON-LD contient des erreurs de syntaxe, ou Google n'a pas encore indexé la page mise à jour. Utilisez le Rich Results Test pour identifier les erreurs précises. Assurez-vous aussi que le contenu visible correspond exactement aux données structurées.
Non, il est déconseillé d'inclure aggregateRating avec une note de 0 ou un nombre d'avis nul. Google peut interpréter cela comme une tentative de manipulation. Supprimez purement et simplement l'objet aggregateRating du JSON-LD jusqu'à ce que des avis valides soient collectés.
Utilisez un tableau d'offres (offers) avec chaque déclinaison comme un objet distinct, contenant son propre price, priceCurrency, availability, et éventuellement un sku. Assurez-vous que le prix affiché par défaut sur la page correspond à la première offre du tableau. Google accepte jusqu'à 100 offres par produit.
Le module PrestaSEO Structured Data est souvent recommandé pour sa compatibilité avec les combinaisons et les avis. Vérifiez sur la page officielle du module les fonctionnalités exactes et les avis des utilisateurs. Pour une solution gratuite, un override développeur peut être plus fiable qu'un module payant mal configuré.
Les données structurées n'améliorent pas directement le classement, mais elles augmentent le taux de clic (CTR) grâce aux rich snippets, ce qui peut indirectement influencer le positionnement. Google a confirmé que les données structurées sont un signal de qualité, mais pas un facteur de ranking direct.
Utilisez la Search Console : allez dans 'Améliorations' > 'Produits' pour voir le nombre de pages avec données structurées valides et les erreurs. Vous pouvez aussi utiliser l'outil d'inspection d'URL pour une page spécifique et voir le rendu Google avec les données structurées détectées.
Remplacez le code statique par un code dynamique utilisant les variables Smarty de PrestaShop. Modifiez le fichier header.tpl de votre thème pour appeler les données via {$product.price_amount}, {$product.cover.large.url}, etc. Si vous n'êtes pas à l'aise avec le code, installez un module SEO qui gère la génération dynamique.
Sources : Google Search Central · Google — Core Web Vitals · Shopify — performance.