Track
Server-side trackingReferentieGevorderd

Deduplicatie die de praktijk overleeft: event-ID's, order-ID's en waarop elk platform werkelijk dedupliceert

Een tabel per platform met deduplicatiesleutels — Meta, Google Ads, GA4, TikTok, Microsoft, LinkedIn, Pinterest, Snapchat, Reddit, X, CM360 — en de tweesleutelstrategie die hybride tracking eerlijk houdt.

Door
Track-redactie
Gepubliceerd
Laatst gecontroleerd
Leestijd
3 min leestijd

Belangrijkste punten

  • Gebruik twee sleutels: een event-ID die één keer aan de bron wordt gegenereerd en aan elk pad wordt meegegeven, plus de order-ID op elk commerce-event.
  • Platformen voegen samen op verschillende sleutels — Meta, TikTok, Microsoft, LinkedIn en Pinterest op de event-ID, Google Ads en GA4 op de order- of transactie-ID, Snapchat op een bij elkaar horend paar, CM360 op de ordinal.
  • Platformen voegen alleen samen binnen een venster (Meta documenteert ongeveer 48 uur); vertraagde CRM-kwalificaties horen op een apart platform-event, niet als duplicaat van het browser-event.
  • Terugbetalingen zijn eigen events met de oorspronkelijke order-ID; controleer de deduplicatie in de event-debugger, de destination-monitor en de interface van het platform.

Waarom twee sleutels

Een event-ID identificeert één actie zoals jouw systemen die hebben waargenomen. Een order-ID identificeert één zakelijke transactie. Ze falen op verschillende manieren:

  • Event-ID's worden per waarneming gegenereerd. Als de browser en de server dezelfde aankoop onafhankelijk van elkaar waarnemen, delen ze alleen een ID als je die bewust tussen beide doorgeeft.
  • Order-ID's bestaan voor aankopen en terugbetalingen, maar niet voor paginaweergaven, leads of registraties.

Een robuuste setup gebruikt beide: één event-ID die aan de bron wordt gegenereerd en aan elk pad wordt meegegeven, plus de order-ID op elk commerce-event. Platformen die op de event-ID dedupliceren, voegen de waarneming samen; platformen die op de order-ID dedupliceren, voegen de transactie samen; een platform dat beide ondersteunt, krijgt dubbele zekerheid.

De referentietabel

PlatformBrowserveldServerveldVoegt samen opOpmerkingen
MetaeventID (pixeloptie)event_idevent-ID + eventnaam, ~48 uurorder_id in custom_data is informatief
Google Adstransaction_id (gtag)orderId (upload)order-ID per conversieactieleads: gebruik aparte conversieacties
GA4transaction_idtransaction_idtransactie-ID voor purchaseandere events worden niet gededupliceerd
TikTokevent_id (ttq-optie)event_idevent-ID + eventnaamorder_id in properties
Microsoftevent_id (UET-push)eventIdevent-ID + eventnaamdezelfde UET-tag-ID op beide paden
LinkedInevent_id (lintrk)eventIdevent-IDper conversieregel
Pinterestevent_id (pintrk)event_idevent-IDorder_id in custom_data
Snapchatclient_dedup_idevent_idbij elkaar horend paarbinnen het dedup-venster
RedditconversionId (rdt)conversion_idconversie-ID
Xconversion_id (twq)conversion_idconversie-IDper event-ID (tw-…)
Campaign Manager 360ordinal / u1ordinalordinal + activiteit + gebruikertijdstempels binnen 28 dagen
Affiliate-netwerkenorderreferentieorderreferentieduplicaatbescherming aan netwerkzijde

De ID genereren

Genereer de ID voordat er iets wordt verstuurd, op de plek waar de actie als eerste bekend is. In de browser is dat het moment waarop tsq.push(["track", ...]) draait; Track kent een ULID toe en gebruikt die zowel voor de pixelaanroep van het platform als voor het collector-request. Bij serverbronnen hoort het bronsysteem de ID te genereren — of, bij aankopen, de order-ID door te geven zodat de router daaruit een deterministische event-ID kan afleiden.

Een deterministische ID voor aankopen (hash(site, "purchase", order_id)) heeft een prettige eigenschap: een opnieuw verstuurde webhook van Shopify of een dubbele CRM-export levert dezelfde ID op, en de eigen dedup-guard van de worker verwerpt die vóór de aflevering.

Tijdvensters

Platformen voegen alleen samen binnen een venster — Meta documenteert ongeveer 48 uur, andere platformen zitten daar in de buurt. Komt je server-event dagen later binnen (een CRM-batch), dan wordt het niet samengevoegd met het browser-event; het telt er extra bovenop. Kies per eventtype:

  • Aankopen en andere directe conversies: hybride met een gedeelde ID, beide binnen enkele minuten.
  • Vertraagde kwalificaties (een lead wordt een week later een opportunity): een ander platform-event of een andere conversieactie, geen duplicaat van het browser-event.

Terugbetalingen

Terugbetalingen zijn eigen events. GA4 heeft een refund-event met transaction_id; Google Ads gebruikt conversieaanpassingen (intrekking/herwaardering) op basis van de order-ID; Meta heeft geen refund-event, maar accepteert negatieve waarden in custom conversions; de meeste affiliate-netwerken accepteren een storneringspostback. Track verstuurt refund met een negatieve waarde en de oorspronkelijke order-ID en laat elke connector bepalen wat het platform ondersteunt.

Verificatie via de debugger

  1. Koop iets in testmodus met de browser open.
  2. Zoek in de event-debugger de browseraankoop en de serveraankoop op — zelfde event-ID, zelfde order-ID.
  3. Open de destination-monitor: één afleverpoging per pad, beide geaccepteerd.
  4. Bevestig in de interface van het platform (Events Manager, Test events, DebugView) één conversie, niet twee.

Toont stap 4 er twee, dan is de ID op een van de paden niet meegereisd. De geredigeerde payload-preview in de debugger laat zien op welk pad.

Primaire bronnen

Documentatie en standaarden waarop dit artikel is gebaseerd.

  1. Meta — Conversions API: deduplicationdevelopers.facebook.com
  2. Microsoft Advertising — Conversions API (CAPI)learn.microsoft.com

Was dit artikel nuttig?

Verantwoordelijke redactie

Track-redactie

Product & engineering

De mensen achter Track: engineers en analisten die dagelijks werken aan server-side tracking, toestemmingstooling en connectorintegraties.