Webhook purchase events instellen voor GA4 - Measurement Protocol
Mis je aankopen in Google Analytics 4 omdat bezoekers de bedankpagina niet bereiken? Met AdPage backend-webhooks zorg je ervoor dat elke purchase vanuit je webshop correct in GA4 terechtkomt — ongeacht het gedrag van de bezoeker na betaling. Let's get started 🚀
Waarom webhook purchase tracking?
Bij een standaard Server-Side Tagging setup wordt een aankoop pas gemeten wanneer de bezoeker op de bedankpagina belandt en het dataLayer event wordt gepusht. In de praktijk gaat dit regelmatig mis bij drie typen bezoekers:
Vroegtijdige afhakers — Bezoekers die na betaling in een betaalapp (iDEAL, Klarna, PayPal) niet terugkeren naar de bedankpagina. Ze sluiten de betaalapp af en de conversie wordt nooit geregistreerd.
Ongeduldige kopers — Bezoekers die de bedankpagina verlaten voordat deze volledig is geladen en alle tracking scripts zijn uitgevoerd. Ze hebben al een bevestigingsmail ontvangen en wachten niet langer.
Browser-wisselaars — Bezoekers die hun klantreis doorlopen in een in-app browser (Facebook, Instagram, ChatGPT, Perplexity) maar na betaling worden doorgestuurd naar Safari, Chrome of een andere standaardbrowser. GA4 ziet dit als een compleet nieuwe sessie, waardoor alle attributie verloren gaat.
Met backend-webhooks wordt het purchase event direct vanuit de backend van je CMS (Shopify, WooCommerce, Magento) naar je server container gestuurd op het moment dat een order wordt aangemaakt. Dit gebeurt onafhankelijk van het browsergedrag van de bezoeker.
Wat heb je nodig?
Voordat je begint, controleer of je het volgende hebt:
Een werkende AdPage Server-Side Tagging setup
Een werkende webhook volgens onze documentatie
Toegang tot je GTM server container
Je GA4 Measurement ID (format:
G-XXXXXXXXXX)Een Measurement Protocol API Secret (aanmaken in GA4 > Beheerder > Gegevensstreams > je stream > Measurement Protocol API-secrets)
De twee template-bestanden:
AdPage Webhook Client.tplAdPage - GA4 Measurement Protocol Tag v2.0.tpl
Download GA4 measurement protocol Tag v2.0.tpl
Download AdPage Webhook Client.tpl
Stap 1: AdPage Webhook Client uploaden
De Webhook Client is verantwoordelijk voor het ontvangen en verwerken van inkomende webhook payloads op je server container. Zonder deze client worden webhook-verzoeken niet herkend door GTM.
Open je GTM server container
Ga naar Templates in het linkermenu
Klik bij Client Templates op New
Klik rechtsboven op de drie puntjes (⋮) en kies Import
Selecteer het bestand
AdPage Webhook Client.tplKlik op Save
Maak nu een nieuwe Client aan op basis van deze template:
Ga naar Clients in het linkermenu
Klik op New
Kies als Client Configuration de AdPage Webhook Client
Geef de client een herkenbare naam, bijvoorbeeld
AdPage - Webhook Client
De client claimt standaard het pad /order_created. Als je webhooks via een ander pad binnenkomen, kun je extra paden toevoegen onder Accepted Path Settings.
Klik op Save
Stap 2: GA4 Client instellen op Server Managed Cookies
Om webhook purchase events correct te koppelen aan de browsersessie van een bezoeker, moet de client_id die GA4 gebruikt overal dezelfde zijn: zowel tijdens het browsen als in de webhook. Standaard beheert de browser de _ga cookie (JavaScript Managed), maar bij webhooks is er geen browser. De oplossing is om over te schakelen naar Server Managed cookies. Hierbij plaatst de server container een eigen first-party cookie (standaard FPID genaamd) die als bron dient voor de client_id. De Measurement Protocol Tag kan deze cookie vervolgens uit het marketing-object van de webhook lezen en gebruiken om het purchase event aan de juiste GA4-sessie te koppelen.
Cookie-naam wijzigen
Bij het overschakelen naar Server Managed cookies is het belangrijk om de cookienaam te wijzigen van de standaard FPID naar een nieuwe naam, bijvoorbeeld FPID_v2 of een naam naar keuze. Dit zorgt ervoor dat de oude JavaScript Managed cookies niet worden hergebruikt, en dat alle bezoekers een verse server-managed cookie ontvangen die consistent wordt aangemaakt en beheerd door je server container.
⚠️ Let op: Als je de cookienaam niet wijzigt, kan het voorkomen dat oude
FPID-cookies met een afwijkend formaat worden ingelezen door de server, wat leidt tot mismatches tussen browser- en webhook-sessies. Een nieuwe cookienaam forceert een schone start.
Migrate from JavaScript Managed Client ID
Zet de optie Migrate from JavaScript Managed Client ID aan. Dit zorgt ervoor dat bezoekers die al een bestaande JavaScript-managed _ga cookie hebben, hun huidige client_id behouden bij de overstap naar Server Managed. Zonder deze optie krijgen terugkerende bezoekers bij hun eerste bezoek na de wijziging een compleet nieuwe client_id, waardoor GA4 ze als nieuwe gebruikers ziet en de historische sessiedata niet meer gekoppeld kan worden.
Stappen
Open je GTM server container
Ga naar Clients in het linkermenu
Open je bestaande GA4 client
Scroll naar beneden naar More Settings
Zet Cookies and Client Identification op
Server ManagedWijzig bij Server Cookie Settings het veld Name van
FPIDnaar een nieuwe naam, bijvoorbeeldFPID_v2Zet het vinkje aan bij Migrate from JavaScript Managed Client ID
Klik op Save
💡 Tip: De overige cookie-instellingen (Domain: auto, Path: /, Cookie Expiration: 63072000) kun je op de standaardwaarden laten staan. De expiratie van 63072000 seconden komt overeen met 2 jaar.
Stap 3: AdPage — GA4 Measurement Protocol Tag uploaden
De Measurement Protocol Tag stuurt de verwerkte webhook data door naar GA4 via de Measurement Protocol API. Deze tag heeft ingebouwde cookie-extractie, sessie-stitching en ecommerce-verwerking.
Ga naar Templates in het linkermenu van je GTM server container
Klik bij Tag Templates op New
Klik rechtsboven op de drie puntjes (⋮) en kies Import
Selecteer het bestand
AdPage - GA4 Measurement Protocol Tag v2.0.tplKlik op Save
Stap 4: GA4 Measurement Protocol Tag configureren
Maak nu een nieuwe Tag aan op basis van de zojuist geüploade template:
Ga naar Tags in het linkermenu
Klik op New
Kies als Tag Configuration de AdPage - GA4 Measurement Protocol Tag v2.0
Geef de tag een herkenbare naam, bijvoorbeeld
AdPage - GA4 Purchase (Webhook)
Verplichte instellingen
Instelling | Waarde | Toelichting |
|---|---|---|
Measurement ID |
| Je GA4 Measurement ID uit je datastream |
API Secret | Je API secret | Aanmaken via GA4 > Beheerder > Gegevensstreams > Measurement Protocol API-secrets |
Data Collection Region |
| Kies |
GA4 Cookie Extraction
De tag extraheert automatisch de client_id, session_id en session_count uit de GA4-cookies die aanwezig zijn in het marketing-object van de webhook. Dit ondersteunt zowel GS1- als GS2-cookieformaten.
Instelling | Standaard | Toelichting |
|---|---|---|
Override Client ID | Uit | Zet aan als je platform geen |
Fallback Client ID | Leeg | Wordt gebruikt als de |
Fallback Session ID | Leeg | Wordt gebruikt als de |
💡 Tip: Het instellen van de Fallback Client ID en Fallback Session ID is sterk aanbevolen. Zonder deze fallbacks worden purchase events van bezoekers die cookies geweigerd hebben niet correct gekoppeld aan een sessie.
Page Location Fallback
Bepaalt welke URL wordt meegestuurd als page_location in het GA4 event.
Optie | Toelichting |
|---|---|
Landing page URL (aanbevolen) | Gebruikt de pagina waarop de bezoeker voor het eerst binnenkwam (bijv. |
Checkout / thank-you URL | Gebruikt de checkout- of bedankpagina-URL uit het marketing-object. Niet altijd beschikbaar (bijv. bij iDEAL of uitgestelde betalingen). |
Custom variable | Gebruik een eigen GTM-variabele als bron. |
Webhook Parameters (auto-populated)
Deze opties staan standaard aan en worden automatisch gevuld vanuit de webhook data:
Instelling | Standaard | Waarom belangrijk |
|---|---|---|
Add engagement_time_msec | ✅ Aan | Voegt |
Add ip_override | ✅ Aan | Stuurt het echte IP-adres van de bezoeker mee in plaats van het server-IP. Zonder dit lijken alle aankopen uit je datacenter te komen in GA4 geo-rapporten. |
Add user_agent | ✅ Aan | Stuurt de echte browser user-agent mee. Zonder dit kloppen device-rapporten in GA4 niet. |
Add page_referrer | ✅ Aan | Stuurt de referrer-URL mee (bijv. |
Add page_title | ✅ Aan | Stuurt de paginatitel mee. Alleen beschikbaar op Shopify; andere platformen gebruiken de event data page_title indien beschikbaar. |
Add timestamp_micros | ✅ Aan | Registreert het event op het moment van de daadwerkelijke aankoop, niet wanneer de webhook aankomt. Belangrijk omdat webhooks vertraging kunnen hebben. GA4 ondersteunt terugdatering tot 72 uur. |
Override Event Name
Standaard verwijdert de tag automatisch het trytagging_ prefix van de event name (bijv. trytagging_purchase → purchase). Wil je een andere event name naar GA4 sturen? Zet dan Override Event Name aan en vul je gewenste event name in.
Consent handling
Optie | Toelichting |
|---|---|
Off | Geen consent-object meegestuurd. GA4 erft consent van het voorgaande client-side event (vereist matching client_id en session_id). |
From gcs | Parseert de Google Consent Status uit |
Always GRANTED | Stuurt |
Event Parameters
Instelling | Standaard | Toelichting |
|---|---|---|
Forward Event Parameters | ✅ Aan | Stuurt alle niet-vendor-specifieke event parameters door naar GA4 |
Ignore Selected Event Parameters | Uit | Hiermee kun je specifieke parameters uitsluiten van de doorstuur |
Stap 5: Trigger instellen
De tag moet alleen afvuren op webhook purchase events die binnenkomen via de AdPage Webhook Client.
Klik in de tag op Triggering
Klik op het + icoon om een nieuwe trigger aan te maken
Kies als trigger type: Custom
Stel de trigger in op:
Event Name is gelijk aan
trytagging_purchase
Geef de trigger een herkenbare naam, bijvoorbeeld
Webhook - PurchaseKlik op Save
⚠️ Let op: Controleer dat je bestaande GA4 tag in de server container het
purchaseevent excludeert van zijn trigger. Anders worden purchase events dubbel gemeten — één keer via de reguliere GA4 tag en één keer via de Measurement Protocol Tag. Voeg aan de trigger van je bestaande GA4 tag de voorwaarde toe: Event Name does not equal purchase.
Stap 6: Webhooks testen
Voordat je live gaat, test je de setup via de Webhook Replay functie in het AdPage platform.
Open je server container op trytagging.com/container
Ga naar Webhook Logs
Zoek een recente webhook op en klik op de Replay knop
Open je GTM server container in de Preview Mode
Klik rechtsboven op de drie puntjes en kies Send requests manually
Kopieer de
x-gtm-server-previewHTTP header en plak deze in het invoerveld van de Webhook Replay popup in TrytaggingKlik op Replay
Als alles correct is ingesteld, zie je in de GTM preview mode:
De webhook wordt ontvangen door de AdPage Webhook Client
De AdPage - GA4 Purchase (Webhook) tag vuurt af
De tag stuurt een Measurement Protocol request naar GA4
⚠️ Zie je geen tags afvuren, of worden er onverwachte tags geactiveerd? Controleer dan:
Of de Webhook Client correct is aangemaakt en het juiste pad claimt
Of de trigger van de Measurement Protocol Tag correct is ingesteld op
trytagging_purchaseOf je Measurement ID en API Secret correct zijn ingevuld
Controleren in GA4 of het purchase event binnenkomt
Nadat je de webhook hebt afgespeeld via de Replay, controleer je in GA4 zelf of het event daadwerkelijk is ontvangen. Dat doe je via twee plekken:
DebugView (meest gedetailleerd)
Open GA4 en ga naar Beheerder > DebugView
Zoek het
purchaseevent in de tijdlijnKlik op het event om de parameters te bekijken. Controleer of de volgende waarden correct zijn ingevuld:
transaction_id— komt overeen met het ordernummer in je CMSvalue— het juiste orderbedragcurrency— de juiste valuta (bijv.EUR)items— de bestelde producten zijn zichtbaar
Controleer ook de gebruikersparameters. Klik linksboven op het gebruikerspictogram en controleer:
client_id— bevat een waarde (niet leeg ofundefined)session_id— bevat een waarde
⚠️ Let op: DebugView toont alleen events van apparaten die in debug-modus staan. Measurement Protocol events verschijnen hier alleen als je de parameter
debug_mode: truehandmatig toevoegt aan de tag. Verschijnt het event niet in DebugView? Controleer dan via het Realtime-rapport.
Realtime-rapport (snelle check)
Open GA4 en ga naar Rapporten > Realtime
Scroll naar het blok Gebeurtenistelling op gebeurtenisnaam
Controleer of
purchasein de lijst verschijnt na het replyen van de webhookKlik op
purchaseom te verifiëren dat deevent_countis opgehoogd
Als het purchase event zichtbaar is in GA4 met de juiste parameters, werkt de Measurement Protocol Tag correct en kun je doorgaan met publiceren.
💡 Tip: Zie je het event wél in de GTM preview mode maar niet in GA4? Controleer dan of het Measurement ID en de API Secret correct zijn ingevuld. Een verkeerd API secret geeft geen foutmelding in GTM, maar GA4 weigert het event stilletjes.






