Google Ads tracking instellen via Webhook Matching

Bewerkt

Dit artikel gaat specifiek over het Google Ads-deel van AdPage Webhook Matching: hoe je de standaard Google Ads Conversion Tracking-tag koppelt aan de merged payload die Webhook Matching aanlevert. Heb je Webhook Matching nog niet ingericht? Doorloop eerst het basisartikel (activeren, Event Notifier-template, BasketKey, Measurement Protocol Client) — dit artikel bouwt daar direct op verder.


Kort: wat is Webhook Matching ook alweer?

Webhook Matching is een AdPage-functionaliteit die twee databronnen server-side samenvoegt tot één gevalideerd event:

  • Prepare (browser-side, vlak vóór checkout): vangt browser-context — gclid, _gcl_aw, cookies, user-agent, items-array

  • Trigger (server-side webhook, bij de order): vangt de backend-ordergegevens — klant, adres, bedrag

Beide kanten worden gekoppeld via een BasketKey (user_id, cart_token of quote_id, afhankelijk van je platform). Het resultaat komt binnen op je sGTM server container via een Measurement Protocol (GA4) Client op het pad /data, en bevat direct alle velden die GA4, Meta, Google Ads, TikTok én Pinterest nodig hebben — inclusief consent-forwarding.

💡 De kern van dit artikel in één zin: laat de Google Ads Conversion Tracking-tag zo leeg mogelijk. Vul alleen Conversion ID en Conversion Label in, en laat Conversion Value en Currency code leeg — dan leest de tag die automatisch uit de payload.


Wat heb je nodig?

  • Webhook Matching actief voor deze klant (stap 1 uit het basisartikel)

  • De Prepare- en Trigger-tags (op basis van adpage-event-notifier.tpl) al ingericht met de juiste BasketKey

  • Een Measurement Protocol (GA4) Client op pad /data, met een herkenbare naam — in dit artikel gebruiken we Webhook Matching - GA4 als voorbeeld

  • Je Google Ads Conversion ID en Conversion Label voor de purchase-conversie — beheerd via de per-domein lookups (zie Stap 2)


Stap 1: Client en payload controleren

De Google Ads Conversion Tracking-tag is een ingebouwde GTM server-tag; je hoeft hiervoor géén template te importeren. Wat wél moet kloppen, is dat de standaard Google MP (App+Web) client de payload van de Event Notifier parseert.

Die client bouwt uit de payload het GA4 event-data-model op: value, currency, items, user_data (gehasht) en de consent-state. De Google Ads-tag leest die velden vervolgens automatisch uit dat model — zolang je ze niet handmatig overschrijft.


Stap 2: Tag aanmaken en basisinstellingen

  1. Ga naar Tags in het linkermenu

  2. Klik op New

  3. Kies als Tag Configuration Google Ads Conversion Tracking

  4. Geef de tag een herkenbare naam, bijvoorbeeld Google Ads - Purchase (Webhook Matching)

  5. Vul de velden in volgens onderstaande tabel:

Veld

Waarde

Toelichting

Conversion ID

{{@ Google Ads Conversion ID}}

✅ invullen (lookup per domein)

Conversion Label

{{@ Google Ads Conversion Label (purchase) - MP}}

✅ invullen (lookup per domein)

Conversion Value

(leeg)

leeg laten — komt uit params.value

Currency code

(leeg)

leeg laten — komt uit params.currency

Enable Restricted Data Processing

False

tenzij bewust anders

Provide product-level sales data

optioneel

aanvinken voor item-/productdata (item=) in de conversie

Provide new customer data

optioneel

aanvinken voor new-customer-acquisition reporting

Meer hoef je niet in te stellen. Consent, klik-id (gclid) en Enhanced Conversions komen uit de payload.

⚠️ Vul Conversion Value niet in met een variabele zoals {{value}}. Op het MP-pad geeft zo'n variabele vaak leeg terug, waarmee je de automatische uitlezing overschrijft met een lege waarde — de conversie gaat dan zonder waarde de deur uit. Hetzelfde geldt voor Currency code. Laat de velden simpelweg leeg.


Stap 3: Trigger instellen op de Measurement Protocol Client

In tegenstelling tot een setup met de "losse" AdPage Webhook Client, komt dit event niet binnen als een custom event met een trytagging_-prefix. Het komt binnen via de Measurement Protocol Client die je in stap 4 van het basisartikel hebt aangemaakt, met een schone event_name: "purchase".

  1. Klik in de tag op Triggering+

  2. Kies als trigger type Custom

  3. Stel in: {{Client Name}} komt overeen met de naam van je Measurement Protocol Client (bijv. Webhook Matching - GA4)

  4. Voeg optioneel een tweede voorwaarde toe: Event Name is gelijk aan purchase (extra zekerheid als deze client ooit meer event-types gaat afhandelen)

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

  6. Klik op Save

⚠️ Gebruik deze trigger op de Measurement Protocol Client — niet de "Client Name equals GA4"-trigger uit het reguliere Google Ads-artikel. Die trigger vangt de gewone client-side GA4-events, en zou dan naast Webhook Matching een tweede (deels dubbele) conversie veroorzaken voor dezelfde aankoop.


Stap 4: Consent — controleren, niet blind uitzetten

Webhook Matching stuurt consent standaard mee. Op het MP-pad gebeurt dat via een top-level consent-object (ad_user_data / ad_personalization: GRANTED/DENIED); de standaard MP-client leest consent uitsluitend uit dat object. Zonder dat object worden EEA-conversies niet toegekend.

  1. Test de flow (zie Stap 5)

  2. Controleer in de outgoing request of gcs / gcd aanwezig zijn (bijv. G111)

  3. Ontbreken die parameters, dan komt consent niet in het verwachte formaat aan — meld dit door aan het Tracking & Tools-team, want dan klopt de consent-doorvertaling van de Measurement Protocol Client of de consent-capture in de tagging-template niet.

💡 De GA4-client (gaaw_client) leest consent óók uit de x-ga-gcs-param; de MP-client (mpaw_client) uit het top-level consent-object. De Event Notifier stuurt beide mee, dus de tag-config is identiek voor beide paden.


Stap 5: Klant- en aankoopdata — automatisch gemapt

De merged payload van Webhook Matching bevat exact de velden die de Google Ads-tag automatisch uitleest. Je hoeft dus in de regel niets handmatig te mappen:

Google Ads-veld

Herkomst (via Webhook Matching)

value + currency_code

events[0].params.value / .currency — conversiewaarde

Enhanced Conversions (em, pn, fn, ln, ct, pc, co…)

events[0].params.user_data (SHA-256-gehasht, GA4 EC-formaat)

gclid

events[0].params.gclid / _gcl_aw — de Event Notifier leidt gclid af uit het _gcl_aw-cookie

productdata (item=)

events[0].params.items (optioneel, via "Provide product-level sales data")

oid

transaction_id — Google dedupt hierop

consent (gcs / gcd)

top-level consent-object

Kom je toch een veld tegen dat leeg blijft? Check eerst in de sGTM preview of het veld daadwerkelijk in de payload van de Measurement Protocol Client staat, vóór je het handmatig toevoegt.


Stap 6: Testen

  1. Open je server container → Webhook Logs

  2. Zoek een recente purchase-webhook en klik op Replay

  3. Open je GTM server container in Preview Mode

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

  5. Kopieer de x-gtm-server-preview header en plak deze in de Webhook Replay-popup

  6. Klik op Replay

Controleer in de preview mode, in deze volgorde:

  1. De Prepare- en Trigger-tag van Event Notifier hebben eerder al gematcht (geen missed-status in de Webhook Matching-logs — zie troubleshooting in het basisartikel)

  2. Je Measurement Protocol Client (Webhook Matching - GA4) verschijnt met het request op /data

  3. De Google Ads Conversion Tracking-tag toont Fired

  4. Onder Outgoing HTTP Requests from Server staat een request naar googleadservices.com/pagead/conversion/…

In een correcte purchase-ping staan:

Parameter

Verwacht

gcs / gcd

aanwezig (bijv. G111) — consent

value

de orderwaarde (bijv. 48.88)

currency_code

EUR

em

tv.1~em.<sha256>~pn.<sha256>~fn0.<sha256>~ln0.<sha256>~ct0…~pc0…~co0… — gehashte Enhanced Conversions

gclid / _gcl_aw

aanwezig (in de ping of de data-blob)

oid

de transaction_id (Google dedupt hierop)


Veelvoorkomende problemen

Geen value in de ping (wel shipping/tax)

Conversion Value is aan een variabele gekoppeld die op het MP-pad leeg resolvet. Maak het Conversion Value-veld leeg, dan leest de tag params.value automatisch uit de payload.

Enhanced Conversions komen plaintext binnen (i.p.v. gehasht em=tv.1~…)

De tag gebruikt de plaintext-velden in plaats van het gehashte user_data. Maak de value- en currency-velden leeg, zodat de tag het gehashte user_data-object auto-collect.

Geen gclid / gclaw in de ping

Het _gcl_aw-cookie is niet doorgestuurd of niet omgezet naar gclid. Controleer of de Prepare-stap het _gcl_aw-cookie vangt; de Event Notifier leidt gclid daaruit af.

Conversie komt binnen maar telt niet mee (EEA)

Het consent-signaal ontbreekt (gcs / gcd niet aanwezig). Zie Stap 4 — consent hoort via het top-level consent-object mee te komen.

Conversie wordt dubbel geteld

Je hebt zowel deze trigger (Client Name = Measurement Protocol Client) als een trigger uit het reguliere artikel (Client Name = GA4) actief op dezelfde purchase-events. Zorg dat je maar één van beide triggers gebruikt. Google dedupliceert op basis van oid (transaction_id).


Verschil met de standaard Webhook Client

Gebruik je (nog) geen Webhook Matching, maar wel de gewone AdPage Webhook Client rechtstreeks? Dan gelden twee afwijkende punten ten opzichte van dit artikel:

  • Het event komt binnen met de ruwe naam trytagging_purchase, niet als schone purchase. Stel je trigger dan in op die custom event-naam, niet op de Measurement Protocol Client.

  • De payload bevat geen consent-signaal via het top-level consent-object. Controleer dan extra zorgvuldig of de conversie wel wordt toegekend in EEA-verkeer.


Randvoorwaarden

  • Werkt alleen als de tagging-template de marketing- en consent-data vastlegt en de Event Notifier die in de MP-payload meestuurt.

  • Controleer dat de per-domein lookups (Conversion ID + Label) voor élk domein een waarde teruggeven; ontbreekt een domein, dan vuurt de tag niet.


Gerelateerde artikelen

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.