Aller au contenu principal
GMC Guardian GMC Guardian
FR
WARNING

Désapprobation données structurées : corriger votre schema.org sur Shopify

Un champ JSON-LD manquant ou une valeur contradictoire suffit à bloquer vos produits dans Google Shopping. Voici comment identifier et corriger le problème en moins d'une semaine.

Délai estimé de correction
1-5 jours
Voie DSA
N/A
Dernière révision
2026-04-29
  • #données-structurées
  • #json-ld
  • #schema-org
  • #google-shopping
  • #désapprobation-produit
  • #microdata
  • #shopify-seo
  • #structured-data

Une désapprobation pour « politique des données structurées » dans Google Merchant Center ne vise pas la qualité de vos produits - elle pointe un problème de balisage machine que les robots de Google ne peuvent pas interpréter correctement. Sur Shopify, ce balisage est produit automatiquement par votre thème ou une app tierce, ce qui rend le diagnostic moins immédiat qu’une simple erreur de texte ou d’image. Tant que le problème n’est pas résolu, les produits concernés n’apparaissent plus dans Google Shopping, quelle que soit la qualité du reste de votre flux.

Ce que Google entend par « politique des données structurées »

Google définit les données structurées comme un balisage normalisé - JSON-LD ou microdata - que les commerçants intègrent dans le code source de leurs pages produit pour décrire chaque article de façon non ambiguë à destination des robots d’exploration. La référence officielle est la spécification schema.org/Product.

Pour diffuser une annonce Shopping, Google exige au minimum les champs suivants dans le balisage Product :

  • name : intitulé du produit
  • image : URL d’au moins une image représentative
  • offers.price : valeur numérique du prix, sans symbole de devise
  • offers.priceCurrency : code ISO 4217 (EUR pour la zone euro, GBP, CHF, etc.)
  • offers.availability : une valeur schema.org valide parmi https://schema.org/InStock, https://schema.org/OutOfStock ou https://schema.org/PreOrder

La désapprobation se déclenche dans trois situations distinctes. Première situation : un ou plusieurs champs obligatoires sont absents du balisage. Deuxième situation : une valeur du JSON-LD contredit ce que l’utilisateur voit sur la page - par exemple un prix différent entre le balisage et la page rendue. Troisième situation : le balisage déclare des attributs trompeurs, comme une livraison gratuite fictive ou une disponibilité immédiate qui ne correspond pas à l’état réel du stock.

La documentation Google est explicite sur ce point : les données structurées doivent représenter précisément le contenu réel de la page et correspondre à ce que les utilisateurs voient lorsqu’ils la visitent.

Pourquoi cette politique déclenche des désapprobations sur Shopify

Les thèmes Shopify modernes - Dawn et ses nombreux dérivés - injectent automatiquement un bloc JSON-LD schema.org/Product dans chaque page produit via un snippet Liquid. Plusieurs configurations spécifiques à Shopify peuvent cependant générer une désapprobation.

Prix rendu uniquement par JavaScript. Certains thèmes ou apps de personnalisation de prix injectent la valeur offers.price après le chargement initial de la page via JavaScript. AdsBot-Google, le robot d’exploration dédié aux annonces, n’exécute pas systématiquement l’intégralité du JavaScript de la page. Il peut donc lire une valeur nulle ou une valeur avant promotion dans le HTML statique, créant une incohérence avec le prix affiché à l’utilisateur.

Apps de flux concurrentes. Des apps comme Google & YouTube Channel, Simprosys ou DataFeedWatch peuvent injecter leur propre bloc JSON-LD Product en parallèle du snippet généré par le thème. Deux blocs @type: Product avec des valeurs différentes pour le même article constituent une incohérence que GMC détecte et signale comme désapprobation.

Valeurs availability non normalisées. Certains thèmes ou apps renseignent ce champ avec des chaînes libres ("available", "in stock", "En stock") au lieu des URI schema.org valides. GMC applique la spécification strictement et rejette les valeurs qui ne correspondent pas au vocabulaire défini.

Code devise absent ou incorrect. Un thème mal configuré peut omettre priceCurrency ou utiliser un symbole () au lieu du code ISO attendu (EUR). Ce champ est obligatoire pour tous les marchés, y compris les marchés francophones de la zone euro.

Attributs de livraison trompeurs. Déclarer une livraison gratuite dans offers.shippingDetails alors que votre boutique applique des frais de port est l’une des causes les plus rapides de désapprobation, et potentiellement la plus risquée pour la santé globale du compte.

Comment détecter le problème sur votre boutique

1 - Localiser les produits concernés. Dans GMC, accédez à Produits → Diagnostics → Désapprobations. Filtrez par « Politique des données structurées ». Relevez les URL des produits listés - commencez par un article représentatif de votre catalogue.

2 - Auditer avec l’outil de test des résultats enrichis. Ouvrez https://search.google.com/test/rich-results et collez l’URL du produit désapprouvé. L’outil simule ce qu’AdsBot voit et liste explicitement les champs manquants, en erreur ou en avertissement. C’est votre diagnostic de base.

3 - Inspecter le HTML statique. Dans votre navigateur, ouvrez la page produit et appuyez sur Ctrl+U (Cmd+U sur Mac) pour afficher la source HTML brute. Recherchez "@type": "Product". Si le champ offers.price n’est pas présent dans ce HTML statique - c’est-à-dire avant l’exécution de JavaScript - le prix est injecté uniquement côté client, et AdsBot peut ne pas le voir.

4 - Détecter les blocs JSON-LD multiples. Dans cette même source HTML, comptez les occurrences de "@type": "Product". Plusieurs occurrences indiquent un conflit entre le thème et une app tierce : c’est une cause courante de désapprobation.

5 - Croiser avec la Search Console. Dans Google Search Console, accédez à Expérience → Données structurées pour le rapport « Éléments pour les marchands ». Ce rapport distingue les erreurs critiques - bloquantes pour les annonces - des avertissements qui dégradent la qualité sans bloquer complètement.

Correction étape par étape

  1. Localiser le snippet Liquid responsable. Dans Shopify, accédez à En ligne → Thèmes → Actions → Modifier le code. Dans le dossier snippets/, cherchez un fichier nommé product.json_ld.liquid, product-structured-data.liquid ou similaire. Sur certains thèmes, le balisage est généré directement dans sections/main-product.liquid.

  2. S’assurer que offers.price est rendu côté serveur. La valeur doit être produite par Liquid lors du rendu de la page, non injectée a posteriori par JavaScript :

    "price": {{ product.selected_or_first_available_variant.price | divided_by: 100.0 }},
    
  3. Normaliser offers.availability. Remplacez toute valeur libre par l’URI schema.org correcte :

    "availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}",
    
  4. Ajouter ou corriger priceCurrency. Le code ISO 4217 de la devise active du marché :

    "priceCurrency": "{{ cart.currency.iso_code }}",
    

    Pour la France, cart.currency.iso_code retourne EUR - ne substituez pas un symbole.

  5. Résoudre les blocs JSON-LD concurrents. Si une app tierce injecte également un balisage Product, désactivez son injection dans les paramètres de l’app, ou commentez le snippet du thème. Un seul bloc par page est la règle. Vérifiez ensuite dans la source HTML brute qu’une seule occurrence de "@type": "Product" subsiste.

  6. Valider après modification. Rechargez la page dans l’outil de test des résultats enrichis. Zéro erreur critique est le prérequis indispensable avant de soumettre un réexamen à GMC.

  7. Soumettre une récupération dans Search Console. Pour chaque URL corrigée, utilisez l’outil d’inspection d’URL dans la Google Search Console et cliquez sur « Demander une indexation ». Cela accélère la détection du balisage mis à jour par AdsBot-Google.

Ce qu’il faut inclure dans votre demande de réexamen

Après correction, accédez dans GMC au problème de désapprobation et cliquez sur « Demander un réexamen ». Votre message doit être factuel et précis, pas générique :

  • Identifier le problème corrigé : nommez le champ qui manquait ou était incohérent (ex. : offers.availability renseigné avec une valeur non normalisée, offers.price absent du HTML statique).
  • Décrire la correction appliquée : « Nous avons modifié le snippet product.json_ld.liquid pour normaliser offers.availability selon les URI schema.org et rendu offers.price côté serveur via Liquid. »
  • Joindre une preuve visuelle : capture d’écran de l’outil de test des résultats enrichis montrant zéro erreur critique sur l’URL représentative.
  • Confirmer la cohérence : précisez explicitement que les données structurées correspondent désormais exactement à ce que les utilisateurs voient sur la page.

Les demandes vagues - « nous avons vérifié notre site » - sont moins efficaces que les demandes techniques documentées. Google accorde plus facilement la réapprobation lorsque le correctif est clairement identifié et démontré pièce à l’appui.

Cas particuliers et quand escalader

Thème headless ou custom. Si votre boutique Shopify utilise une architecture headless (Hydrogen, Next.js Commerce) ou un thème entièrement custom, le balisage schema.org doit être implémenté manuellement. Vérifiez que votre développeur front-end génère le JSON-LD côté serveur (SSR) et non uniquement via JavaScript côté client - c’est le point d’échec le plus fréquent sur ces architectures.

Prix promotionnels. Lors d’une promotion, offers.price doit refléter le prix réellement affiché au moment de l’exploration. Ajoutez offers.priceValidUntil au format ISO 8601 (ex. "2026-07-14") pour indiquer la date d’échéance de la promotion et éviter des incohérences futures lorsque la promotion se termine.

Produits avec variantes multiples. Certains thèmes Shopify n’incluent dans le JSON-LD que la variante par défaut. Si une variante spécifique est désapprouvée - une taille ou une couleur précise - vérifiez que le balisage couvre correctement cette variante ou que les données de la variante par défaut sont cohérentes avec les informations du flux Merchant API.

Désapprobations persistantes après correction. Si le réexamen est refusé, comparez minutieusement le balisage JSON-LD avec les données transmises dans votre flux Merchant API. Un écart entre le flux et le balisage de la page - par exemple un prix différent dans les deux sources - peut provoquer une désapprobation croisée relevant de price-discrepancy ou inaccurate-availability. Ces deux raisons sont étroitement liées à la politique des données structurées et doivent être traitées simultanément.

Catégories réglementées. Si vos produits appartiennent à une catégorie soumise à la réglementation française - médicaments, compléments alimentaires, alcool, produits financiers - des exigences spécifiques peuvent s’appliquer au balisage au-delà des champs schema.org standards. Dans ces cas, un examen humain par l’équipe GMC est fréquent, les délais de réexamen dépassent généralement la moyenne, et la correction technique seule ne suffit pas toujours.

Questions fréquentes

Questions fréquentes

Quelle est la différence entre une désapprobation produit et une suspension de compte ?
Une désapprobation pour données structurées est une sanction au niveau produit : seuls les articles concernés cessent d'être diffusés dans Google Shopping. Votre compte GMC reste actif. Cependant, si la même erreur touche un grand nombre de produits ou si Google détecte un signal trompeur systématique - prix ou disponibilité délibérément falsifiés - la sanction peut s'aggraver vers une suspension de compte pour représentation trompeuse. Corrigez rapidement pour éviter l'escalade.
Shopify génère-t-il automatiquement le JSON-LD pour Google Shopping ?
Les thèmes Shopify modernes comme Dawn injectent un balisage schema.org/Product dans le code source de chaque page produit. Toutefois, certains champs obligatoires pour GMC - notamment offers.price, offers.priceCurrency et offers.availability - peuvent être absents ou mal renseignés selon la configuration du thème. Des apps de flux tierces peuvent aussi injecter un balisage concurrent et créer des conflits que GMC signale comme incohérence structurelle.
Comment vérifier si mon schema.org/Product est valide avant de soumettre un réexamen ?
Utilisez l'outil de test des résultats enrichis de Google (https://search.google.com/test/rich-results) sur l'URL exacte du produit désapprouvé. L'outil liste les champs présents, les champs manquants et les avertissements. Complétez l'audit avec le rapport Éléments pour les marchands dans la Google Search Console, qui distingue les erreurs critiques bloquantes des avertissements non bloquants. Effectuez ces deux vérifications avant toute demande de réexamen.
Mon prix est affiché correctement sur la page, mais GMC signale quand même une incohérence - pourquoi ?
GMC compare le balisage JSON-LD avec ce que AdsBot-Google lit lors de son exploration. Si votre thème ou une app injecte le prix uniquement via JavaScript après le chargement initial, AdsBot peut lire une valeur nulle ou le prix avant promotion dans le HTML statique. Vérifiez : ouvrez Afficher la source (Ctrl+U) et cherchez offers.price dans le HTML brut. Si la valeur n'y est pas, AdsBot ne la voit pas - le prix est rendu uniquement côté client.
La désapprobation pour données structurées peut-elle mener à une suspension de compte ?
Dans la majorité des cas, non - c'est une sanction au niveau produit. Cependant, si les données structurées signalent de manière systématique une disponibilité ou un prix inexacts, Google peut interpréter cela comme une représentation trompeuse (misrepresentation), qui est l'une des causes les plus fréquentes de suspension de compte. Corrigez en priorité les champs offers.availability et offers.price dès réception de la première désapprobation.
Combien de temps faut-il à Google pour réévaluer les produits après correction ?
Google indique généralement un délai de 3 à 5 jours ouvrables pour la réévaluation après soumission d'une demande de réexamen. En pratique, le délai varie de 24 heures à 2 semaines selon la taille du catalogue et la charge des équipes de révision. Vous pouvez accélérer la détection du balisage corrigé en soumettant une nouvelle récupération d'URL dans la Google Search Console pour chaque page modifiée.

Sources & références

Sources officielles citées

  1. Google Developers : données structurées pour les produits (Product) https://developers.google.com/search/docs/appearance/structured-data/product
  2. Schema.org : spécification Product https://schema.org/Product
  3. Google Search Console : outil de test des résultats enrichis https://search.google.com/test/rich-results

Recevez la checklist d’appel pour ce motif

La remédiation étape par étape de cette page, envoyée par email pour que vous puissiez l’exécuter pendant votre période d’attente. Sans créer de compte.

Ou décrivez votre dossier et obtenez un avis humain