·SEO technique·Schema.org Product en JSON-LD : le guide e-commerce 2026
SEO technique
Schema.org Product en JSON-LD : le guide e-commerce 2026
Le JSON-LD Product débloque les rich results Google (étoiles, prix, disponibilité). Voici l'implémentation complète en 2026, erreurs à éviter incluses.
Vous avez déjà vu ces résultats Google où une fiche produit affiche directement les étoiles, le prix et "En stock" sous le titre ? C'est un rich result, et c'est ce qu'un schema.org Product bien implémenté déclenche. Les sites qui en bénéficient voient leur CTR augmenter de 15 à 40 % sur la position équivalente sans rich result.
En 2026, l'implémentation via JSON-LD est la méthode officielle et recommandée par Google. Voici la version complète, testable et production-ready.
Trois formats permettent d'ajouter du schema.org à une page web : Microdata (directement dans le HTML), RDFa (attributs HTML5), et JSON-LD (bloc de données structurées séparé).
Google recommande JSON-LD depuis 2015, et en 2026 c'est devenu le standard de fait. Raisons :
Séparation données/présentation : le JSON-LD vit dans un <script type="application/ld+json"> dans le <head>, indépendamment du HTML visible
Plus simple à générer : un seul bloc JSON par page, facile à maintenir
Pas de conflit avec votre thème : pas besoin d'aller modifier la structure HTML des templates
Meilleure compatibilité avec les frameworks modernes (Next.js, Nuxt, etc.)
Microdata reste lisible par Google mais n'est plus recommandé pour les nouvelles implémentations.
La partie la plus sensible. Quatre règles à respecter :
priceCurrency en ISO 4217 : "EUR", "USD", "GBP"… pas "€", "$" ou "£". Erreur fréquente qui fait échouer le rich result.
price en string, pas en nombre : "149.00" pas 149.00. Google tolère les deux en 2026 mais les guidelines recommandent string.
availability en URL schema.org complète :
https://schema.org/InStock → en stock
https://schema.org/OutOfStock → rupture
https://schema.org/PreOrder → précommande
https://schema.org/BackOrder → commande spéciale avec délai
priceValidUntil (optionnel mais recommandé) : date de fin de validité du prix au format ISO 8601 ("2026-12-31"). Google l'apprécie pour détecter les prix obsolètes.
Déclenche les étoiles dans les SERP. Déclencheurs :
ratingValue entre 1 et 5
reviewCount : minimum 1, mais Google recommande 3+ pour afficher
Les reviews correspondantes doivent être visibles sur la page — fausser l'AggregateRating avec des reviews inexistantes = pénalité manuelle possible
Astuce : si vous avez peu de reviews, affichez-les sur votre page via un widget (Yotpo, Judge.me, Trustpilot) et récupérez le count + rating moyen depuis leur API pour le JSON-LD.
Depuis 2023, Shopify génère automatiquement un schema Product sur les pages produit si vous utilisez un thème officiel. Problème : le schema par défaut est souvent incomplet (pas d'AggregateRating, pas de brand).
Attention : générer le JSON-LD côté client (via useEffect) ne fonctionne pas pour le SEO — Google scrape en server-render. Assurez-vous que le JSON-LD est bien dans le HTML initial retourné par le serveur.
Contradictions entre page visible et JSON-LD. Si la page affiche "En stock" mais le JSON-LD dit OutOfStock, Google ignore le JSON-LD. Synchronisez les deux à la même source de données.
Prix différent en JSON-LD et sur la page. Même logique : Google détecte la divergence et ignore le rich result.
Plusieurs Product dans un même <script>. Un seul @type: Product par script. Si vous avez des variantes, utilisez @type: ProductGroup avec hasVariant: [...] pour les lier.
Images non accessibles. Les URLs d'images doivent être publiques (pas derrière un login). Testez chaque URL avec curl pour vérifier qu'elle retourne un 200.
AggregateRating inventé. Mettre 4.9 étoiles sur une fiche sans reviews visibles = pénalité manuelle possible, risque non négligeable.
Si votre produit a plusieurs tailles ou couleurs, 2 approches :
Approche 1 : un seul schema Product (le parent)
Plus simple, convient à 90 % des cas. Le schema parent décrit le produit générique, et la page gère les variantes via le sélecteur. Le prix affiché est celui par défaut, l'availability est InStock si au moins une variante est disponible.
Approche 2 : ProductGroup avec hasVariant
Plus précis mais plus complexe. Recommandé si vos variantes ont des prix très différents ou des disponibilités divergentes (rupture sur la taille 44 mais pas sur la 42). Google supporte ProductGroup depuis 2022.
Entre 1 et 4 semaines après publication du schema correct. Google doit re-crawler la page et déclencher l'éligibilité côté algorithme. Vous pouvez accélérer en soumettant l'URL via Search Console → URL Inspection → Request Indexing.
Pas directement. Le schema n'est pas un signal de ranking. Il débloque les rich results (étoiles, prix, dispo dans les SERP) qui augmentent le CTR, ce qui peut améliorer le ranking indirectement via le signal d'engagement.
Optionnel. Ajouter des Review individuelles dans le JSON-LD peut débloquer plus de rich features, mais alourdit le code. Sur des catalogues de 5 000+ fiches, l'AggregateRating seul est largement suffisant.
Non. Google ne pénalise pas l'origine du contenu, il pénalise la qualité. Un JSON-LD correct sur une fiche IA de qualité bénéficie des rich results comme n'importe quelle autre fiche.
Les deux fonctionnent, mais <head> est la bonne pratique. Place le JSON-LD juste avant la balise de fermeture </head> pour être sûr qu'il est lu tôt par les crawlers.
Bing oui, avec un délai plus long (parfois 2-3 mois). DuckDuckGo utilise Bing en backend, donc oui indirectement. Les deux utilisent le même standard schema.org, pas besoin d'adapter.
Sur Ecomptimize, le JSON-LD Product est généré automatiquement à partir des données de votre catalogue Shopify ou WooCommerce. Voir la page Shopify ou WooCommerce.
Le canonical est souvent mal utilisé sur les sites e-commerce. Voici les 4 cas concrets (variantes, filtres, pagination, langues) avec la bonne implémentation.
Un robots.txt mal configuré sur une boutique e-commerce peut bloquer le crawl de milliers de fiches, ou laisser Google indexer vos filtres infinis. Voici la structure propre.