GA4 e-commerce van begin tot eind via je servercontainer
Zodra GA4 via je servercontainer loopt, is e-commerce vooral werk in de webcontainer. Je site pusht elke winkelactie naar de dataLayer, één GA4-eventtag stuurt die naar https://k7q2x.example.com, en de server-side GA4-tag die je al hebt stuurt die door met alle producten erin. In deze les stel je de events, de tag en de trigger in, voorkom je dat de aankoop dubbel wordt geteld en controleer je de data onderweg.
Gemiddeld 13 min lezen
Op deze pagina
Wat je leert
- Weten welke aanbevolen e-commerce-events GA4 verwacht en welke parameters elk event nodig heeft.
- Schone e-commercedata naar de dataLayer pushen en eerst het vorige object leegmaken.
- Elk e-commerce-event versturen met één GA4-eventtag en één Custom Event-trigger.
-
purchaseéén keer per bestelling laten vuren en dat controleren in server-preview, DebugView en de Monetization-rapporten.
01 De aanbevolen e-commerce-events
GA4 vult zijn e-commercerapporten alleen met events die de aanbevolen namen hebben. Eigen namen zoals productView of checkout_step_2 worden opgeslagen, maar verschijnen nooit als productweergaven of omzet. Gebruik precies deze namen, in kleine letters:
-
view_item_listenselect_item: een bezoeker ziet een productlijst (categoriepagina, zoekresultaten) en klikt op een product daarin. -
view_item: een productdetailpagina. -
add_to_cart,remove_from_cartenview_cart: acties in de winkelwagen. -
begin_checkout,add_shipping_infoenadd_payment_info: de stappen van de checkout. -
purchase: de afgeronde bestelling. -
refund: een volledige of gedeeltelijke terugbetaling, meestal vanuit je backend verstuurd in plaats van vanuit de browser. -
add_to_wishlist,view_promotionenselect_promotion: verlanglijstjes en interne promoties zoals banners. Voeg ze aan de trigger toe als je ze gebruikt.
Elk event behalve een volledige refund bevat een items-array, en elk item heeft minstens item_id of item_name nodig. Heeft een event een value, dan heeft het ook currency nodig (bijvoorbeeld EUR), anders kan GA4 het niet als omzet verwerken. purchase en refund hebben ook een transaction_id nodig.
02 Push de data naar de dataLayer
Elke push heeft twee delen: eerst ecommerce: null, dan het event met een nieuw ecommerce-object. De dataLayer voegt objecten samen, dus zonder die reset kunnen de items van het vorige event in het volgende terechtkomen, bijvoorbeeld een product uit view_item dat in add_to_cart belandt.
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'view_item',
ecommerce: {
currency: 'EUR',
value: 129.90,
items: [{ item_id: 'SKU-1', item_name: 'Shoes', item_brand: 'Acme', item_category: 'Footwear', price: 129.90, quantity: 1 }]
}
});window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: 'EUR',
value: 129.90,
items: [{ item_id: 'SKU-1', item_name: 'Shoes', price: 129.90, quantity: 1 }]
}
});De purchase-push voegt transaction_id en de volledige orderwaarde toe. Render hem op de bedankpagina met de echte bestelgegevens uit je shop.
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'T-10293',
value: 129.90,
currency: 'EUR',
items: [{ item_id: 'SKU-1', item_name: 'Shoes', price: 129.90, quantity: 1 }]
}
});03 Eén GA4-eventtag voor alle e-commerce-events
In de webcontainer heb je geen tag per event nodig. Eén Google Analytics: GA4 Event-tag kan de eventnaam en de e-commercedata uit de dataLayer lezen en het event versturen dat gepusht is.
De trigger matcht elk e-commerce-event met één reguliere expressie:
^(view_item_list|select_item|view_item|add_to_cart|remove_from_cart|view_cart|begin_checkout|add_shipping_info|add_payment_info|purchase|refund)$- 1 Maak een trigger van het type Custom Event. Plak de reguliere expressie hierboven als eventnaam en vink Use regex matching aan.
- 2 Maak een tag van het type Google Analytics: GA4 Event. Vul je meet-ID
G-XXXXXXXXXXin (of kies je Google-tag) en zet Event Name op de ingebouwde variabele{{Event}}. - 3 Open onder More Settings het onderdeel Ecommerce, vink Send Ecommerce data aan en kies Data Layer als databron.
- 4 Koppel de Custom Event-trigger, geef de tag een naam (bijvoorbeeld
GA4 - ecommerce) en sla op.
De tag verstuurt alles via dezelfde Google-tag die al server_container_url op https://k7q2x.example.com heeft staan uit les 3, dus elk e-commerce-event bereikt eerst je servercontainer.
04 Wat er verandert in de servercontainer
Niets. De GA4-client pakt de e-commercehits op zoals elk ander GA4-event, en de items reizen mee in de hit. De GA4-tag uit les 4, met als trigger Client Name equals GA4, stuurt ze door naar Google Analytics samen met value, currency en transaction_id.
De servercontainer blijft de juiste plek voor extra bestemmingen. Een Meta Conversions API-tag kan hetzelfde purchase-event lezen, zodat de bestelling met dezelfde data naar Meta gaat (les 7 laat zien hoe je een event_id deelt voor deduplicatie). De Google Ads-conversietag in de volgende les leest het ook.
05 Tel elke aankoop één keer
Google Analytics dedupliceert purchase-events met dezelfde transaction_id voor data uit webstreams. Zie dat als vangnet, niet als oplossing. De gebruikelijke bron van dubbele aankopen is de bedankpagina: een bezoeker ververst hem, komt terug via de browsergeschiedenis of opent de bevestigingslink uit de e-mail, en de purchase-push draait opnieuw.
- Render de purchase-push alleen bij de eerste weergave van de bedankpagina. Houd een vlag bij op de bestelling in je shop (bijvoorbeeld
tracked_at) en sla de push over als die gezet is. - Stuur altijd een echte, unieke
transaction_id. Nooit een lege string: GA4 behandelt alle aankopen mettransaction_idals lege string als één transactie. - Zet geen persoonsgegevens zoals het e-mailadres in
transaction_id. Gebruik het ordernummer. - Stuur refunds met de
transaction_idvan de oorspronkelijke bestelling, zodat GA4 ze kan koppelen.
06 Controleer de data van begin tot eind
Test op drie plekken, van de server naar buiten. Open Preview in beide containers en loop door de shop: bekijk een product, leg het in de winkelwagen, reken af en plaats een testbestelling.
- Web-preview: de tag
GA4 - ecommercevuurt bij elk e-commerce-event en niet bij andere. - Server-preview: het verzoek gaat naar
k7q2x.example.com, en in de eventdata zie jeitemsmetitem_id,priceenquantity, plusvalueencurrency. - Server-preview: de GA4-tag staat onder Tags Fired voor
purchase. - GA4 DebugView: de events komen binnen met hun parameters en items.
- Het rapport Ecommerce purchases in GA4 (onder Monetization): aankopen en omzet verschijnen. Dit rapport kan 24 tot 48 uur nodig hebben om zich te vullen, dus beoordeel het niet op dezelfde dag.
Veelgestelde vragen
Heb ik een aparte servertag nodig voor e-commerce-events?
Nee. De GA4-tag in de servercontainer stuurt elk event door dat de GA4-client oppakt, inclusief de items. E-commerce vraagt alleen werk in de dataLayer en de webcontainer.
Waarom zie ik aankopen maar geen omzet in GA4?
Meestal ontbreekt currency, of wordt value als string verstuurd. Controleer de eventdata in server-preview: value moet een getal zijn en currency een code van drie letters zoals EUR.
Verwijdert GA4 dubbele aankopen zelf?
Voor webstreams dedupliceert het purchase-events met dezelfde transaction_id. Het loont toch om de aankoop maar één keer te laten vuren, want andere tools die hetzelfde event lezen, zoals advertentieplatforms, kunnen een herhaling als tweede conversie tellen.
Klaar om het in de praktijk te brengen?
Rol in een paar minuten een GTM-servercontainer uit op je eigen domein. Voor het Gratis-abonnement heb je geen creditcard nodig.
Gratis account aanmaken