Vai al contenuto principale
Torna al blog
SEO tecnico

Schema.org Product in JSON-LD: guida e-commerce 2026

Il JSON-LD Product attiva i rich results Google con stelle, prezzo e disponibilità. Ecco l'implementazione completa 2026 e gli errori da evitare.

#schema.org#json-ld#rich results#seo tecnico
Schema.org Product in JSON-LD: guida e-commerce 2026

Schema.org Product in JSON-LD: la guida e-commerce 2026

Hai già visto quei risultati Google in cui una scheda prodotto mostra direttamente le stelle, il prezzo e "Disponibile" sotto il titolo? È un rich result, ed è quello che attiva uno schema.org Product implementato correttamente. I siti che ne beneficiano vedono il CTR aumentare dal 15 al 40% a parità di posizione rispetto a un risultato senza rich result.

Nel 2026, l'implementazione tramite JSON-LD è il metodo ufficiale e consigliato da Google. Ecco la versione completa, testabile e pronta per la produzione.

Perché JSON-LD e non Microdata o RDFa

Tre formati permettono di aggiungere schema.org a una pagina web: Microdata (direttamente nell'HTML), RDFa (attributi HTML5) e JSON-LD (blocco di dati strutturati separato).

Google consiglia JSON-LD dal 2015, e nel 2026 è diventato lo standard di fatto. Motivi:

  • Separazione tra dati e presentazione: il JSON-LD vive in uno <script type="application/ld+json"> nel <head>, indipendentemente dall'HTML visibile
  • Più semplice da generare: un solo blocco JSON per pagina, facile da mantenere
  • Nessun conflitto con il tema: non serve modificare la struttura HTML dei template
  • Migliore compatibilità con i framework moderni (Next.js, Nuxt, ecc.)

Microdata resta leggibile da Google, ma non è più consigliato per le nuove implementazioni.

I 7 campi obbligatori (o consigliati) per un Product

Ecco un JSON-LD Product minimo che supera i test Google e attiva i rich results:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Chaussure Derby cuir homme",
  "description": "Chaussure Derby en cuir italien, finie à la main, disponible du 38 au 46.",
  "image": [
    "https://example.com/products/derby-01.jpg",
    "https://example.com/products/derby-02.jpg",
    "https://example.com/products/derby-03.jpg"
  ],
  "sku": "DERBY-BLK-44",
  "brand": {
    "@type": "Brand",
    "name": "Atelier Maison"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/derby-cuir-homme",
    "priceCurrency": "EUR",
    "price": "149.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "38"
  }
}

Scomposizione:

  1. @context e @type — dichiarano che si tratta di un Product schema.org
  2. name — il nome del prodotto (≤100 car. consigliati)
  3. description — descrizione breve (150-300 car.)
  4. image — array di URL di immagini (minimo 1, idealmente 3-6 in alta risoluzione)
  5. sku — identificatore univoco del prodotto (obbligatorio per i rich results)
  6. brand — marca del prodotto
  7. offers — struttura di prezzo e disponibilità (critica)
  8. aggregateRating — valutazione media se hai recensioni (attiva le stelle nelle SERP)

Offer e AggregateRating: i dettagli critici

Offer

La parte più sensibile. Quattro regole da rispettare:

priceCurrency in ISO 4217: "EUR", "USD", "GBP"… non "€", "$" o "£". Errore frequente che fa fallire il rich result.

price come stringa, non come numero: "149.00" e non 149.00. Google tollera entrambi nel 2026, ma le linee guida consigliano la stringa.

availability come URL schema.org completo:

  • https://schema.org/InStock → disponibile
  • https://schema.org/OutOfStock → esaurito
  • https://schema.org/PreOrder → preordine
  • https://schema.org/BackOrder → ordine su richiesta con tempi di attesa

priceValidUntil (facoltativo ma consigliato): data di fine validità del prezzo in formato ISO 8601 ("2026-12-31"). Google lo apprezza per rilevare prezzi obsoleti.

AggregateRating

Attiva le stelle nelle SERP. Requisiti:

  • ratingValue tra 1 e 5
  • reviewCount: minimo 1, ma Google consiglia 3+ per la visualizzazione
  • Le recensioni corrispondenti devono essere visibili nella pagina — falsare l'AggregateRating con recensioni inesistenti = possibile penalizzazione manuale

Suggerimento: se hai poche recensioni, mostrale nella pagina con un widget (Yotpo, Judge.me, Trustpilot) e recupera count + valutazione media dalla loro API per il JSON-LD.

Testare con Rich Results Test

Prima di pubblicare in produzione, testa ogni template di pagina prodotto con Rich Results Test di Google.

Verifica:

  • Sintassi JSON valida
  • Tutti i campi obbligatori presenti
  • Valori nei formati attesi (URL, date, valute)
  • Idoneità ai rich results

Errori comuni segnalati:

  • "availability" expected schema.org URL → hai inserito "In stock" invece dell'URL schema.org
  • "priceCurrency" invalid → valuta non ISO 4217
  • Missing field "sku" → nessun SKU nell'Offer
  • Multiple products in single offer → hai provato a inserire più prodotti in un solo blocco JSON-LD

Una volta superato il test, Google Search Console mostra prestazioni ed errori in 2-4 settimane tramite Enhancements → Products.

Implementazione per piattaforma

Shopify

Dal 2023, Shopify genera automaticamente uno schema Product nelle pagine prodotto se usi un tema ufficiale. Problema: lo schema predefinito è spesso incompleto (niente AggregateRating, niente brand).

Per uno schema completo:

  1. Modifica il tema: Online Store → Themes → Edit code
  2. Apri snippets/product-structured-data.liquid o sections/main-product.liquid
  3. Aggiungi i campi mancanti o sostituisci con un template personalizzato

Alternativa: installa un'app come SEO JSON-LD Schema o Smart SEO che gestisce lo schema su tutto il catalogo in modo autonomo.

WooCommerce

Anche WooCommerce genera uno schema predefinito dalla v5+, ma incompleto. Plugin consigliati per completarlo:

  • RankMath (free): gestisce schema Product con Offer e AggregateRating
  • Yoast WooCommerce SEO (paid): arricchisce lo schema predefinito di Yoast
  • WP SEO Structured Data Schema: più granularità se vuoi personalizzare per template

Next.js / headless

Se usi un frontend personalizzato, inserisci il JSON-LD nel <head> tramite un componente SSR:

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{
    __html: JSON.stringify(productSchema)
  }}
/>

Attenzione: generare il JSON-LD lato client (tramite useEffect) non funziona per la SEO — Google esegue lo scraping in server-render. Assicurati che il JSON-LD sia presente nell'HTML iniziale restituito dal server.

Errori tipici da evitare

Contraddizioni tra pagina visibile e JSON-LD. Se la pagina mostra "Disponibile" ma il JSON-LD dice OutOfStock, Google ignora il JSON-LD. Sincronizza entrambi con la stessa fonte dati.

Prezzo diverso nel JSON-LD e nella pagina. Stessa logica: Google rileva la divergenza e ignora il rich result.

Più Product nello stesso <script>. Un solo @type: Product per script. Se hai varianti, usa @type: ProductGroup con hasVariant: [...] per collegarle.

Immagini non accessibili. Gli URL delle immagini devono essere pubblici (non dietro login). Testa ogni URL con curl per verificare che restituisca un 200.

AggregateRating inventato. Inserire 4.9 stelle in una scheda senza recensioni visibili = possibile penalizzazione manuale, rischio concreto.

E le varianti?

Se il prodotto ha più taglie o colori, 2 approcci:

Approccio 1: un solo schema Product (il parent)

Più semplice, adatto al 90% dei casi. Lo schema parent descrive il prodotto generico, e la pagina gestisce le varianti tramite il selettore. Il prezzo mostrato è quello predefinito, la availability è InStock se almeno una variante è disponibile.

Approccio 2: ProductGroup con hasVariant

Più preciso ma più complesso. Consigliato se le varianti hanno prezzi molto diversi o disponibilità divergenti (esaurita la taglia 44 ma non la 42). Google supporta ProductGroup dal 2022.

FAQ

Quanto tempo serve per vedere i rich results comparire su Google?

Tra 1 e 4 settimane dopo la pubblicazione dello schema corretto. Google deve eseguire di nuovo il crawl della pagina e attivare l'idoneità lato algoritmo. Puoi accelerare inviando l'URL tramite Search Console → URL Inspection → Request Indexing.

Lo schema.org Product fa salire la scheda nel ranking?

Non direttamente. Lo schema non è un segnale di ranking. Attiva i rich results (stelle, prezzo, disponibilità nelle SERP) che aumentano il CTR, e questo può migliorare il ranking indirettamente tramite il segnale di coinvolgimento.

Bisogna includere le recensioni complete nel JSON-LD, non solo l'aggregato?

Facoltativo. Aggiungere singole Review nel JSON-LD può attivare più rich features, ma appesantisce il codice. Su cataloghi da 5.000+ schede, il solo AggregateRating è più che sufficiente.

Lo schema viene penalizzato se la scheda è generata da IA?

No. Google non penalizza l'origine del contenuto, penalizza la qualità. Un JSON-LD corretto su una scheda IA di qualità beneficia dei rich results come qualsiasi altra scheda.

Il mio JSON-LD deve stare nel <head> o nel <body>?

Entrambi funzionano, ma <head> è la buona pratica. Inserisci il JSON-LD subito prima del tag di chiusura </head> per essere sicuro che venga letto presto dai crawler.

I rich results compaiono anche su Bing e DuckDuckGo?

Bing sì, con un ritardo più lungo (a volte 2-3 mesi). DuckDuckGo usa Bing come backend, quindi sì indirettamente. Entrambi usano lo stesso standard schema.org, non serve adattare nulla.


Su Ecomptimize, il JSON-LD Product viene generato automaticamente a partire dai dati del tuo catalogo Shopify o WooCommerce. Vedi la pagina Shopify o WooCommerce.


Ti è piaciuto questo articolo?