Ga naar de hoofdinhoud
Terug naar blog
Technische SEO

Schema.org Product in JSON-LD: e-commercegids 2026

JSON-LD Product maakt Google rich results mogelijk: sterren, prijs en voorraad. Dit is de volledige implementatie voor 2026, inclusief fouten.

#schema.org#json-ld#rich results#technische seo
Schema.org Product in JSON-LD: e-commercegids 2026

Schema.org Product in JSON-LD: de e-commercegids 2026

U hebt deze Google-resultaten waarschijnlijk al gezien, waarbij een productpagina direct sterren, de prijs en "Op voorraad" onder de titel toont. Dat is een rich result, en dat is wat een correct geïmplementeerde schema.org Product activeert. Sites die hiervan profiteren, zien hun CTR met 15 tot 40% stijgen op een vergelijkbare positie zonder rich result.

In 2026 is implementatie via JSON-LD de officiële methode die Google aanbeveelt. Hieronder staat de volledige versie, testbaar en klaar voor productie.

Waarom JSON-LD en niet Microdata of RDFa

Er zijn drie formaten om schema.org aan een webpagina toe te voegen: Microdata (rechtstreeks in de HTML), RDFa (HTML5-attributen) en JSON-LD (een apart blok gestructureerde data).

Google beveelt JSON-LD aan sinds 2015, en in 2026 is dit de feitelijke standaard geworden. Redenen:

  • Scheiding tussen data en presentatie: JSON-LD staat in een <script type="application/ld+json"> in de <head>, los van de zichtbare HTML
  • Eenvoudiger te genereren: één JSON-blok per pagina, makkelijk te onderhouden
  • Geen conflict met uw thema: u hoeft de HTML-structuur van templates niet aan te passen
  • Betere compatibiliteit met moderne frameworks (Next.js, Nuxt, enz.)

Microdata wordt nog steeds door Google gelezen, maar wordt niet meer aanbevolen voor nieuwe implementaties.

De 7 verplichte (of aanbevolen) velden voor een Product

Hieronder staat een minimale JSON-LD Product die de Google-tests doorstaat en rich results mogelijk maakt:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Heren Derby leren schoen",
  "description": "Derby-schoen van Italiaans leer, met de hand afgewerkt, beschikbaar van maat 38 tot 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"
  }
}

Uitsplitsing:

  1. @context en @type — geven aan dat het om een schema.org Product gaat
  2. name — de productnaam (≤100 tekens aanbevolen)
  3. description — korte beschrijving (150-300 tekens)
  4. image — array met afbeeldings-URLs (minimaal 1, idealiter 3-6 in hoge resolutie)
  5. sku — unieke productidentificatie (verplicht voor rich results)
  6. brand — productmerk
  7. offers — prijs- en voorraadstructuur (kritiek)
  8. aggregateRating — gemiddelde score als u reviews hebt (activeert sterren in de SERP)

Offer en AggregateRating: de kritieke details

Offer

Het gevoeligste onderdeel. Vier regels om te volgen:

priceCurrency in ISO 4217: "EUR", "USD", "GBP"… niet "€", "$" of "£". Dit is een veelgemaakte fout waardoor het rich result mislukt.

price als string, niet als getal: "149.00" en niet 149.00. Google accepteert beide in 2026, maar de richtlijnen bevelen een string aan.

availability als volledige schema.org-URL:

  • https://schema.org/InStock → op voorraad
  • https://schema.org/OutOfStock → uitverkocht
  • https://schema.org/PreOrder → pre-order
  • https://schema.org/BackOrder → speciale bestelling met levertijd

priceValidUntil (optioneel maar aanbevolen): einddatum van de geldigheid van de prijs in ISO 8601-formaat ("2026-12-31"). Google gebruikt dit graag om verouderde prijzen te detecteren.

AggregateRating

Activeert sterren in de SERP. Voorwaarden:

  • ratingValue tussen 1 en 5
  • reviewCount: minimaal 1, maar Google beveelt 3+ aan voor weergave
  • De bijbehorende reviews moeten zichtbaar op de pagina staan — een onjuiste AggregateRating met niet-bestaande reviews kan leiden tot een handmatige actie

Praktische tip: als u weinig reviews hebt, toon ze dan op uw pagina via een widget (Yotpo, Judge.me, Trustpilot) en haal het aantal + de gemiddelde score via hun API op voor de JSON-LD.

Testen met Rich Results Test

Voordat u live gaat, test u elke template van productpagina's met de Rich Results Test van Google.

Deze controleert:

  • Geldige JSON-syntax
  • Alle verplichte velden aanwezig
  • Waarden in de verwachte formaten (URLs, datums, valuta)
  • Geschiktheid voor rich results

Veelvoorkomende fouten die worden gemeld:

  • "availability" expected schema.org URL → u hebt "In stock" ingevuld in plaats van de schema.org-URL
  • "priceCurrency" invalid → valuta niet in ISO 4217
  • Missing field "sku" → geen SKU in de Offer
  • Multiple products in single offer → u hebt geprobeerd meerdere producten in één JSON-LD-blok te zetten

Zodra de test is geslaagd, rapporteert Google Search Console prestaties en fouten binnen 2 tot 4 weken via Enhancements → Products.

Implementatie per platform

Shopify

Sinds 2023 genereert Shopify automatisch een Product schema op productpagina's als u een officieel thema gebruikt. Probleem: het standaardschema is vaak onvolledig (geen AggregateRating, geen brand).

Voor een volledig schema:

  1. Bewerk uw thema: Online Store → Themes → Edit code
  2. Open snippets/product-structured-data.liquid of sections/main-product.liquid
  3. Voeg de ontbrekende velden toe of vervang het door een custom template

Alternatief: installeer een app zoals SEO JSON-LD Schema of Smart SEO die het schema voor de volledige catalogus zelfstandig beheert.

WooCommerce

WooCommerce genereert sinds v5+ ook standaard een schema, maar onvolledig. Aanbevolen plugins om dit aan te vullen:

  • RankMath (free): beheert Product schema met Offer en AggregateRating
  • Yoast WooCommerce SEO (paid): verrijkt het standaardschema van Yoast
  • WP SEO Structured Data Schema: meer granulariteit als u per template wilt aanpassen

Next.js / headless

Als u een custom frontend gebruikt, injecteert u de JSON-LD in de <head> via een SSR-component:

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

Let op: JSON-LD client-side genereren (via useEffect) werkt niet voor SEO — Google crawlt server-rendered. Zorg ervoor dat de JSON-LD in de initiële HTML staat die door de server wordt teruggegeven.

Typische fouten om te vermijden

Tegenstrijdigheden tussen zichtbare pagina en JSON-LD. Als de pagina "Op voorraad" toont maar de JSON-LD OutOfStock zegt, negeert Google de JSON-LD. Synchroniseer beide met dezelfde databron.

Andere prijs in JSON-LD dan op de pagina. Dezelfde logica: Google detecteert het verschil en negeert het rich result.

Meerdere Product in hetzelfde <script>. Slechts één @type: Product per script. Als u varianten hebt, gebruik dan @type: ProductGroup met hasVariant: [...] om ze te koppelen.

Afbeeldingen niet toegankelijk. De afbeeldings-URLs moeten publiek zijn (niet achter een login). Test elke URL met curl om te controleren of deze een 200 retourneert.

Verzonnen AggregateRating. 4.9 sterren op een productpagina zonder zichtbare reviews plaatsen kan leiden tot een handmatige actie; dat risico is reëel.

En de varianten?

Als uw product meerdere maten of kleuren heeft, zijn er 2 benaderingen:

Benadering 1: één enkel Product schema (de parent)

Eenvoudiger en geschikt voor 90% van de gevallen. Het parent-schema beschrijft het generieke product, en de pagina beheert de varianten via de selector. De getoonde prijs is de standaardprijs, de availability is InStock als minstens één variant beschikbaar is.

Benadering 2: ProductGroup met hasVariant

Nauwkeuriger maar complexer. Aanbevolen als uw varianten sterk verschillende prijzen of uiteenlopende beschikbaarheid hebben (maat 44 uitverkocht, maar maat 42 niet). Google ondersteunt ProductGroup sinds 2022.

FAQ

Hoe lang duurt het voordat rich results in Google verschijnen?

Tussen 1 en 4 weken nadat het correcte schema is gepubliceerd. Google moet de pagina opnieuw crawlen en de geschiktheid algoritmisch activeren. U kunt dit versnellen door de URL in te dienen via Search Console → URL Inspection → Request Indexing.

Zorgt schema.org Product ervoor dat de productpagina beter rankt?

Niet direct. Schema is geen rankingsignaal. Het maakt rich results mogelijk (sterren, prijs, voorraad in de SERP) die de CTR verhogen, wat de ranking indirect kan verbeteren via engagementsignalen.

Moet u volledige reviews opnemen in de JSON-LD, en niet alleen het aggregaat?

Optioneel. Individuele Review-items toevoegen in de JSON-LD kan extra rich features mogelijk maken, maar maakt de code zwaarder. Voor catalogi met 5.000+ productpagina's is alleen AggregateRating ruim voldoende.

Wordt schema bestraft als mijn productpagina door AI is gegenereerd?

Nee. Google bestraft de herkomst van content niet, maar de kwaliteit. Een correcte JSON-LD op een kwalitatieve AI-pagina kan net als elke andere pagina rich results krijgen.

Moet mijn JSON-LD in <head> of in <body> staan?

Beide werken, maar <head> is de best practice. Plaats de JSON-LD vlak voor de afsluitende tag </head> om zeker te zijn dat crawlers deze vroeg lezen.

Verschijnen rich results ook op Bing en DuckDuckGo?

Bing wel, maar met meer vertraging (soms 2 tot 3 maanden). DuckDuckGo gebruikt Bing als backend, dus indirect ook. Beide gebruiken dezelfde schema.org-standaard; aanpassen is niet nodig.


Op Ecomptimize wordt JSON-LD Product automatisch gegenereerd op basis van de gegevens uit uw Shopify- of WooCommerce-catalogus. Bekijk de pagina Shopify of WooCommerce.

Vond je dit artikel interessant?