Naar hoofdinhoud

Sitemap voor je webshop: XML-sitemaps voor grote catalogi

Een XML-sitemap voor je webshop: limiet van 50.000 URL's, sitemapindex, lastmod, varianten, uitverkochte producten, hreflang en wat je platform standaard doet.

Sitemap voor je webshop: XML-sitemaps voor grote catalogi

Een sitemap voor je webshop is een XML-bestand met de product-, categorie- en contentpagina's die zoekmachines moeten vinden: een canonieke URL per pagina, met een kloppende datum van laatste wijziging. Een sitemapbestand bevat maximaal 50.000 URL's of 50 MB ongecomprimeerd. Een grote catalogus verdeelt de URL's dus over meerdere bestanden en zet die in een sitemapindex, die je een keer indient in Google Search Console.

Dat is het korte antwoord. Het echte werk zit in de keuze wat erin komt: varianten, filterpagina's, uitverkochte producten, producten die uit het assortiment gaan en elke taalversie. Zit je daar fout, dan meldt de sitemap duizenden pagina's die je niet geïndexeerd wilt hebben, terwijl producten die je wel wilt laten zien ontbreken. Deze gids loopt elke keuze door, laat zien wat Shopify, WooCommerce en Magento standaard maken, en hoe je de sitemap naast je catalogus legt.

Welke webshop-URL's in een XML-sitemap horen

Een sitemap is een lijst van de URL's die je in de zoekresultaten wilt zien. Er horen dus alleen pagina's in die 200 teruggeven, indexeerbaar zijn en naar zichzelf canoniek verwijzen. Deze gids gaat over de XML-sitemap voor zoekmachines; een HTML-sitemap als pagina voor bezoekers is iets anders en optioneel. Voor een webshop betekent dat:

  • Erin: productpagina's (een URL per product, of per variant als elke variant een eigen canonieke pagina heeft), categorie- en collectiepagina's, merkpagina's, koopgidsen, blogs en statische pagina's waar mensen op zoeken, zoals verzending en retourneren.
  • Eruit: filter- en sorteer-URL's (?kleur=rood&sort=prijs), interne zoekresultaten, winkelwagen, checkout en accountpagina's, URL's die doorverwijzen, pagina's met een noindex-tag en elke URL waarvan de canonical ergens anders heen wijst.
  • Controleren: gepagineerde categoriepagina's. Neem ze alleen op als ze indexeerbaar zijn en naar zichzelf canoniek verwijzen; veel webshops laten ze weg en vertrouwen op interne links.

Google vraagt om volledige, absolute URL's in sitemaps (Google Search Central) en om dezelfde URL in interne links, sitemaps en canonical-tags, volgens de e-commerce-URL-richtlijnen van Google. Een sitemap met http://-URL's, of met een slash aan het eind die de canonical-tag niet heeft, geeft voor elk product een tegenstrijdig signaal.

Limieten van een sitemap voor grote catalogi

De limieten gelden per bestand, niet per site. Elk formaat is begrensd op 50.000 URL's of 50 MB ongecomprimeerd per sitemap, en het bestand moet UTF-8 gecodeerd zijn, volgens Google Search Central. Gzip-compressie scheelt bandbreedte, maar de ongecomprimeerde grootte telt. De platforms hanteren hun eigen standaardwaarden onder die grenzen.

Sitemaplimieten en standaardwaarden per platform

URL's per sitemapbestand50.000Google
Grootte per sitemapbestand50 MB ongecomprimeerdGoogle
Afbeeldingen per pagina-URL1.000Google
WordPress core: URL's per sitemap2.000 (aan te passen)WordPress
Magento: URL's per bestand (standaard)50.000Adobe
Magento: bestandsgrootte (standaard)10.485.760 bytesAdobe
6 van 6 rijen
Het protocol stopt bij 50.000 URL's per bestand, maar WordPress en Magento splitsen standaard eerder.

Een catalogus van 120.000 producten opsplitsen per paginatype

Splits eerst per paginatype en daarna per reeks. Aparte bestanden voor producten, categorieën, merken en content maken problemen zichtbaar: meldt Search Console dat de helft van de URL's in een productbestand niet geïndexeerd is, dan weet je waar je moet kijken. Een illustratieve webshop met 120.000 product-URL's heeft minstens drie productbestanden nodig:

Sitemapindex voor een webshop met 120.000 producten

Diagram laden
Illustratief: een index, product-URL's verdeeld over bestanden onder de grens van 50.000, en aparte bestanden per paginatype.

Houd de verdeling stabiel. Schuift een product bij elke nieuwe SKU van bestand 2 naar bestand 3, dan zeggen de rapporten per bestand in Search Console niets meer. Splits op een vaste sleutel, zoals een reeks product-ID's of de hoofdcategorie, zodat elk bestand door de tijd vergelijkbaar blijft.

Afbeeldingen in de sitemap: twee tags over

Productfoto's kun je opnemen in het url-blok van het product zelf. Elke url mag tot 1.000 afbeeldingen bevatten, en alleen image:image en image:loc zijn over: caption, title, geo_location en license zijn vervallen, volgens de documentatie over image sitemaps van Google. Afbeeldingen op een CDN-domein zijn prima als je dat domein in Search Console verifieert en het niet blokkeert in robots.txt.

Sommige platforms schrijven nog steeds image:title in het bestand. Dat kan geen kwaad, maar het doet ook niets, dus de alt-tekst op de pagina blijft de plek voor beschrijvingen van afbeeldingen. Zet je platform alleen de hoofdfoto in de sitemap, dan is dat meestal genoeg; de overige foto's vindt Google via de productpagina zelf.

lastmod: de enige optionele tag die Google leest

Google negeert priority en changefreq, en gebruikt lastmod alleen als die consequent en aantoonbaar klopt, volgens Google Search Central. De waarde hoort de laatste belangrijke wijziging van de pagina weer te geven. Voor een productpagina tellen een nieuwe prijs, een andere voorraadstatus, herschreven content of nieuwe foto's. Een aangepaste footer of een template-update die elke pagina raakt, telt niet.

De meest gemaakte fout: een nachtelijke taak die elk product opnieuw opslaat en overal de datum van vandaag op zet. Na een paar weken zegt lastmod niets meer en vertrouwt Google de waarde niet. Haalt je platform lastmod uit een algemeen updated_at-veld, kijk dan wat er naar dat veld schrijft: een voorraadsync die elk uur elke rij aanraakt, heeft hetzelfde effect.

Varianten, canonieke URL's en parameters

Google vraagt dat elke variant een eigen URL heeft, als padsegment (/t-shirt/groen) of als parameter (/t-shirt?kleur=groen). Is de parameter optioneel, dan is de URL zonder parameter de canonical; heeft elke variant een eigen URL, dan staat de canonieke product-URL op alle variantpagina's, volgens de e-commerce-URL-richtlijnen. De sitemap bevat dan de canonical, niet elke variant-URL.

Shopify-thema's linken naar een losse variant met een parameter ?variant= achter de product-URL, en de sitemap linkt naar producten, dus de product-URL zonder parameter is de canonieke. Webshops die per kleur een aparte pagina bouwen, met eigen content en een eigen canonical, nemen elk van die pagina's op. Wat je nooit wilt zien is allebei: een hoofd-URL plus een dozijn variant-URL's die met hun canonical allemaal naar die hoofd-URL wijzen.

Uitverkochte, vervallen en seizoensproducten

De voorraadstatus verandert dagelijks, en een sitemap die producten mee toevoegt en verwijdert, schept meer verwarring dan duidelijkheid. Beslis per situatie, op basis van wat de pagina zelf teruggeeft:

Uitverkochte en vervallen producten in de sitemap

Tijdelijk uitverkocht200, met beschikbaarheid zichtbaarJaVoorraadstatus, verwachte datum, lastmod
Een variant uitverkocht200 voor het productJa (de product-URL)Beschikbaarheid van de variant op de pagina
Seizoensproduct, komt terug200, gemarkeerd als niet leverbaarJaVerwachte datum als je die weet
Vervallen, met directe opvolger301 naar de opvolgerNee, neem de opvolger opInterne links naar de nieuwe URL
Vervallen, zonder vervanger404 of 410NeeInterne links weghalen
Alleen pagina's die 200 teruggeven en indexeerbaar blijven, horen in de sitemap; de keuze volgt de pagina, niet de voorraad.

Een vervallen product doorsturen naar de categorie of de homepage is verleidelijk, maar wie op een specifiek model zocht, landt dan op een pagina waar het niet staat. Stuur alleen door als er een echte opvolger is; laat de pagina anders 404 of 410 geven en haal hem in dezelfde release uit de sitemap. Een product dat je voor de lancering als pre-order verkoopt, is het omgekeerde geval: de pagina staat live en geeft 200, dus hij hoort vanaf de eerste dag in het bestand.

Filterpagina's van faceted navigation buiten de sitemap houden

Filtercombinaties lopen snel op: 20 kleuren, 10 maten en 5 merken op een categorie geven al 1.000 filterpagina's, nog voor het sorteren. Geen daarvan hoort in de sitemap, tenzij je bewust een filter tot landingspagina hebt gemaakt, zoals /schoenen/rode-hardloopschoenen, met eigen content, een canonical naar zichzelf en interne links. Die pagina's gaan in het categoriebestand; de rest blijft eruit. Onze blog over faceted navigation en SEO laat zien hoe je crawlers er niet hun tijd aan laat verspillen.

hreflang in de sitemap voor meertalige webshops

Een webshop met meerdere talen of landversies kan die in de sitemap aangeven in plaats van in de head van de pagina. Elk url-blok noemt dan elke taalversie als xhtml:link, inclusief zichzelf, en elke taalversie heeft een eigen url-blok met dezelfde set links. Die links maken elk blok groter, dus met vijf talen zit een productbestand veel eerder aan de grens van 50 MB: splits eerder.

De sitemapmethode past bij webshops met veel talen (denk aan Nederlands, Frans en Duits voor de Benelux en Duitsland), omdat de head van de pagina klein blijft en alle alternatieven in een bestand staan dat je kunt controleren. Het risico is volledigheid: een ontbrekende terugverwijzing in een taal breekt het paar. De hreflang-generator maakt de tags voor een set URL's, en de gids over meertalige SEO behandelt de rest van de inrichting.

Wat Shopify, WooCommerce en Magento standaard maken

  • Shopify maakt sitemap.xml automatisch aan. Die linkt naar alle producten met hun hoofdfoto, pagina's, collecties en blogs, wordt bijgewerkt als je ze toevoegt, en bij internationale domeinen krijgt elk domein een eigen sitemap met de talen erbij, volgens het Shopify Help Center. Het bestand linkt naar aparte sitemaps voor producten, collecties, pagina's en blogs, en Shopify werkt die zelf bij als je een product, collectie, afbeelding of blog toevoegt.
  • WooCommerce leunt op WordPress. Sinds WordPress 5.5 publiceert de core een sitemapindex op wp-sitemap.xml met de publieke berichttypen, waaronder producten, met standaard tot 2.000 URL's per sitemap, volgens WordPress. SEO-plugins zoals Yoast SEO vervangen die meestal door hun eigen sitemap. Draai een sitemap, niet allebei, en dien de sitemap in die live staat.
  • Magento (Adobe Commerce) maakt sitemaps aan onder Marketing > SEO & Search > Site Map en stelt ze in onder Stores > Configuration > Catalog > XML Sitemap: frequentie en prioriteit per paginatype, productfoto's (None, Base Only of All), geplande generatie en een optie om de sitemap in robots.txt te zetten, volgens Adobe. Het genereren loopt via een planning, dus een webshop met een kapotte cron serveert een oude sitemap. Onze checklist voor Magento SEO-instellingen behandelt de instellingen eromheen.

De sitemap indienen en het rapport lezen

Dien de index-URL in via Search Console onder Indexering en dan Sitemaps, en zet een regel Sitemap: met de volledige URL in robots.txt, zodat andere crawlers hem ook vinden. Een sitemap dekt alleen URL's onder zijn eigen map, tenzij je hem via Search Console indient; nog een reden om hem in de root te zetten, volgens Google Search Central.

Het rapport laat per bestand zien of Google het kon lezen en hoeveel URL's erin stonden. Het rapport over pagina-indexering laat daarna zien welke ingediende URL's geïndexeerd zijn en waarom de rest niet. Lees ze samen: een productbestand met duizenden URL's op "Gecrawld, momenteel niet geïndexeerd" wijst meestal op dunne of dubbele productcontent, niet op de sitemap. De gids over technische SEO voor webshops loopt de andere indexeringscontroles door.

De sitemap naast je productcatalogus leggen

Search Console vertelt wat Google deed met de URL's die je indiende. Het vertelt niet welke producten om te beginnen in de sitemap ontbreken, omdat het je catalogus niet kent. Voor die vergelijking heb je beide lijsten naast elkaar nodig.

WISEPIM maakt of host de sitemap van je webshop niet; dat doet je webshopplatform. De analyse sitemapdekking (Sitemap Coverage) leest de sitemaps die je in de SEO-instellingen toevoegt (of de Sitemap-regels in robots.txt als je er geen hebt ingesteld), volgt indexbestanden naar hun onderliggende sitemaps, ook als die gezipt zijn, en koppelt elke URL aan een product of categorie in je catalogus. Andere URL's krijgen het label merk, blog, statisch of overig. Per URL zie je het type, het gekoppelde product, lastmod en priority zoals de sitemap ze vermeldt, en per sitemapbestand of het laatste ophalen lukte.

Missing from Sitemap vergelijkt de verwachte webshop-URL van elk product met de gesynchroniseerde sitemap en toont per platform de producten die erin ontbreken.

De omgekeerde controle, Missing from Sitemap (ontbreekt in sitemap), begint bij de catalogus: voor elk product dat in een gekoppelde webshop staat, bouwt WISEPIM de verwachte URL en toont de producten waarvan die URL niet in de gesynchroniseerde sitemap staat, met een filter per platform en een CSV-export. Geen van beide schermen zegt of Google een pagina heeft geïndexeerd; dat antwoord blijft in Search Console. Samen vangen ze wat een crawler nooit meldt: een product dat live in de webshop staat maar in het bestand ontbreekt, en een sitemap vol URL's die bij niets uit je assortiment horen.

Diego Nijboer

CTO and Co-Founder at WISEPIM, building AI-powered solutions that transform product data management for e-commerce businesses. Over 10 years of experience solving complex technical challenges in e-commerce and PIM systems.

Veelgestelde vragen

Nog vragen?

Kan je het antwoord niet vinden? Neem contact op met ons team.

Contact opnemen

Een sitemap voor een webshop is een XML-bestand met de product-, categorie-, merk- en contentpagina's die je door zoekmachines gevonden wilt hebben. Elke regel is een canonieke, indexeerbare URL, eventueel met een lastmod-datum en afbeeldingen. Grote webshops splitsen hem in bestanden van maximaal 50.000 URL's en zetten die in een sitemapindex.

Ja, als het product terugkomt. Een tijdelijk uitverkochte productpagina geeft nog steeds 200 en blijft indexeerbaar, dus hij blijft in de sitemap, met de beschikbaarheid bijgewerkt op de pagina. Haal een product pas uit de sitemap als de pagina zelf verdwijnt: een 301 naar een opvolger, of een 404 of 410 bij een vervallen artikel.

Nee. Google negeert de waarden priority en changefreq in een sitemap. Lastmod gebruikt Google wel, maar alleen als de datums consequent kloppen. Priority 1.0 op elk product zetten doet niets, terwijl een lastmod die alleen verandert als een productpagina echt verandert Google helpt kiezen wat opnieuw gecrawld moet worden.

Shopify maakt hem automatisch aan op je domein gevolgd door /sitemap.xml, bijvoorbeeld jouwwinkel.nl/sitemap.xml. Het is een index met aparte sitemaps voor producten, collecties, pagina's en blogs. Shopify werkt hem bij als je producten, collecties, pagina's of blogs toevoegt. Dien de index-URL in bij Google Search Console.

Alleen als elke variant een eigen canonieke pagina heeft. Delen varianten een productpagina en kies je ze met een parameter, neem dan alleen de canonieke product-URL op. Heeft elke kleur een eigen pagina met eigen content en een canonical naar zichzelf, neem dan elk van die pagina's op.

Verder ontdekken

Zorgvuldig gekozen vervolgstappen om dieper te gaan.

Betere productdata, betere resultaten.Verkoop meer producten.

4,7