Productdata en structured data voor webshops: wat schema.org Product wel en niet doet
Structured data voor een webshop is een vaste, machineleesbare beschrijving van je producten op de pagina, bijvoorbeeld in JSON-LD. Met schema.org Product en Offer geef je naam, prijs en valuta door aan zoekmachines. Google ondersteunt drie formaten (JSON-LD, Microdata en RDFa) en beveelt JSON-LD aan. Wat je ermee wint, is duidelijkheid voor machines. Wat je er niet mee wint, is een garantie op een bijzondere weergave in Google. Dat lees je hieronder, met de bronnen erbij.
Wat zijn Product en Offer in schema.org?
Begin bij de definities. Schema.org omschrijft Product als elk aangeboden product of elke dienst, met voorbeelden als een paar schoenen, een concertkaartje of het huren van een auto. Een Offer is volgens schema.org een aanbod om rechten over een item over te dragen of een dienst te leveren. In een webshop hoort het product dus bij de Product-markup en de prijsvoorwaarden bij de Offer. Die twee horen bij elkaar: een product zonder aanbod zegt niets over wat het kost of onder welke voorwaarden je het koopt.
Een kleine eigenschap met groot belang is priceCurrency. Schema.org omschrijft die als de valuta van de prijs. Zonder valuta is een getal alleen een getal. Voor een Nederlandse webshop denk je aan EUR, maar leg het expliciet vast, ook als je alleen in euro verkoopt. Geef de prijs door zoals die op de pagina staat. Staat op de productpagina een prijs inclusief btw, dan hoort de markup daarmee overeen te komen. Dat voorkomt discussie over welk bedrag klopt, ook voor jezelf als je later een fout zoekt.
Welke twee soorten productmarkup kent Google?
Google maakt onderscheid tussen twee soorten productmarkup. Volgens de documentatie van Google Search Central, geraadpleegd op 11 oktober 2026, zijn merchant listings bedoeld voor pagina’s waar klanten het product bij jou kunnen kopen. Product snippets zijn bedoeld voor productpagina’s waar mensen het product niet direct kunnen kopen. Een webshop met winkelwagen valt dus onder merchant listings. Dat bepaalt welke documentatie je volgt en welke velden Google van je verwacht. Twijfel je welk type bij een pagina past, bepaal dan eerst of de bezoeker daar het product echt kan afrekenen. Google kan deze pagina’s aanpassen, dus lees ze opnieuw voor je een grote wijziging doorvoert.
Per 11 oktober 2026 noemt Google bij de merchant listings een paar concrete eisen. Voor merchant listings moet de prijs groter zijn dan nul, anders dan bij product snippets. Gebruik je zowel offers.price als offers.priceSpecification om een actieve prijs te coderen, dan gebruikt Google de prijs uit offers.price. Wie twee prijzen in de markup zet, weet dus vooraf welke Google gebruikt. Een praktische aanpak is om één duidelijke bron voor de prijs aan te houden en de markup die bron te laten volgen. Controleer na elke prijswijziging op een paar producten of de pagina en de markup nog hetzelfde bedrag tonen.
Hoe geef je prijs en korting door?
Wat doe je met kortingen? Per 11 oktober 2026 schrijft Google dat je een doorgestreepte oorspronkelijke prijs markeert met een priceType-eigenschap met de waarde https://schema.org/StrikethroughPrice. Daarmee maak je duidelijk welke prijs de oude is en welke de actuele. Voor de weergave in je shop zelf gelden aparte consumentenregels. Zo schrijft de ACM dat je een aanbiedingsprijs alleen vergelijkt met de laagste prijs die je in de afgelopen 30 dagen hebt gebruikt. De overige regels lees je bij de ACM. Voor de markup geldt hetzelfde als voor de prijs: laat zien wat de bezoeker ook echt ziet.
Een praktische aanpak is om de productdata uit je webshop-database te halen en niet uit een handmatig bewerkte pagina. Dan wordt de markup gegenereerd uit dezelfde velden als de zichtbare prijs. Zo komen de prijs in de markup en de prijs in beeld uit hetzelfde veld. Bij een maatwerk-webshop bouwen we dat in: één productmodel, één plek waar de prijs staat en een sjabloon dat de JSON-LD daaruit maakt. Bij een standaardplatform hangt het af van de plug-in of het thema, en die moet je dan goed controleren.
Waar zet je het retourbeleid?
Het retourbeleid is een tweede onderdeel dat Google noemt. Per 11 oktober 2026 adviseert Google een algemeen retourbeleid onder Organization-markup te zetten in plaats van per aanbieding. Schema.org kent voor retouren de eigenschap merchantReturnDays: een vaste retourdatum of het aantal dagen vanaf de leverdatum dat een product geretourneerd kan worden. Schrijf alleen dagen in die markup die ook echt in je voorwaarden staan. Wat voor consumenten wettelijk geldt, staat in de ACM-regels over herroeping en bedenktijd; die laten we hier buiten beschouwing.
Een algemeen retourbeleid op één plek heeft ook een praktisch voordeel. Verandert je beleid, dan pas je het op één plek aan in plaats van in elk product. Zo voorkom je dat oude productpagina’s een ander aantal dagen noemen dan je voorwaarden. Combineer dit met de voorwaarden die al zichtbaar op je site staan, zodat de markup alleen herhaalt wat de klant kan lezen. Ontbreekt een regel in je voorwaarden, dan zet je hem niet alleen in de markup. Eerst de voorwaarden, dan de markup.
Wat doet structured data wel en niet?
Wat doet structured data nu wel en niet? Google schrijft dat het niet garandeert dat structured data als rich result getoond wordt, ook niet als je pagina correct is gemarkeerd volgens de Rich Results Test. Ongebruikte structured data veroorzaakt geen problemen voor Google Zoek, maar heeft ook geen zichtbaar effect. Zie het dus als een manier om je productdata ondubbelzinnig aan te bieden, niet als een garantie op een bijzondere weergave. Verwacht daarom geen vaste uitkomst en meet wat er in Search Console of in je omzet verandert voordat je conclusies trekt.
Er zijn ook regels voor wat je mag markeren. Google schrijft: markeer geen content die niet zichtbaar is voor lezers van de pagina. Voor een webshop betekent dat: geen prijs, voorraadstatus of beoordeling in de markup die op de pagina ontbreekt. Een geplande prijsverlaging die nog niet live is, hoort er nog niet in. Google schrijft ook dat je structured data niet gebruikt om gebruikers te misleiden. Krijgt een pagina een handmatige actie voor structured data, dan verliest ze volgens Google haar geschiktheid voor rich results, maar haar ranking in de webzoekresultaten verandert daardoor niet.
Hoe houd je productdata betrouwbaar?
Een kort controlerijtje voor productdata: kloppen naam, prijs en valuta met de pagina, staat de prijs in één bron, is de prijs groter dan nul bij merchant listings, en komt het retourbeleid overeen met je voorwaarden? Test daarna een steekproef van producten met de Rich Results Test en kijk periodiek in Search Console naar meldingen. Wijzigt Google zijn documentatie, dan wijzigt jouw checklist mee. Daarom voegen we bij onderhoud van een webshop zo’n controle toe, zodat de markup niet stilletjes achterloopt op de pagina.
Zorg dat je ook de basis van webshop-SEO op orde hebt: structured data vervangt geen goede titel, duidelijke productteksten en snelle pagina’s. Over dat laatste lees je meer in het artikel over een snellere webshop met Core Web Vitals. Wil je een webshop waarin productdata en markup uit één bron komen, bekijk dan onze webshop-dienst. We bouwen vanaf €2.500 en jij blijft eigenaar van code en data.
| Dienst | Vanaf | Doorlooptijd |
|---|---|---|
| Website voor vakmensen | €750 per project | 2 weken |
| Webshop op maat | €2.500 per project | ongeveer 6 weken |
| Webapplicatie of maatwerk software | €2.000 per project | ongeveer 6 weken |
| Mobiele app | €5.000 per project | ongeveer 6 weken |
| WordPress-onderhoud | €45 per maand | doorlopend |
| Managed hosting | €25 per maand | doorlopend |
Vaste prijs vooraf, geen maximumbedrag: de definitieve prijs volgt na een gratis intakegesprek.
Laatst bijgewerkt op
Veelgestelde vragen
Wat is structured data voor een webshop?
Het is een manier om productgegevens, zoals naam, prijs en valuta, in een vaste structuur op de pagina te zetten. Google ondersteunt JSON-LD, Microdata en RDFa en beveelt JSON-LD aan. De data beschrijft wat al zichtbaar op de pagina staat.
Garandeert Google een rich result als mijn markup klopt?
Nee. Volgens Google is er geen garantie dat structured data als rich result wordt getoond, ook niet als de markup correct is volgens de Rich Results Test. Ongebruikte structured data veroorzaakt geen problemen, maar heeft ook geen zichtbaar effect.
Wat is het verschil tussen merchant listings en product snippets?
Per 11 oktober 2026 zijn merchant listings volgens Google voor pagina’s waar klanten het product bij jou kunnen kopen. Product snippets zijn voor productpagina’s waar mensen het product niet direct kunnen kopen. Een webshop met bestelknop valt dus onder merchant listings.
Mag ik een prijs van nul in de markup zetten?
Per 11 oktober 2026 eist Google voor merchant listings een prijs groter dan nul, anders dan bij product snippets. Gebruik je zowel offers.price als offers.priceSpecification, dan gebruikt Google offers.price. Controleer dit in de actuele Google-documentatie, want die kan wijzigen.
Mag ik gegevens markeren die bezoekers niet zien?
Nee. Google schrijft dat je geen content mag markeren die voor lezers van de pagina niet zichtbaar is. Markup moet dus overeenkomen met wat de bezoeker op de pagina ziet, zoals de prijs op de productpagina.
Waar dit op gebaseerd is
- Autoriteit Consument & Markt (ACM): Prijzen vermelden | ACM, geraadpleegd op
“Vergelijk uw aanbiedingsprijs in dat geval alleen met de laagste prijs die u hebt gebruikt in de afgelopen 30 dagen.”
- Google Search Central: Intro to Product Structured Data on Google | Google Search Central | Documentation | Google for Developers, geraadpleegd op
“Merchant listings: For pages where customers can purchase products from you.”
“Product snippets: For product pages where people can't directly purchase the product.”
- Google Search Central: How To Add Merchant Listing Structured Data | Google Search Central | Documentation | Google for Developers, geraadpleegd op
“Unlike product snippets, merchant listing experiences require a price greater than zero.”
“If you use both the offers.price and offers.priceSpecification properties to encode an active price, Google will use the price provided through the offers.price property”
“We recommend you provide a global return policy for your business under Organization markup instead”
“mark it with a priceType property of value https://schema.org/StrikethroughPrice”
- Schema.org: Product - Schema.org Type, geraadpleegd op
“Any offered product or service. For example: a pair of shoes; a concert ticket; the rental of a car; a haircut; or an episode of a TV show streamed online.”
- Schema.org: Offer - Schema.org Type, geraadpleegd op
“An offer to transfer some rights to an item or to provide a service”
“priceCurrency Text The currency of the price, or a price component when attached to PriceSpecification and its subtypes.”
- Schema.org: MerchantReturnPolicy - Schema.org Type, geraadpleegd op
“merchantReturnDays Date or DateTime or Integer Specifies either a fixed return date or the number of days (from the delivery date) that a product can be returned.”
- Google Search Central: General structured data guidelines, geraadpleegd op
“JSON-LD (recommended) Microdata RDFa”
“Google does not guarantee that your structured data will show up in search results, even if your page is marked up correctly according to the Rich Results Test”
“Don't mark up content that is not visible to readers of the page.”
“Don't use structured data to deceive or mislead users. Don't impersonate any person or organization, or misrepresent your ownership, affiliation, or primary purpose.”
“it doesn't affect how the page ranks in Google web search.”
- Google Search Central Blog: Changes to HowTo and FAQ rich results, geraadpleegd op
“Structured data that's not being used does not cause problems for Search, but also has no visible effects in Google Search.”
Over de auteur
Tekin Uslu is oprichter van Digitaalnu en van moederbedrijf DigiHand (Haarlem, sinds 2009). Hij werkt sinds 2006 in data engineering, geo-informatie en IT-architectuur. Meer over Tekin Uslu →
Wil je hier meer over weten?
Neem contact op voor een vrijblijvend gesprek of bekijk onze diensten.