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 produitimage: URL d’au moins une image représentativeoffers.price: valeur numérique du prix, sans symbole de deviseoffers.priceCurrency: code ISO 4217 (EURpour la zone euro,GBP,CHF, etc.)offers.availability: une valeur schema.org valide parmihttps://schema.org/InStock,https://schema.org/OutOfStockouhttps://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
-
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.liquidou similaire. Sur certains thèmes, le balisage est généré directement danssections/main-product.liquid. -
S’assurer que
offers.priceest 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 }}, -
Normaliser
offers.availability. Remplacez toute valeur libre par l’URI schema.org correcte :"availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}", -
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_coderetourneEUR- ne substituez pas un symbole. -
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. -
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.
-
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.availabilityrenseigné avec une valeur non normalisée,offers.priceabsent du HTML statique). - Décrire la correction appliquée : « Nous avons modifié le snippet
product.json_ld.liquidpour normaliseroffers.availabilityselon les URI schema.org et renduoffers.pricecô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
- Google Developers : données structurées pour les produits (Product) https://developers.google.com/search/docs/appearance/structured-data/product
- Schema.org : spécification Product https://schema.org/Product
- Google Search Console : outil de test des résultats enrichis https://search.google.com/test/rich-results
Checklist d’appel
Les étapes de cette page, dans votre boîte mail.