Exemple de schéma Product pour Shopify Apparel
Exemples JSON-LD Product et ProductGroup prêts à copier pour Shopify Apparel — couvre les variantes de taille et couleur, les offers, les fils d'Ariane et les règles AggregateRating qui décident si les moteurs IA citent réellement ta page produit.
Les pages produit apparel sur Shopify se font citer par les moteurs IA
shopping selon la précision avec laquelle le JSON-LD décrit le paysage
de variantes. Un acheteur demandant « chemise lin qui taille vrai en
medium » sur ChatGPT, Perplexity ou Gemini a besoin que l’IA reconnaisse
que la variante spécifique existe, est en stock, a un prix, et est
décrite distinctement des sœurs L et XL. Un schéma Product générique
sans détail de variante force l’IA à deviner ; ProductGroup avec
hasVariant lui donne les données pour citer en confiance.
Cet exemple livre deux blocs JSON-LD prêts à copier : un ProductGroup
pour la matrice de variantes, et un BreadcrumbList pour le contexte
catégorie. Les deux sont calibrés pour passer Google Rich Results Test
proprement et pour refléter le contenu visible de la page (la règle que
les moteurs IA appliquent réellement en pratique).
Quand utiliser Product vs ProductGroup
| Cas d’usage | Schéma | Pourquoi |
|---|---|---|
| Item mono-SKU (une taille, une couleur) | Product | Pas de matrice de variantes — ajouter ProductGroup est overkill. |
| Apparel avec variantes de taille seules | ProductGroup + variesBy: size | Les requêtes IA shopping sont conditionnées par taille ; Product à plat perd ça. |
| Apparel avec variantes de couleur seules | ProductGroup + variesBy: color | Les requêtes IA sont conditionnées par couleur. |
| Apparel avec matrice taille × couleur | ProductGroup + les deux variesBy | Produit cartésien des variantes ; chaque hasVariant est le SKU unique. |
| Bundle / kit (plusieurs parents) | Product par item + isRelatedTo custom | ProductGroup décrit les variantes d’un produit, pas un bundle multi-produit. |
Les templates Liquid Shopify par défaut émettent Product quelle que
soit la quantité de variantes. L’upgrade vers ProductGroup pour tout
apparel store multi-tailles est une modif theme unique (ou une app
Shopify qui s’en charge automatiquement) ; le gain de citation IA
shopping en vaut la peine.
ProductGroup JSON-LD (apparel avec variantes)
Coller dans un template de page produit, en remplaçant les valeurs
placeholder. L’exemple montre un sous-ensemble de 2 variantes ; en
production tu auras une entrée hasVariant par SKU réel.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Linen Relaxed Shirt",
"description": "A breathable linen shirt in three colors, sizes XS–XL. 100% European linen, pre-washed for softness.",
"brand": {
"@type": "Brand",
"name": "Example Apparel"
},
"productGroupID": "linen-shirt-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{
"@type": "Product",
"sku": "LINEN-SHIRT-WHITE-M",
"name": "Linen Relaxed Shirt — White / M",
"color": "White",
"size": "M",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-white.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=white-m",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
},
{
"@type": "Product",
"sku": "LINEN-SHIRT-BLACK-S",
"name": "Linen Relaxed Shirt — Black / S",
"color": "Black",
"size": "S",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-black.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=black-s",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
]
} BreadcrumbList JSON-LD
Paire le ProductGroup avec un BreadcrumbList pour que les moteurs IA
comprennent la hiérarchie de catégorie où vit ton produit. Les URL du
fil d’Ariane doivent correspondre exactement au fil d’Ariane visible de
la page.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Shirts",
"item": "https://example.com/collections/shirts"
},
{
"@type": "ListItem",
"position": 3,
"name": "Linen Relaxed Shirt",
"item": "https://example.com/products/linen-shirt"
}
]
} Erreurs courantes (par fréquence)
-
Marquer des variantes qui ne sont pas visibles ou sélectionnables sur la page. Le schéma doit refléter la réalité visible. Si ta page produit ne montre que S / M / L mais que le JSON-LD déclare XS à XXL, les moteurs IA finiront par essayer de citer une variante 404 et déclasseront le store.
-
Utiliser AggregateRating sans widget d’avis. Soit afficher les avis visiblement (app Shopify Reviews), soit supprimer le champ schéma. Ne pas fabriquer.
-
Incohérence de currency, prix ou disponibilité entre schéma et page produit visible. L’acheteur voit
$79mais le schéma déclare89.00— les moteurs IA récupèrent le chiffre du schéma, le citent, et l’acheteur se sent trompé. Pire : Google flague le schéma comme peu fiable. -
Réutiliser le même
skupour plusieurs variantes. Shopify génère des SKU uniques mais les marchands les remplacent souvent. Les SKU dupliqués danshasVariantfont fusionner les variantes par erreur par les moteurs IA. -
Mélanger
ProductGroupetProductde telle sorte que les noms spécifiques aux variantes se perdent. Si tu émets à la foisProductetProductGrouppour le même item, assure-toi que l’instanceProductest le parent (sans détail de variante) et queProductGroup.hasVariantcontient les variantes. N’émets pasProductpour chaque variante en dehors du group. -
Ajouter des claims médicaux ou non soutenus aux descriptions apparel. « Correcteur de posture » / « améliore la circulation » / « tissu antibactérien prévient les maladies de peau » — ce sont des claims régulés sur la plupart des marchés et déclenchent le déclassement IA même quand légalement OK. Reste sur les descriptions de coupe et matériau.
-
Pointer les URL schéma vers des URL de variante non-canoniques. Si la page utilise une URL produit canonique (p.ex.
/products/linen-shirt) et que les variantes sont sélectionnées par query-param (?variant=white-m),hasVariant[].offers.urldoit quand même pointer vers l’URL spécifique à la variante — c’est là que les acheteurs (et agents IA) atterrissent.
Comment vérifier
- Coller l’URL produit déployée dans
Google Rich Results Test
. Les items Product et BreadcrumbList doivent valider. - Passer la checklist de validation ci-dessus champ par champ.
- Ouvrir la page en navigation privée et vérifier que H1 produit visible, prix, disponibilité et fil d’Ariane correspondent tous à ce que déclare le schéma.
- Re-lancer le générateur de Schema si tu changes la structure produit (nouvelle couleur, taille supprimée) et redéploie.
Le JSON-LD est un signal dans la pile shopping IA. Paire-le avec le modèle llms.txt mode pour le côté carte de contenu, et vérifie avec l’Analyseur Robots que GPTBot peut atteindre la page produit.
Liste de vérification
Le nom du produit dans le schéma correspond au H1 visible
Le champ `name` de ProductGroup correspond exactement au H1 sur la page produit (casse + ponctuation). Les moteurs IA déclassent les non-correspondances comme signal de faible confiance.
Chaque variante a un SKU unique
Aucune valeur `hasVariant[].sku` n'entre en collision. Shopify génère automatiquement des SKU pour les variantes mais les marchands les remplacent souvent — des SKU dupliqués dans le schéma font fusionner les variantes par erreur.
Les noms de variantes identifient taille / couleur / matériau
Chaque `hasVariant[].name` se lit comme un vrai label produit (p.ex. « Linen Relaxed Shirt — White / M »), pas un placeholder. Les réponses IA shopping citent ce champ directement.
productGroupID stable entre déploiements
Le `productGroupID` doit être un identifiant interne stable (GID produit Shopify ou slug custom), pas un UUID build-time aléatoire. Les moteurs IA l'utilisent pour dédupliquer le même produit entre rechargements.
Chaque Offer a currency + price + availability + URL
Le bloc `offers` de chaque variante a `priceCurrency`, `price`, `availability` et `url`. La currency manquante est la raison n°1 pour laquelle Google Rich Results Test rétrograde un résultat Product.
AggregateRating uniquement présent si avis réels visibles
Si tu émets `aggregateRating`, la note + nombre d'avis doivent être visibles sur la page produit. Les moteurs IA comparent le schéma au contenu visible ; les ratings fabriqués déclenchent le déclassement.
BreadcrumbList correspond au fil d'Ariane visible
La chaîne d'URL `itemListElement` du schéma correspond exactement au fil d'Ariane visible de la page (même chemin, mêmes labels). Les écarts confondent les moteurs IA qui utilisent le contexte du fil d'Ariane pour comprendre la catégorie.
Rich Results Test ne renvoie pas d'erreurs critiques
Après déploiement, coller l'URL produit dans https://search.google.com/test/rich-results — les items Product et BreadcrumbList doivent valider sans erreurs critiques.
Ouvrir dans le générateur de Schema
Prérempli avec des placeholders apparel pour nom du produit, description, marque, prix, disponibilité et ratings. Remplace les placeholders par tes vraies données produit et télécharge un bloc JSON-LD prêt pour Shopify.
Questions fréquentes
Un produit Shopify apparel doit-il utiliser Product ou ProductGroup ?
Utilise `Product` pour un item simple sans variantes. Utilise `ProductGroup` dès que des variantes de taille, couleur ou matériau existent — il permet aux moteurs IA de citer la bonne variante pour une requête spécifique (« chemise lin en taille M ») au lieu de les confondre. Les templates Liquid Shopify par défaut n'émettent que `Product` ; l'upgrade vers `ProductGroup` est manuel mais en vaut la peine pour tout apparel store multi-tailles.
Peut-on émettre AggregateRating sans avis visibles sur la page ?
Non. Le schéma doit refléter le contenu visible. Si tu émets `aggregateRating: 4.7 from 32 reviews` mais que la page produit ne montre pas de widget d'avis, les moteurs IA et Google flaguent ça comme peu fiable. Soit rendre les avis visibles (apps Shopify comme Judge.me ou Shopify Reviews natif), soit supprimer le champ schéma.
Chaque variante de couleur doit-elle être une entrée hasVariant distincte ?
Oui quand la variante a un SKU, une couleur, une taille, une image, un prix ou une disponibilité distincts. Les moteurs IA shopping répondant « la chemise lin noire est-elle encore en stock » ont besoin que chaque variante soit un nœud Product adressable séparément avec son propre `offers.availability`. Couleur seule → un `hasVariant` par couleur ; taille seule → un par taille ; taille+couleur → produit cartésien.
Le schéma ProductGroup remplace-t-il les feeds produit Shopify ?
Non. Le JSON-LD sur la page complète les feeds (le `/products.json` auto-généré de Shopify, Google Merchant feed, Meta Catalog). Les moteurs IA shopping crawlent les pages directement *et* lisent les feeds — les deux signaux comptent. Ne laisse pas tomber l'un pour l'autre.
Ressources connexes
Modèle llms.txt Shopify mode
Paire ce schéma Product avec une carte de contenu llms.txt — les deux signaux travaillent ensemble pour la citation IA shopping.
Modèle llms.txt Shopify beauté
Vertical sœur — les mêmes principes JSON-LD s'appliquent au schéma Product beauté, mais avec des champs de contexte ingrédients au lieu de taille/couleur.
Modèle llms.txt Shopify électronique
Vertical sœur — pour l'électronique, utiliser ProductGroup avec champs numéro-de-modèle + compatibilité plutôt que variantes taille/couleur.
Shopify AI Visibility Optimizer
La pile complète de visibilité IA — schema, carte de contenu, politique crawler, monitoring de citations.
llms.txt pour Shopify — guide complet
Contexte sur le signal carte-de-contenu qui se paire avec le signal schéma dans cet exemple.