Structured data voor webshops

Structured data voor webshops: schema markup die Google en AI-systemen begrijpen

Structured data is geen rankingfactor. Het is de manier waarop je een machine vertelt wat er op een pagina staat: dit is een product, dit kost het, zo snel wordt het geleverd, zo kun je het retourneren. Dat levert sterren, prijzen en levertijden in de zoekresultaten op, en een catalogus die Google en AI-systemen zonder gissen kunnen lezen. Wij bouwen het in je templates en controleren of het klopt met wat de bezoeker ziet.

  • Product, Offer, verzend- en retourbeleid, reviews, breadcrumbs en Organization
  • Gegenereerd uit dezelfde data als je pagina en je Merchant Center-feed
  • Gevalideerd per template, en gemonitord in Search Console

Wat is structured data voor een webshop?

Structured data, ook wel schema markup genoemd, is een gestandaardiseerde beschrijving van de inhoud van een pagina in het vocabulaire van schema.org. Google raadt JSON-LD aan: een blok code in de HTML dat niet zichtbaar is voor bezoekers, maar wel voor zoekmachines. Voor een webshop beschrijft het producten, prijzen, voorraad, verzendkosten, retourvoorwaarden, reviews, de plek van een pagina in je categoriestructuur en wie je als bedrijf bent.

Google zegt zelf dat structured data geen directe rankingfactor is. Het effect zit ergens anders. Met correcte markup kom je in aanmerking voor rijke weergaven, zoals prijs, beschikbaarheid en reviewsterren bij een productresultaat, en voor de gratis productvermeldingen in Google Shopping. Een resultaat met prijs en levertijd trekt een ander soort klik dan een kale blauwe link.

De tweede reden is begrip. Zoekmachines en AI-systemen moeten uit miljoenen pagina's halen wat een product is, wat het kost en of het leverbaar is. Expliciete, consistente data maakt dat minder foutgevoelig. Dat is precies waar het in de praktijk misgaat: markup die een andere prijs noemt dan de pagina, of een product dat 'op voorraad' meldt terwijl het al weken uitverkocht is.

Welke schema markup een webshop nodig heeft

Niet elk schema.org-type levert iets op. Dit zijn de types die voor webshops relevant zijn, en wat ze in de zoekresultaten doen.

TypeWaarWat het oplevertAandachtspunt
Product + OfferProductpaginaPrijs, beschikbaarheid en productvermeldingen in GooglePrijs en voorraad moeten gelijk zijn aan de zichtbare pagina
ProductGroup (varianten)Productpagina met maten of kleurenGoogle begrijpt welke varianten bij elkaar horenElke variant met eigen SKU, GTIN en prijs waar die afwijkt
OfferShippingDetails en MerchantReturnPolicyProductpagina of Organization-niveauVerzendkosten, levertijd en retourtermijn bij je resultaatMoet overeenkomen met je voorwaarden en Merchant Center
AggregateRating en ReviewProductpagina met echte reviewsReviewsterren bij productresultatenAlleen reviews die op de pagina zichtbaar zijn, niet over je eigen bedrijf
BreadcrumbListProduct- en categoriepagina'sBegrip van je structuur; pad in het resultaat op desktopHet pad moet overeenkomen met de zichtbare breadcrumbs
OrganizationHomepage of over-onsLogo, contactgegevens, verwijzingen naar je profielen eldersEén consistente beschrijving, overal dezelfde naam en gegevens

Plan een vrijblijvend gesprek over je project

Een half uur via video met de mensen die het werk ook echt doen. Kies hieronder een moment dat jou past.

  • Direct met het vaste team, geen tussenlagen
  • Concrete feedback op je huidige situatie of plannen
  • Eerlijk advies, ook als het antwoord "niet doen" is
  • Indicatie van kosten en tijdlijn
Liever bellen? 0591-239 299
Beschikbaar deze week

Plan een gratis Tech Check

Vrijblijvend jouw uitdagingen bespreken

Of bel direct: 0591-239 299

Product en Offer: het fundament

Een productpagina zonder Product-markup laat Google zelf raden wat de prijs is. Soms gaat dat goed, vaak pakt het een vanafprijs, een prijs uit een cross-sellblok of de prijs exclusief btw. Met Product en een daarin genest Offer leg je het vast: naam, afbeelding, merk, SKU, GTIN, prijs, valuta, beschikbaarheid en conditie.

Een minimaal Offer-blok ziet er zo uit: {"@type": "Offer", "price": "89.95", "priceCurrency": "EUR", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition"}. Let op de punt als decimaalteken en de volledige URL bij availability. Dat zijn precies de details waar een handgeschreven template op struikelt.

Google onderscheidt twee soorten weergaven. Product snippets zijn de rijke resultaten bij een gewone zoekopdracht, met prijs en sterren. Merchant listings zijn de productvermeldingen in Shopping en de productblokken; die vragen meer velden, zoals een concreet aanbod met prijs. In Search Console krijg je voor beide een apart rapport, met fouten en waarschuwingen per URL.

Bij producten met varianten gebruik je ProductGroup met hasVariant en variesBy. Zo snapt Google dat een shirt in vijf maten één product is met vijf aanbiedingen, in plaats van vijf losse pagina's die elkaar beconcurreren. Dat sluit aan op hoe je canonicals voor varianten hebt ingericht; die twee moeten hetzelfde verhaal vertellen.

Verzending en retouren: de velden die bijna iedereen vergeet

Steeds meer productresultaten tonen niet alleen een prijs, maar ook verzendkosten en de retourtermijn. Die informatie haalt Google uit je structured data of uit de instellingen in Merchant Center. Ontbreekt het, dan krijg je in Search Console waarschuwingen voor shippingDetails en hasMerchantReturnPolicy, en mis je een vergelijkingspunt dat klanten wel zien bij je concurrent.

Je kunt die gegevens per product meegeven met OfferShippingDetails (kosten, bestemming, verwerkings- en levertijd) en MerchantReturnPolicy (termijn, methode, kosten). Google ondersteunt een retourbeleid ook op Organization-niveau, zodat je het niet op elke productpagina hoeft te herhalen. Wat je kiest, hangt af van je situatie: één beleid voor alles kan centraal, afwijkende voorwaarden per productgroep horen bij het product.

Voor Nederland en België betekent dit vaak twee bestemmingen met verschillende verzendkosten en levertijden. Die moeten in de markup en in Merchant Center hetzelfde zijn. Tegenstrijdige informatie is erger dan geen informatie.

Structured data per platform

Elk platform levert iets standaard mee. Vrijwel nooit is dat genoeg.

Het meest voorkomende probleem bij Magento en Shopify zijn dubbele blokken. Het thema genereert Product-markup, een reviewapp doet het ook en een SEO-extensie nog een keer. Google krijgt dan drie versies van hetzelfde product, met elk net andere velden. Wij brengen het terug naar één bron die alle velden bevat.

Belangrijk bij elk platform: render de markup server-side. Markup die pas via JavaScript wordt toegevoegd, wordt wel verwerkt, maar later en minder betrouwbaar. Bij Hyvä, Shopify en een Laravel-SSR-opzet is server-side de standaard; bij headless-frontends moet je erop letten.

PlatformStandaard aanwezigWat meestal ontbreektOnze aanpak
Magento 2 met LumaBeperkte, verouderde markup in het themaVolledige Offer-data, varianten, verzending, retouren, breadcrumbsJSON-LD uit een eigen module, gevoed door catalogusdata
Magento 2 met HyväAfhankelijk van het thema en gebruikte modulesConsistentie tussen extensies; vaak dubbele of ontbrekende blokkenEén bron van markup, dubbelingen verwijderd
ShopifyProduct-markup via het thema, vaak met de structured_data-filterVerzending, retouren, GTIN's, reviews uit een app op de juiste plekThema-aanpassing in Liquid, metafields voor ontbrekende velden
Laravel of headlessNiets, tenzij je het bouwtAllesServer-side gerenderde JSON-LD vanuit het datamodel

Structured data en Merchant Center: één bron van waarheid

Google vergelijkt je productfeed in Merchant Center met wat het op je pagina en in je markup ziet. Klopt de prijs of beschikbaarheid niet, dan kunnen producten worden afgekeurd. Merchant Center kan prijs en beschikbaarheid ook automatisch bijwerken op basis van je structured data. Dat werkt alleen als die markup betrouwbaar is.

Daarom laten we feed, pagina en markup uit dezelfde data komen. In Magento betekent dat dezelfde prijsberekening, inclusief klantgroep en btw-weergave. In Shopify dezelfde variant en dezelfde valuta per market. Een feedtool die een eigen prijslogica heeft, is een bekende bron van afkeuringen.

Ook GTIN's en merknamen horen hier bij. Ze helpen Google en AI-systemen om jouw product te koppelen aan hetzelfde product bij andere verkopers. Zonder identifier is je product een losse pagina; met identifier is het een aanbod voor een bekend product.

De rol van structured data in AI-zoekmachines en GEO

AI Overviews gebruiken de gewone Google-index. ChatGPT search leunt onder meer op de Bing-index. Beide zoekmachines verwerken structured data, en Google bouwt er onder meer zijn productkennis mee op. Wat je markup doet voor Google en Bing, werkt dus indirect door in de antwoorden die AI-systemen geven.

Of taalmodellen JSON-LD zelf rechtstreeks lezen, is niet publiek bevestigd. Wees sceptisch bij iedereen die beweert dat schema markup je gegarandeerd in ChatGPT krijgt. Wat wel vaststaat: een product met een duidelijke naam, merk, GTIN, prijs, beschikbaarheid en levertijd is makkelijker te vergelijken en te citeren dan een product waarvan een systeem die gegevens uit de lopende tekst moet halen.

Organization-markup met sameAs-verwijzingen naar je profielen elders helpt zoekmachines je merk als één entiteit te herkennen. Dat is de basis voor merkvermeldingen in AI-antwoorden. Meer over die kant staat op onze pagina over GEO.

Zo valideren we structured data

Markup die één keer gevalideerd is, kan een week later stuk zijn door een thema-update of een nieuwe app. Validatie is daarom een proces, geen vinkje.

Bij de bouw

  • Rich Results Test van Google per template: product, variantproduct, categorie, homepage
  • Schema Markup Validator voor syntax en schema.org-conformiteit
  • Vergelijking van markup met de zichtbare prijs, voorraad en breadcrumbs
  • Controle op dubbele blokken uit thema, apps en extensies

Randgevallen

  • Uitverkochte producten met OutOfStock in plaats van verdwenen markup
  • Producten met speciale prijs, tier prices of klantgroepprijzen
  • Producten zonder reviews: geen lege AggregateRating
  • Meerdere valuta of landen: juiste priceCurrency per store view of market

Na livegang

  • Search Console-rapporten Product snippets en Merchant listings
  • Merchant Center-diagnose op afwijkingen tussen feed en pagina
  • Steekproef na elke thema- of app-update

Onze aanpak voor structured data

Van inventaris tot monitoring, in je eigen platform gebouwd.

  1. 1

    Inventaris per template

    We crawlen je shop en halen alle bestaande markup op. Welke types, uit welke bron, met welke fouten en waarschuwingen.

  2. 2

    Datamapping

    Per veld bepalen we waar de data vandaan komt: prijs, GTIN, merk, verzendregels, retourbeleid, reviews. Ontbrekende velden worden attributen of metafields.

  3. 3

    Eén bron van markup

    Dubbele blokken uit thema's en apps gaan eruit. De markup komt uit één module of één snippet die alle types bevat.

  4. 4

    Implementatie

    JSON-LD server-side in Magento, Shopify of Laravel, inclusief varianten, verzending, retouren, breadcrumbs en Organization.

  5. 5

    Validatie en randgevallen

    Testen per template en per randgeval, en vergelijken met de zichtbare pagina en de Merchant Center-feed.

  6. 6

    Monitoring

    Search Console en Merchant Center volgen op nieuwe fouten, en controleren na updates. Afwijkingen lossen we op in de code.

Wat je opgeleverd krijgt

  • Inventaris van alle bestaande markup per template, met bron en fouten
  • Datamapping per schema-veld naar je catalogusdata
  • JSON-LD voor Product, Offer, ProductGroup, verzending, retouren, reviews, BreadcrumbList en Organization
  • Opgeruimde dubbele markup uit thema's, apps en extensies
  • Testverslag per template en per randgeval
  • Afstemming tussen structured data en Merchant Center-feed
  • Ingerichte monitoring via Search Console-rapporten
  • Korte documentatie: welke velden waar vandaan komen en wat je zelf kunt beheren

Waarom Coding.nl voor structured data

In de code, niet in een plugin

We bouwen markup in je thema of module, gevoed door je eigen data. Geen extra extensie die bij de volgende update andere markup genereert.

Kennis van de catalogus

Varianten, klantgroepprijzen, multi-store en meerdere valuta: we weten hoe Magento en Shopify die data opslaan, en dus hoe je het correct beschrijft.

Eerlijk over het effect

Geen beloftes over rankings of gegarandeerde AI-vermeldingen. Wel correcte markup die in aanmerking komt voor rijke weergaven en betrouwbaar leesbaar is.

Vast team, korte lijnen

Dezelfde mensen bouwen en onderhouden je shop. Breekt een update de markup, dan zien en herstellen wij het.

Hyvä Silver PartnerHypernode Silver Partner

Veelgestelde vragen

Structured data is een gestandaardiseerde beschrijving van je pagina-inhoud in het schema.org-vocabulaire, meestal als JSON-LD in de HTML. Voor een webshop beschrijft het producten, prijzen, voorraad, verzending, retouren, reviews en je bedrijf, zodat zoekmachines die gegevens zonder gissen kunnen lezen.

Weten wat je structured data nu echt vertelt?

Vraag een SEO-audit aan. We halen alle markup uit je shop op, vergelijken die met je pagina's en Merchant Center, en laten zien welke fouten en ontbrekende velden je zichtbaarheid kosten.