Volgens Google ontvangt een SERP-resultaat met een goed rich snippet gemiddeld een aanzienlijk hogere doorklik dan een kale tekstlink. Voor productpagina’s gaat het dan om sterrenbeoordelingen, prijs, voorraad en levertijd direct in het zoekresultaat. Die extra signalen zijn geen design-trucje van Google; ze komen rechtstreeks uit een blok JSON-LD dat op je productpagina staat. Of dat blok klopt, bepaalt of jouw shop ze krijgt of niet.
WooCommerce zet niet automatisch alle benodigde schema goed neer. Veel themes en SEO-plugins doen een deel van het werk, maar laten gaten vallen. In de praktijk zie ik shops waarbij de prijs er wel in staat, maar de voorraad ontbreekt. Of waar twee plugins allebei een Product-schema renderen en met elkaar in de knoop liggen.
Dit artikel laat zien hoe je product schema in WooCommerce goed opzet. Welke velden Google verwacht, hoe je dat via Yoast of Rank Math regelt, wanneer je naar een eigen template moet, en hoe je controleert of het werkt.

Product schema WooCommerce: wat het precies is
Schema.org is een gedeelde woordenlijst die Google, Bing en andere zoekmachines gebruiken om de inhoud van een pagina te begrijpen. Voor producten heet het type Product. Daarbinnen zit een Offer (prijs, voorraad, valuta), eventueel AggregateRating (gemiddelde sterren), Review (losse reviews) en velden zoals brand, sku, gtin13, image.
De aanbevolen vorm is JSON-LD: een blokje JavaScript-data dat in de <head> of <body> van je pagina staat. Google leest dat en bouwt er rich snippets mee in de SERP. De alternatieven (microdata, RDFa) werken nog, maar JSON-LD is de standaard en het makkelijkst te beheren.
Wat een productpagina minimaal nodig heeft voor rich snippets:
name(de producttitel)image(een of meer URL’s naar productfoto’s)description(productbeschrijving)sku(artikelnummer, uniek per product)brand(merknaam)offersmetprice,priceCurrency,availability,priceValidUntil
Voor rich snippets met sterren komt daar aggregateRating of losse review-blokken bij, mits je echte reviews hebt. Verzonnen sterren is een handhavingsovertreding en kan je site uit de SERP gooien.
Product-schema preview
Zie je rich snippet groeien
Zet velden aan en uit. Je ziet wat elk stuk Product-schema in Google laat verschijnen.
Linnen kinderjurk groen – NonaKids
Alleen met echte reviews. Geen nep-beoordelingen, dat gaat tegen Google’s richtlijnen in.
Snippet toont nu: titel, beschrijving en prijs.
Dit is een weergave-voorbeeld. Test je echte pagina met de Google Rich Results Test.
Schema-velden
Meer velden is niet altijd beter; vul alleen wat echt klopt voor je product.
Interactieve versie, zet JavaScript aan. Hieronder staat een volledig voorbeeld-snipppet.
Linnen kinderjurk groen – NonaKids
- Naam + beschrijving. Verplicht. Basis van het Product-schema.
- Prijs. Verplicht voor prijsweergave. Laat prijs direct in Google zien.
- Voorraad. Optioneel, maar aangeraden. Laat zien of het leverbaar is.
- Beoordeling. Optioneel. Alleen met echte reviews.
- Merk. Optioneel. Geeft extra context.
- Levertijd. Optioneel. Kan levertijd tonen.
Wat WooCommerce zelf al doet
WooCommerce voegt sinds versie 3.0 een basisset schema toe via microdata op productpagina’s. Productnaam, prijs, voorraad en SKU worden meestal opgepakt. Maar er zit een aantal addertjes onder.
Eerste probleem: microdata zit in de HTML zelf, ingebakken in de templates. Als je theme die templates overschrijft (en de meeste premium themes doen dat), kan de microdata kwijt zijn. Tweede probleem: WooCommerce levert geen brand, en zonder brand toont Google geen rich snippet voor producten. Dat veld moet je apart instellen, vaak via een attribuut of een SEO-plugin.
Derde probleem: als je een SEO-plugin gebruikt die ook Product-schema rendert via JSON-LD, krijg je twee schemas op dezelfde pagina. Niet altijd een drama, maar het kan wel conflicten geven. Google kiest dan zelf wat hij gelooft.
In de praktijk werk ik altijd met één duidelijke bron voor het Product-schema: ofwel de SEO-plugin (Yoast of Rank Math) als die volledig is, ofwel een eigen template als er custom-velden in moeten.
Opzetten via Yoast SEO
Yoast SEO heeft sinds versie 14 een uitgebreid schema-framework. De Premium-versie met WooCommerce-uitbreiding rendert automatisch een Product-schema, inclusief offers en aggregateRating als die data beschikbaar is.
Wat je moet instellen:
- Yoast SEO en Yoast WooCommerce SEO Premium installeren. De gratis Yoast SEO doet basis-schema, maar voor compleet product-schema heb je de WooCommerce-extensie nodig.
- Brand-veld koppelen. Onder Yoast > Zoekuiterlijk > Productpagina’s kies je welk product-attribuut als
brandwordt uitgelezen. Heb je nog geen brand-attribuut, maak er dan eerst eentje aan in WooCommerce > Producten > Attributen. - Identifier instellen. Voor producten met een EAN-barcode of GTIN kies je hier het juiste attribuut. Zonder geldig identifier-veld toont Google geen sterren, ook al heb je reviews.
- WooCommerce-schema uitzetten. Onder Yoast > Zoekuiterlijk > Algemeen schakel je het standaard WooCommerce-microdata-schema uit. Dat voorkomt dubbele schemas.
Na deze instellingen krijg je per product automatisch een JSON-LD blok in de pagina. Check een productpagina via Bekijk paginabron en zoek naar application/ld+json. Je moet één blok zien met @type: Product.
Opzetten via Rank Math
Rank Math heeft een ingebouwde WooCommerce-module en doet veel van wat Yoast Premium kost in de gratis versie. De stappen lijken op die van Yoast.
- Rank Math installeren en WooCommerce-module activeren. Onder Rank Math > Dashboard > Modules.
- Product-schema-instellingen openen. Onder Rank Math > Titles & Meta > Producten staan de schema-velden. Hier kies je per type product (eenvoudig, variabel, gegroepeerd) welke schema-template geldt.
- Brand en GTIN koppelen. Onder Rank Math > Producten kies je welk attribuut als
branden welk alsgtinwordt uitgelezen. - Standaard WooCommerce-microdata uitzetten. Rank Math doet dit vaak automatisch, maar het is goed te checken via Rank Math > Algemene Instellingen > WooCommerce.
Rank Math toont op de productpagina zelf een schema-preview in de WordPress-editor. Dat is handig om snel te zien wat er gerenderd wordt.

Handmatig: een eigen JSON-LD blok
Soms is een plugin niet de juiste keuze. Bijvoorbeeld omdat je veel custom-velden hebt die je in schema wilt meegeven, of omdat een plugin een veld weglaat dat je nodig hebt.
Een minimaal JSON-LD blok voor een WooCommerce-product ziet er zo uit:
json
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Stanley/Stella Creator T-shirt heren bio-katoen",
"image": [
"https://voorbeeldshop.nl/wp-content/uploads/creator-tshirt-1.jpg",
"https://voorbeeldshop.nl/wp-content/uploads/creator-tshirt-2.jpg"
],
"description": "Bio-katoen heren T-shirt met ruime fit, geschikt voor bedrukking en dagelijks dragen.",
"sku": "SS-CREATOR-BLUE-L",
"brand": {
"@type": "Brand",
"name": "Stanley/Stella"
},
"offers": {
"@type": "Offer",
"url": "https://voorbeeldshop.nl/product/creator-tshirt-blauw-l/",
"priceCurrency": "EUR",
"price": "24.95",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock"
}
}Dit zet je in een functie in je theme’s functions.php, of beter: in een mu-plugin, zodat het overleeft bij theme-updates. De data haal je dynamisch uit het WooCommerce-product-object via wc_get_product($post->ID).
Handmatig schema is iets dat ik in mijn werk regelmatig bouw voor shops met afwijkende producten. Een voorbeeld: een shop die abonnementen verkoopt naast losse producten. Het standaard Product-schema past niet op een abonnement, daar wil je vaak een Service– of SubscriptionService-type.
Validatie via de Google Rich Results Test
Nadat je schema staat, controleer je het via de officiële Google Rich Results Test. Plak de URL van een productpagina, druk op Test URL en wacht een paar seconden.
Wat je wilt zien:
- “Page is eligible for rich results”
- Een lijst met gedetecteerde items, in elk geval
ProductmetOffer - 0 errors, 0 warnings (warnings mag soms, errors niet)
Veelvoorkomende meldingen en wat ze betekenen:
Missing field “brand”. Je hebt geen brand-veld gekoppeld in je SEO-plugin, of het attribuut is leeg. Vul het in via WooCommerce of stel het in de SEO-plugin.
Missing field “priceValidUntil”. Dit is een waarschuwing, geen fout. Voor producten waarvan de prijs vast staat, mag dit veld leeg blijven. Voor aanbiedingen vul je een einddatum in.
Either “review” or “aggregateRating” should be specified. Dit is een waarschuwing. Voeg sterren toe via een review-plugin (WooCommerce-reviews ingeschakeld zorgt vaak al voor automatische aggregateRating), of negeer als je geen reviews wil tonen.
Multiple Product items detected. Je hebt twee schemas op dezelfde pagina. Zet er een uit.
Na een wijziging duurt het meestal een paar dagen tot een paar weken voor Google de nieuwe schema oppikt en rich snippets toont. Geduld is hier onderdeel van het werk.
Search Console: wat zie je daar terug?
Naast de Rich Results Test geeft Google Search Console terugkoppeling over het product-schema op je shop. Onder Verbeteringen > Producten zie je per pagina of er fouten of waarschuwingen zijn.
Wat ik in mijn werk vaak controleer:
- Aantal geldige producten versus het aantal producten in de shop. Een groot verschil wijst op een schema-probleem dat niet alleen één pagina raakt.
- Trend van fouten in de tijd. Een plotselinge piek na een plugin-update is een teken dat de update iets gebroken heeft.
- Specifieke foutmeldingen zoals “Missing field offers”. Die geven direct aan wat er ontbreekt.
Search Console werkt vertraagd: een fix vandaag verschijnt soms pas over een week of twee in het rapport. Voor snelle controle blijft de Rich Results Test het primaire instrument.

Schema buiten WooCommerce
Hetzelfde mechanisme werkt op andere shops, alleen anders ingericht. Shopify rendert standaard al productschema, vaak inclusief brand en offer. Voor maatwerk-shops in Laravel of een custom HubSpot-template bouw je het JSON-LD blok in je template-laag, met de productdata uit je eigen database of API.
Wat hetzelfde blijft over alle systemen: je hebt minstens name, image, description, sku, brand en offers nodig. En je controleert het via de Rich Results Test. De rest is uitvoeringsverschil.
Voor de officiële documentatie over wat Google accepteert, zie de pagina van Google Search Central over product structured data. Die wordt regelmatig bijgewerkt; het is het enige document waar de definitieve lijst van verplichte en aanbevolen velden in staat.
Wanneer schema-werk uit handen geven
Productschema is niet ingewikkeld als je shop standaard is en je SEO-plugin alles ondersteunt. Het wordt lastig wanneer:
- Je twee of meer schema-bronnen tegelijk draait die met elkaar botsen
- Je producten variabelen of abonnementen hebt die niet in het standaard Product-type passen
- Je custom-velden via ACF gebruikt die niet door je SEO-plugin worden uitgelezen
- Je Rich Results Test errors geeft die je niet kunt thuisbrengen
In die gevallen helpt het om iemand te laten meekijken die regelmatig met JSON-LD werkt en die je theme en plugin-stack kan lezen. Schema-fouten zijn vaak een uurtje werk om op te lossen, maar je moet weten waar je moet kijken.
Meer over de basis van productpagina-optimalisatie staat in mijn artikel over productpagina SEO voor WooCommerce. Voor andere webshop-onderwerpen zie de categorie webshop optimalisatie.



