Aller au contenu

Quelles données structurées mettre sur une fiche produit ?

Jérémie Werner

Fondateur de Conversion Club · ikko

Voir le profil

Réponse courte

Il faut un bloc Product en JSON-LD (ProductGroup si l'article existe en plusieurs tailles ou couleurs) avec au minimum le nom, l'image, le prix et la devise, complété par le GTIN, la disponibilité, l'état, la note, la livraison et les retours.

La réponse en détail

Il faut un bloc Product en JSON-LD (ProductGroup si l'article existe en plusieurs tailles ou couleurs) avec au minimum le nom, l'image, le prix et la devise, complété par le GTIN, la disponibilité, l'état, la note, la livraison et les retours. Sur Shopify, le thème fournit déjà le socle : à vous d'ajouter le reste et de faire concorder la page, le balisage et le flux Merchant Center.

Le repère

Google recommande le format JSON-LD, un bloc de code invisible à l'écran (Google Search Central), et liste les propriétés attendues sur une page où l'on peut acheter (Google Search Central). La dernière colonne donne la sortie du filtre Liquid structured_data de Shopify, relevée le 20 octobre 2026 sur les démos des thèmes Dawn et Horizon.

Propriété Statut Google Sortie native Shopify
name, image Requis Oui
offers.price (supérieur à zéro), offers.priceCurrency Requis Oui, une offre par variante
offers.availability Recommandé, une seule valeur Oui, selon le stock de la variante
gtin Recommandé Oui, si le code-barres de la variante est rempli
brand.name Recommandé, une seule marque Oui (champ Fournisseur)
variesBy (groupe de variantes) Recommandé Non
itemCondition Recommandé Non
aggregateRating, review Recommandé, note visible sur la page Non, vient de l'application d'avis
shippingDetails, hasMerchantReturnPolicy Recommandé Non
priceValidUntil Recommandé ; une date passée peut empêcher l'affichage Non

Les deux thèmes appellent ce filtre dans leur section produit (Dawn, Horizon). Il renvoie un ProductGroup dès qu'il y a des variantes (shopify.dev), mais sans variesBy, qui dit si elles diffèrent par la taille ou la couleur (Google Search Central). Un thème payant peut produire autre chose, d'où l'inventaire de l'étape 1.

La règle

Chaque information existe à trois endroits (l'écran, le balisage et le flux Merchant Center) et doit y être identique. Google conseille de fournir balisage et flux ensemble, l'un servant à vérifier l'autre (Google Search Central).

Mieux vaut compléter le socle du thème que l'écraser avec une application qui réécrit tout : chaque source de balisage en plus est une contradiction possible. Et ne balisez que ce qui se voit. Une note doit être lisible sur la page qui la déclare (Google Search Central), un délai de livraison aussi.

Les étapes

  1. Faire l'inventaire. Comptez les blocs application/ld+json d'une fiche et cochez dans le tableau ce qui manque (voir aussi la chasse aux doublons). Une marque de prêt-à-porter suivie par les auteur·rice·s avait ainsi deux entités par article : le ProductGroup du thème, sans avis, et un Product ajouté par l'application d'avis pour la note, signalé en double par la Search Console.
  2. Remplir ce que le thème lit. Le GTIN (le numéro du code-barres) sort tout seul si le champ Code-barres de chaque variante est rempli, ce qui manque souvent (voir le code EAN et le GTIN). Une URL en ?variant= doit aussi afficher la bonne variante, avec son prix et son stock (Google Search Central).
  3. Compléter le bloc produit. Ajoutez variesBy et itemCondition, puis rattachez la note au ProductGroup existant, conforme à ce que vous affichez comme avis. Gardez ce balisage dans le HTML initial : selon Google, un balisage injecté en JavaScript rend l'exploration Shopping moins fréquente et moins fiable (Google Search Central).
  4. Déclarer livraison et retours une fois. Google recommande une politique générale sous Organization, sur une seule page, le niveau produit servant aux exceptions (retours, livraison). Le modèle placé après la liste suit sa documentation (valeurs fictives). Des réglages déjà saisis dans Merchant Center l'emportent sur ce balisage.
  5. Contrôler la concordance. Chaque mois, sur cinq produits, trois questions : le prix affiché est-il celui de offers.price ? un produit épuisé est-il déclaré disponible ? le nombre d'avis balisé est-il celui que l'on voit ? Merchant Center (mises à jour automatiques actives par défaut) corrige prix et stock d'après la page, ou refuse le produit s'il ne peut les établir (aide Merchant Center).
  6. Valider. Testez une fiche en promotion et une en rupture dans le test des résultats enrichis, puis surveillez la Search Console.
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Votre marque",
  "url": "https://www.votre-boutique.fr",
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": ["FR", "BE"],
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn"
  },
  "hasShippingService": {
    "@type": "ShippingService",
    "shippingConditions": [
      {
        "@type": "ShippingConditions",
        "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "FR" },
        "orderValue": { "@type": "MonetaryAmount", "minValue": 0, "maxValue": 49.99, "currency": "EUR" },
        "shippingRate": { "@type": "MonetaryAmount", "value": 5.90, "currency": "EUR" },
        "transitTime": { "@type": "ServicePeriod", "duration": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 3, "unitCode": "DAY" } }
      },
      {
        "@type": "ShippingConditions",
        "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "FR" },
        "orderValue": { "@type": "MonetaryAmount", "minValue": 50, "currency": "EUR" },
        "shippingRate": { "@type": "MonetaryAmount", "value": 0, "currency": "EUR" },
        "transitTime": { "@type": "ServicePeriod", "duration": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 3, "unitCode": "DAY" } }
      }
    ]
  }
}

Le détail des propriétés de retour est sur schema.org ; le contenu de la politique se décide en amont.

Le piège

Chez cette même marque, le blocage venait du texte de la page plus que du code. Bandeau, FAQ et accordéon des fiches annonçaient la livraison offerte dès 39 € en France et en Belgique, alors que la page Livraisons et retours facturait 4,95 € aux client·e·s belges jusqu'à 59 €. Côté délai, presque tous les gabarits produit affichaient « recevez-la dans les 48 heures » (écrit en dur), la FAQ parlait de 2 à 3 jours ouvrés et la fiche calculait en JavaScript une date « au plus tard le ». Avec trois délais pour un même colis, personne ne pouvait dire lequel baliser.

Le JSON-LD ne fait que recopier une information décidée ailleurs. Confiez chaque délai et chaque durée de retour à un·e responsable, souvent au service client ou au juridique, et faites-en découler l'écran, le balisage et Merchant Center. Ce même délai pèse aussi sur la conversion.

La phrase à présenter

En interne, présentez ce travail comme un contrôle de cohérence. Une formulation possible (chiffres fictifs) :

« Sur nos 5 meilleures ventes, 3 annoncent dans leur balisage une politique de retour différente de nos CGV et 2 n'ont pas de code-barres saisi : une demi-journée de travail aligne la page, le balisage et Merchant Center, puis un contrôle mensuel de cinq produits suffit. »

Sources

Pour aller plus loin

Le Playbook répond court. Les articles du Conversion Club prennent le temps : méthodes, cas terrain et chiffres pour aller plus loin.