Webhook purchase events instellen voor GA4 - Measurement Protocol

Bewerkt

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:

  1. 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.

  2. 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.

  3. 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.tpl

    • AdPage - 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.

  1. Open je GTM server container

  2. Ga naar Templates in het linkermenu

  3. Klik bij Client Templates op New

  4. Klik rechtsboven op de drie puntjes (⋮) en kies Import

  5. Selecteer het bestand AdPage Webhook Client.tpl

  6. Klik op Save

Maak nu een nieuwe Client aan op basis van deze template:

  1. Ga naar Clients in het linkermenu

  2. Klik op New

  3. Kies als Client Configuration de AdPage Webhook Client

  4. 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.

  1. 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

  1. Open je GTM server container

  2. Ga naar Clients in het linkermenu

  3. Open je bestaande GA4 client

  4. Scroll naar beneden naar More Settings

  5. Zet Cookies and Client Identification op Server Managed

  6. Wijzig bij Server Cookie Settings het veld Name van FPID naar een nieuwe naam, bijvoorbeeld FPID_v2

  7. Zet het vinkje aan bij Migrate from JavaScript Managed Client ID

  8. 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.

  1. Ga naar Templates in het linkermenu van je GTM server container

  2. Klik bij Tag Templates op New

  3. Klik rechtsboven op de drie puntjes (⋮) en kies Import

  4. Selecteer het bestand AdPage - GA4 Measurement Protocol Tag v2.0.tpl

  5. Klik op Save


Stap 4: GA4 Measurement Protocol Tag configureren

Maak nu een nieuwe Tag aan op basis van de zojuist geüploade template:

  1. Ga naar Tags in het linkermenu

  2. Klik op New

  3. Kies als Tag Configuration de AdPage - GA4 Measurement Protocol Tag v2.0

  4. Geef de tag een herkenbare naam, bijvoorbeeld AdPage - GA4 Purchase (Webhook)

Verplichte instellingen

Instelling

Waarde

Toelichting

Measurement ID

G-XXXXXXXXXX

Je GA4 Measurement ID uit je datastream

API Secret

Je API secret

Aanmaken via GA4 > Beheerder > Gegevensstreams > Measurement Protocol API-secrets

Data Collection Region

European Union of Global

Kies European Union voor EU-gebaseerde klanten (gebruikt region1.google-analytics.com)

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 _ga cookie heeft, of als je volledige controle wilt over de client_id

Fallback Client ID

Leeg

Wordt gebruikt als de _ga cookie ontbreekt (~20% van de orders door consent). Aanbevolen: gebruik een event data variabele met marketing.client_id of x_client_id

Fallback Session ID

Leeg

Wordt gebruikt als de _ga_{container} session cookie ontbreekt. Aanbevolen: gebruik een event data variabele met marketing.session_id

💡 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. /products/koffie). Beste keuze voor attributie. Valt terug op de checkout-URL en daarna op de homepage.

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 engagement_time_msec=100 toe zodat GA4 dit als een engaged session telt. Zonder dit klopt je bounce rate niet.

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. https://www.google.com/). Beschikbaar op alle platformen.

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_purchasepurchase). 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 marketing.gcs. G111 → GRANTED, G000 → DENIED. Gebruik voor clients die gcs in de webhook data hebben.

Always GRANTED

Stuurt ad_user_data en ad_personalization altijd als GRANTED. Gebruik als je weet dat alle webhook purchases consent hebben.

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.

  1. Klik in de tag op Triggering

  2. Klik op het + icoon om een nieuwe trigger aan te maken

  3. Kies als trigger type: Custom

  4. Stel de trigger in op:

    • Event Name is gelijk aan trytagging_purchase

  5. Geef de trigger een herkenbare naam, bijvoorbeeld Webhook - Purchase

  6. Klik op Save

⚠️ Let op: Controleer dat je bestaande GA4 tag in de server container het purchase event 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.

  1. Open je server container op trytagging.com/container

  2. Ga naar Webhook Logs

  3. Zoek een recente webhook op en klik op de Replay knop

  4. Open je GTM server container in de Preview Mode

  5. Klik rechtsboven op de drie puntjes en kies Send requests manually

  6. Kopieer de x-gtm-server-preview HTTP header en plak deze in het invoerveld van de Webhook Replay popup in Trytagging

  7. Klik 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_purchase

  • Of 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)

  1. Open GA4 en ga naar Beheerder > DebugView

  2. Zoek het purchase event in de tijdlijn

  3. Klik 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 CMS

    • value — het juiste orderbedrag

    • currency — de juiste valuta (bijv. EUR)

    • items — de bestelde producten zijn zichtbaar

  4. Controleer ook de gebruikersparameters. Klik linksboven op het gebruikerspictogram en controleer:

    • client_id — bevat een waarde (niet leeg of undefined)

    • 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: true handmatig toevoegt aan de tag. Verschijnt het event niet in DebugView? Controleer dan via het Realtime-rapport.

Realtime-rapport (snelle check)

  1. Open GA4 en ga naar Rapporten > Realtime

  2. Scroll naar het blok Gebeurtenistelling op gebeurtenisnaam

  3. Controleer of purchase in de lijst verschijnt na het replyen van de webhook

  4. Klik op purchase om te verifiëren dat de event_count is 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.


Was dit artikel nuttig?

Onze excuses! Zou je ons meer willen vertellen?

Bedankt voor de feedback!

Er is een probleem opgetreden bij het verzenden van uw feedback
Controleer uw verbinding en probeer het opnieuw.