Vai al contenuto principale
GMC Guardian GMC Guardian
IT
WARNING

Disapprovazione per dati strutturati su Google Merchant Center

Il markup Schema.org/Product assente o incoerente con la pagina prodotto è tra le cause più frequenti di disapprovazione su Shopify. Ecco come diagnosticare e correggere il problema in 1-5 giorni.

Tempo stimato di correzione
1-5 days
Canale DSA
N/A
Ultima revisione
2026-04-29
  • #dati-strutturati
  • #schema-org
  • #json-ld
  • #disapprovazione-prodotti
  • #shopify-gmc
  • #markup-prodotto
  • #structured-data-policy
  • #google-merchant-center

Google Merchant Center analizza il markup Schema.org/Product presente nelle pagine HTML del tuo store per verificare che i dati inviati nel feed corrispondano a ciò che l’utente vede effettivamente. Quando questa corrispondenza manca - perché il JSON-LD è incompleto, assente o dichiara valori difformi dal contenuto visibile - GMC emette una disapprovazione per “structured data policy”. Sui negozi Shopify questo problema è più comune di quanto si pensi: temi non aggiornati, app SEO che iniettano markup ridondante e configurazioni Shopify Markets mal gestite sono le cause più frequenti. Questa guida descrive come identificare il campo incriminato, correggerlo e ripristinare la visibilità dei prodotti nelle Shopping Ads.

Cosa intende Google con “structured-data-policy”

Le linee guida di Google Search Central sui dati strutturati per prodotti stabiliscono che il markup Schema.org/Product deve soddisfare quattro requisiti simultanei.

Riflettere fedelmente i contenuti visibili dalla pagina. Ogni campo del JSON-LD o del microdata deve corrispondere ai valori che un utente può leggere senza compiere ulteriori click: nessun valore nascosto ai visitatori ma visibile ai crawler.

Non contenere segnali artificialmente positivi. Dichiarare "availability": "https://schema.org/InStock" su un prodotto esaurito, un campo shippingDetails con costo zero quando la spedizione è a pagamento, o un prezzo scontato nel markup che non appare nella pagina costituiscono violazioni esplicite della policy.

Includere i campi obbligatori. Per schema.org/Product con Offer, GMC richiede come minimo: name, image, description, almeno uno tra sku e gtin, offers.price, offers.priceCurrency, offers.availability.

Essere accessibili ad AdsBot al momento della scansione. Il markup iniettato esclusivamente via JavaScript client-side - non presente nell’HTML sorgente restituito dal server - può non essere rilevato da AdsBot durante la scansione iniziale e viene trattato come markup assente.

La violazione più frequentemente sanzionata è la contraddizione tra il valore dichiarato nel markup e il valore visibile nella pagina: un prezzo nel JSON-LD diverso da quello mostrato all’utente viene classificato come potenzialmente fuorviante e può evolvere in una disapprovazione per price-discrepancy.

Perché si attiva la disapprovazione su Shopify

Shopify genera automaticamente un blocco JSON-LD schema.org/Product nella maggior parte dei temi Liquid, ma esistono cinque punti di rottura tipici nei negozi italiani e internazionali.

Tema con prezzo nella valuta base invece della valuta locale. I temi che non gestiscono correttamente Shopify Markets o Shopify Payments con valute multiple possono esporre "priceCurrency": "USD" e il prezzo in dollari nel JSON-LD mentre la pagina mostra il prezzo in euro per i clienti italiani. AdsBot legge la valuta effettivamente renderizzata: la discrepanza genera una violazione immediata.

App SEO o di recensioni con secondo blocco JSON-LD. Applicazioni come JSON-LD for SEO, Smart SEO, SEO Booster, Judge.me o Yotpo possono aggiungere un secondo script <script type="application/ld+json"> con tipo Product. Se questo blocco contiene un campo offers con valori difformi da quelli del tema - prezzi in un’altra valuta, disponibilità hardcodata, priceCurrency mancante - Google legge entrambi i blocchi e segnala la contraddizione.

Disponibilità hardcodata nel JSON-LD del tema. Alcuni temi meno recenti o personalizzati contengono un valore statico per la disponibilità - tipicamente "InStock" - invece di usare la variabile Liquid product.available. Quando un prodotto si esaurisce su Shopify, la pagina mostra correttamente il pulsante disabilitato, ma il JSON-LD dichiara ancora InStock: questa è una violazione di inaccurate-availability che si cumula con la structured data policy.

Spedizione gratuita dichiarata in modo non corretto. Se il JSON-LD include un blocco shippingDetails con "value": "0" ma la spedizione gratuita su Shopify è configurata solo sopra una soglia minima d’ordine (Impostazioni → Spedizione e consegna), i prodotti al di sotto di tale soglia presentano una discrepanza tra il markup e il checkout reale.

Markup non visibile ad AdsBot nei negozi headless. I negozi che usano Hydrogen o un frontend custom con rendering client-side devono generare il JSON-LD lato server, nell’HTML della risposta HTTP. Se il blocco schema.org/Product è iniettato solo dopo l’idratazione React, AdsBot può non trovarlo e classificare la pagina come priva di markup valido.

Come rilevare il problema nel tuo store

Segui questi controlli nell’ordine indicato per localizzare esattamente il campo problematico.

Controllo 1 - Rich Results Test su un URL disapprovato

  1. Apri search.google.com/test/rich-results.
  2. Incolla l’URL di un prodotto disapprovato e avvia il test.
  3. Nella sezione “Prodotto” verifica: price, priceCurrency, availability, name e image sono presenti con valori validi?
  4. Se appare “Nessun risultato avanzato rilevato” per il tipo Prodotto, il JSON-LD è assente o malformato.

Controllo 2 - Confronto sorgente HTML vs. pagina visibile

Apri la pagina prodotto in un browser, premi Ctrl+U (Visualizza sorgente) e cerca "@type": "Product". Confronta manualmente:

  • price nel JSON-LD vs. prezzo visualizzato nella pagina (inclusa IVA se applicabile)
  • availability vs. stato del pulsante Aggiungi al carrello
  • Numero di blocchi <script type="application/ld+json"> con tipo Product - più di uno è quasi sempre un problema

Controllo 3 - GMC Diagnostica

In Google Merchant Center: Prodotti → Diagnostica → Problemi a livello di prodotto, filtra per “dati strutturati”. Il pannello mostra le URL specifiche, il tipo di errore e il campo incriminato.

Controllo 4 - Google Search Console

Vai su Search Console → Esperienza → Miglioramenti → Prodotti. Se lo stesso errore compare anche qui, la scansione organica lo rileva indipendentemente da GMC - doppia priorità di risoluzione.

Correzione passo dopo passo

  1. Apri il codice del tema attivo in Shopify Admin: Negozio online → Temi → [tema attivo] → Modifica codice.

  2. Individua il blocco JSON-LD del prodotto. Cerca "@type": "Product" in product.liquid, product.json o theme.liquid. Se è assente, il tema non genera markup strutturato e dovrai aggiungerlo.

  3. Sostituisci i valori statici con variabili Liquid dinamiche. Un blocco minimo conforme alla policy GMC per un negozio Shopify monolingua / monovaluta è il seguente:

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": {{ product.title | json }},
  "image": {{ product.featured_image | img_url: 'master' | prepend: 'https:' | json }},
  "description": {{ product.description | strip_html | truncate: 5000 | json }},
  "sku": {{ product.selected_or_first_available_variant.sku | json }},
  "offers": {
    "@type": "Offer",
    "url": {{ shop.url | append: product.url | json }},
    "priceCurrency": {{ cart.currency.iso_code | json }},
    "price": "{{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}",
    "availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
  }
}
</script>

Domande frequenti

Domande frequenti

Cosa significa esattamente 'structured data policy' in una notifica GMC?
Google disapprova un prodotto per structured data policy quando il markup Schema.org/Product è assente, contiene campi obbligatori mancanti oppure riporta valori che contraddicono i dati visibili nella pagina (prezzo, disponibilità, spedizione). La policy è definita nelle linee guida di Google Search Central: ogni campo del blocco JSON-LD o microdata deve corrispondere esattamente a ciò che l'utente vede senza click aggiuntivi. Non si tratta di una sospensione dell'account - è una disapprovazione a livello di prodotto, risolvibile correggendo il markup nelle pagine interessate.
Il problema riguarda solo alcuni prodotti o può colpire l'intero catalogo?
Nella maggior parte dei casi la violazione è a livello di prodotto: solo gli URL con markup errato vengono disapprovati. Se però il problema si trova nel template del tema - ad esempio un prezzo hardcodato nel JSON-LD base - la disapprovazione può estendersi all'intero catalogo contemporaneamente. In rari casi, quando i segnali artificiali (disponibilità o spedizione gratuita dichiarate falsamente) sono sistematici e reiterati, GMC può escalare la violazione a livello di account.
Come identifico quale campo JSON-LD è sbagliato?
Il metodo più rapido è il Rich Results Test (search.google.com/test/rich-results): incolla l'URL del prodotto disapprovato e controlla la sezione "Prodotto". Lo strumento mostra i campi mancanti o non validi con messaggi di errore specifici. In alternativa, apri il sorgente HTML della pagina (Ctrl+U) e cerca "@type: Product" per confrontare manualmente i valori del markup con quelli visibili. Google Search Console → Miglioramenti → Prodotti fornisce un riepilogo aggregato degli errori rilevati durante la scansione organica.
Shopify genera automaticamente i dati strutturati - devo modificare il codice?
Sì, nella maggior parte dei casi. Shopify include un blocco JSON-LD di base, ma temi personalizzati o di terze parti possono avere markup incompleto, hardcodato o non aggiornato per Shopify Markets. Alcune app SEO aggiungono un secondo blocco JSON-LD che può contraddire quello del tema. La modifica al codice - di solito in product.liquid o theme.liquid - è quasi sempre necessaria per correggere la violazione in modo permanente. Non è richiesta competenza avanzata: la correzione tipica consiste nel sostituire valori statici con variabili Liquid dinamiche.
Quanto tempo ci vuole per vedere la risoluzione dopo la correzione?
Dopo la correzione e la richiesta di revisione in GMC, i tempi tipici variano da 1 a 5 giorni lavorativi. Inviare un feed incrementale tramite Merchant API v1 dopo la correzione può accelerare il processo: GMC ri-valuta i prodotti aggiornati con priorità rispetto alla coda di scansione ordinaria. Se il problema coinvolge molti prodotti, alcune disapprovazioni possono restare in coda più a lungo.
Posso usare microdata invece di JSON-LD su Shopify?
Sì, Google accetta sia JSON-LD che microdata per Schema.org/Product. Tuttavia JSON-LD è il formato raccomandato perché è separato dal markup HTML visibile e più semplice da mantenere. La maggior parte dei temi Shopify moderni usa JSON-LD. Se il tuo tema usa microdata (attributi itemscope e itemtype), i criteri di conformità sono identici: i valori devono corrispondere esattamente a quelli visibili nella pagina.

Fonti e riferimenti

Fonti ufficiali citate

  1. Google Search Central: dati strutturati per prodotti (schema.org/Product) https://developers.google.com/search/docs/appearance/structured-data/product
  2. Google Rich Results Test https://search.google.com/test/rich-results
  3. Schema.org: definizione del tipo Product https://schema.org/Product

Riceva la checklist di ricorso per questo motivo

La correzione passo dopo passo di questa pagina, via email, così può eseguirla durante il periodo di attesa. Senza creare un account.

Oppure descrivi il tuo caso e ricevi una valutazione umana