# Checklist avant publication : les champs obligatoires d’un balisage Product

> Un balisage Product incomplet fait perdre l'éligibilité aux résultats enrichis sans message d'erreur clair. Neuf points à vérifier avant de mettre une fiche en ligne.

- Auteur : WordPress Développement
- Publié le : 2020-10-18
- Mis à jour le : 2020-10-18
- Catégorie : SEO &amp; GEO
- URL : https://www.wpmoderne.fr/seo/checklist-champs-obligatoires-balisage-product/

## L’essentiel

- name, image et offers sont les champs strictement requis par Google
- Un prix sans devise ISO 4217 invalide l'offre entière
- availability doit utiliser une valeur schema.org exacte

Une fiche produit avec un balisage `Product` incomplet ne provoque aucune erreur visible sur le site : la page s'affiche normalement, aucun message ne prévient l'équipe. Le seul symptôme est une absence silencieuse dans les résultats enrichis, découverte parfois des semaines plus tard dans le rapport de couverture. Voici la checklist à suivre avant de mettre en ligne une fiche produit, pour éviter cette perte discrète.

Cette liste couvre uniquement les champs du type `Product` lui-même, pas les avis clients ni le type `Review`, qui relèvent d'une logique et de contraintes distinctes.

## Les trois champs strictement obligatoires

1. **name** : le nom du produit, sous forme de texte simple, sans balisage HTML
2. **image** : au moins une URL absolue vers une image représentative, au format JPEG, PNG ou WebP
3. **offers** (ou `review`, ou `aggregateRating`) : au moins l'un de ces trois blocs doit être présent pour que Google considère le balisage éligible

Un balisage sans aucun de ces trois éléments, ou avec l'un d'eux vide, est tout simplement ignoré par Google, sans distinction entre « présent mais invalide » et « absent ».

## Le détail du bloc offers, source la plus fréquente d'erreurs

> L'essentiel à retenir : name, image et offers sont les champs strictement requis par Google ; Un prix sans devise ISO 4217 invalide l'offre entière ; availability doit utiliser une valeur schema.org exacte

1. **price** : un nombre, sans symbole monétaire ni séparateur de milliers (`29.90`, pas `29,90 €`)
2. **priceCurrency** : un code ISO 4217 à trois lettres (`EUR`, pas `€` ni `euros`)
3. **availability** : une valeur exacte parmi celles définies par schema.org, comme `https://schema.org/InStock` ou `https://schema.org/OutOfStock`
4. **url** : l'URL absolue de la page où l'offre est disponible

Un prix indiqué sous forme de chaîne de caractères avec symbole monétaire invalide l'offre entière, même si tous les autres champs sont corrects. C'est l'erreur la plus fréquente sur les catalogues migrés depuis un export tableur sans nettoyage préalable.

## Deux champs recommandés qui évitent des avertissements

1. **sku** ou **gtin13** : un identifiant unique du produit, recommandé pour la cohérence des données
2. **brand** : sous forme d'objet `Organization` imbriqué, avec au minimum un champ `name`

## Exemple de balisage JSON-LD complet et valide

```
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Étagère murale chêne massif",
  "image": "https://exemple.fr/images/etagere-42.jpg",
  "sku": "ETG-042",
  "brand": {
    "@type": "Organization",
    "name": "Atelier Merisier"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://exemple.fr/produits/etagere-42/",
    "priceCurrency": "EUR",
    "price": "89.00",
    "availability": "https://schema.org/InStock"
  }
}
```

## Une erreur fréquente sur les catalogues volumineux

Sur un catalogue de plusieurs centaines de références généré automatiquement depuis un export fournisseur, un champ `availability` mal mappé peut afficher `InStock` pour l'ensemble des produits, y compris ceux réellement épuisés depuis des semaines. Le balisage reste techniquement valide, ce qui ne déclenche aucune alerte, mais il devient trompeur pour l'internaute qui clique sur un résultat enrichi annonçant une disponibilité immédiate pour un produit en réalité indisponible. Ce type d'écart, invisible à l'audit technique classique, ne se voit qu'en croisant le balisage avec l'état réel du stock.

## Comment vérifier avant publication

- Copier le JSON-LD généré dans l'outil de test des résultats enrichis de Google avant chaque mise en ligne de nouveau modèle de fiche
- Vérifier que le prix ne contient jamais de symbole monétaire, de virgule décimale française ni d'espace
- Contrôler que la valeur d'`availability` reprend exactement l'URL schema.org, sans traduction ni raccourci
- S'assurer que l'image référencée répond bien en 200 et n'est pas bloquée par `robots.txt`

> Une règle simple à appliquer en revue de code : aucun champ du bloc offers ne doit provenir d'une concaténation de chaînes de caractères non nettoyées issues d'un export.

## En résumé

Un balisage `Product` incomplet ne casse rien visuellement, ce qui le rend particulièrement traître : l'équipe ne découvre le problème que lorsqu'elle compare les fiches concurrentes qui affichent prix et disponibilité directement dans les résultats de recherche. Passer cette checklist avant chaque mise en ligne de nouveau gabarit de fiche produit évite une perte d'éligibilité qui, autrement, peut rester invisible pendant des mois.
