Customer Impact

Data & Tracking

Data layer: wat het is en hoe je hem opzet voor GTM en GA4

Kopieer voor AI

Een data layer is een JavaScript-object op je website waarin je gestructureerde informatie klaarzet voor Google Tag Manager en de Google-tag. In plaats van dat GTM moet raden wat er op een pagina gebeurt door naar knoppen en teksten te kijken, vertelt je website het zelf: “er is een offerteaanvraag verstuurd, voor dienst X, via formulier Y”. Dat maakt je tracking betrouwbaarder, beter te testen en minder gevoelig voor elke aanpassing aan je site. In dit artikel lees je hoe een data layer werkt, hoe je hem opzet en welke fouten je vermijdt.

Wat is een data layer?

Google omschrijft dit object in zijn documentatie voor Tag Manager als “een object dat Google Tag Manager en gtag.js gebruiken om informatie aan tags door te geven”. Je website zet gegevens en events in dat object, GTM leest ze uit via variabelen en gebruikt ze in triggers en tags.

Concreet is het een lijst (array) met de naam dataLayer. Elke keer dat er iets gebeurt, voeg je er een object aan toe met dataLayer.push():

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  'event': 'lead_submit',
  'form_id': 'offerte',
  'lead_type': 'offerteaanvraag',
  'service': 'tracking-audit'
});

De sleutel event heeft een speciale rol: GTM gebruikt die om tags af te vuren. De andere sleutels worden variabelen die je in GA4, Google Ads of Meta kan meesturen.

ARCHITECTUUR De data layer als contract 01 Website CMS, formulier, shop 02 dataLayer event + parameters 03 Tag Manager variabelen, triggers 04 Platformen GA4, Ads, Meta De website zegt wat er gebeurde, Tag Manager beslist waar het naartoe gaat
De data layer zit tussen je website en je tags: de website zegt wat er gebeurde, GTM beslist waar het naartoe gaat.

Waarom een data layer gebruiken?

Zonder zo’n laag bouw je tracking op wat GTM op de pagina kan zien: een klik op een knop met een bepaalde tekst, een CSS-klasse, een bedankpagina-URL. Dat werkt tot iemand de knoptekst verandert, het formulier vervangt door een nieuwe plugin of de bedankpagina weghaalt. Dan stopt je meting, vaak zonder dat iemand het merkt.

Tracking op de pagina (DOM)Tracking via de data layer
Bron van de dataKnoppen, teksten, CSS-klassen, URL’sExpliciete pushes vanuit de website
Gevoelig voor redesignHoogLaag, zolang de push blijft
Extra informatieEnkel wat zichtbaar isOok interne waarden: dienst, leadtype, orderwaarde
Test- en documenteerbaarMoeilijkJa, het is een vast contract
Werk voor developersGeenEenmalig, plus onderhoud

Bij Suivo legde een formulierupdate de leadmeting stil zonder foutmelding. De oplossing was een robuuste formulier-listener en een schone laag met events, zodat een volgende update de meting niet opnieuw breekt. Bij Kaizo kreeg de geboekte demo een eigen event in de data layer, zodat GA4, Google Ads en Meta exact dezelfde conversie zien.

Een data layer opzetten in 6 stappen

1. Schrijf een meetplan

Bepaal eerst welke acties je wil meten en welke informatie daarbij hoort. Voor een B2B-site is dat vaak: een offerteaanvraag, een demo-boeking, een contactformulier, een download, een klik op een telefoonnummer. Per event leg je de naam en de parameters vast, bijvoorbeeld lead_submit met form_id, lead_type en service. Gebruik waar het kan de aanbevolen events van GA4, zodat je rapporten en Google Ads er meteen mee overweg kunnen.

2. Maak een specificatie voor je developer

Zet per event in een document wanneer de push moet gebeuren (pas na een geslaagde verzending, niet bij de klik op de knop), welke sleutels erin zitten en welke waarden toegelaten zijn. Werk je met een CMS of CRM-formulieren, zoals WordPress met Gravity Forms, HubSpot of formulieren gekoppeld aan Teamleader of Odoo, noteer dan ook waar de push technisch vandaan komt.

3. Declareer de data layer vóór de GTM-snippet

Google raadt aan om het object te declareren voordat Tag Manager laadt, met window.dataLayer = window.dataLayer || [];. Zo overschrijf je nooit data die al klaarstond. Schrijf dus nooit dataLayer = [...] lager in je code: dan wis je alles wat er voordien in zat.

4. Laat de website de events pushen

De developer voegt de pushes toe op de afgesproken momenten. Voor e-commerce volg je de structuur van GA4 e-commerce. Google maakt daarin eerst het vorige e-commerce-object leeg, zodat oude productdata niet meelift met het volgende event:

window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  'event': 'purchase',
  'ecommerce': {
    'transaction_id': 'T_12345',
    'value': 72.05,
    'currency': 'EUR',
    'items': [{ 'item_id': 'SKU_1', 'item_name': 'Product', 'price': 72.05, 'quantity': 1 }]
  }
});

Voor een aankoop zijn transaction_id, value, currency en items de velden die er altijd in horen. Een ontbrekende currency is een klassieker: de omzet komt dan niet of verkeerd binnen.

5. Bouw variabelen en triggers in Google Tag Manager

Maak in GTM per sleutel een variabele van het type “Data Layer Variable” (bijvoorbeeld form_id), en per event een trigger van het type “Custom Event” met exact dezelfde naam als in de push. Daarna koppel je die aan je tags: een GA4-event, een Google Ads-conversie, een Meta-event. Meer over de container zelf lees je in ons artikel over Google Tag Manager.

6. Test en documenteer

Open de previewmodus en controleer in Google Tag Assistant op het tabblad Data Layer of de push op het juiste moment en met de juiste waarden binnenkomt. Snel kijken kan ook in de console van je browser: typ dataLayer en je ziet de volledige lijst. In onze trajecten leggen we het resultaat vast in een gedeeld document, zodat wie later aan de site werkt weet welke pushes niet weg mogen.

De belangrijkste regels voor een propere data layer

  • Hoofdlettergevoelig. Het object heet dataLayer, niet datalayer. Ook je sleutels en eventnamen moeten exact overeenkomen met wat GTM verwacht.
  • Gebruik aanhalingstekens rond sleutels. Google raadt {'variable_name': 'value'} aan.
  • Per pagina. Volgens Google blijft zo’n variabele enkel bestaan zolang de bezoeker op de huidige pagina blijft. Heb je een waarde op elke pagina nodig, push ze dan opnieuw bij elke paginalading.
  • Eén data layer per pagina. Je kan het object hernoemen, maar Google ondersteunt maar één dataLayer-object per pagina.
  • Vaste namen. Kies één naamconventie (bijvoorbeeld kleine letters met underscores) en houd je eraan in alle events.

Geen persoonsgegevens in je data layer naar GA4

Het is verleidelijk om het e-mailadres of telefoonnummer van een lead mee te pushen. Voor GA4 mag dat niet: Googles beleid rond persoonsgegevens stelt dat je geen gegevens naar Google stuurt die het als persoonlijk identificeerbaar kan herkennen, waaronder e-mailadressen en telefoonnummers. Wil je die gegevens gebruiken voor enhanced conversions in Google Ads, dan gebeurt dat via de daarvoor bedoelde, gehashte route, en alleen met toestemming. Houd ook rekening met consent: zonder toestemming mogen je tags de data niet met cookies doorsturen, ook al staat ze klaar in het object. Meer daarover in consent mode v2 voor Google Ads.

Veelgemaakte fouten met de data layer

  • De push gebeurt op de klik, niet na de verzending. Elk mislukt of half ingevuld formulier telt dan als lead.
  • Het object wordt na de GTM-snippet overschreven. Een dataLayer = [] in een thema of plugin wist alles wat eerder klaarstond.
  • Andere namen in de push dan in GTM. leadSubmit in de code, lead_submit in de trigger: de tag vuurt nooit.
  • Oude e-commercedata die blijft hangen. Zonder ecommerce: null kan een purchase producten uit een vorige stap meenemen.
  • Single-page apps zonder virtuele page views. Een site in React of Vue laadt geen nieuwe pagina’s, dus je moet zelf een event pushen bij elke routewissel.

Gelijkaardige problemen aan de GA4-kant lees je in veelgemaakte fouten in Google Analytics tracking.

Veelgestelde vragen

Wat is het verschil tussen een data layer en Google Tag Manager?

De data layer is de informatie die je website klaarzet. Google Tag Manager is de tool die die informatie leest en beslist welke tags afvuren en wat ze doorsturen. Het object werkt ook zonder GTM met de Google-tag (gtag.js), maar haalt pas zijn volle nut met GTM.

Heb ik een developer nodig voor een data layer?

Voor de pushes vanuit je website meestal wel, of een plugin die ze voor je CMS of webshop genereert. De variabelen, triggers en tags in GTM kan een marketeer of tracking specialist zelf opzetten.

Hoe bekijk ik de data layer in Chrome?

Open de ontwikkelaarstools, ga naar de console en typ dataLayer. Je ziet dan alle pushes op die pagina. Overzichtelijker is de previewmodus van GTM, waar het tabblad Data Layer per moment toont wat er binnenkwam.

Wat is een datalayer.push?

dataLayer.push() is de functie waarmee je een nieuw object aan de data layer toevoegt. Bevat dat object een sleutel event, dan kan GTM daar een trigger op laten afvuren.

Heeft de data layer iets te maken met een datawarehouse?

Nee. In data engineering spreekt men ook over “data layers” (bijvoorbeeld bronze, silver en gold in een datawarehouse). Dat is een ander begrip. In marketingtracking bedoelen we het dataLayer-object op je website.

Een data layer laten opzetten?

Een goed opgezette dataLayer is het fundament onder je GA4, Google Ads, Meta en server-side tagging. Onze tracking specialist schrijft het meetplan en de specificatie voor je developer, bouwt de container en test elk event. Wil je eerst weten hoe je huidige opzet ervoor staat, begin dan met een tracking audit. Meer over het geheel lees je in conversie tracking, of neem contact op.

Gratis website-scan

Geef je website in en krijg binnen enkele minuten een automatische scan met concrete technische en SEO-verbeterpunten. Geen verkooppraatje.

Waar mogen we je rapport naartoe sturen?

Je gegevens gebruiken we alleen voor je scan. Geen spam, uitschrijven kan altijd.