Aankoop twee keer gemeten: controleer transaction_id
7 november 2026 · 6 min leestijd · Marketing Scan
In dit artikel
Eerst het verschil tussen event en transactie
Een purchase-event is een melding die je pagina naar Google Analytics stuurt. Een transactie is een bestelling in je shop. Idealiter komt per bestelling precies één event aan. In de praktijk kan een event meerdere keren vuren: bij een paginaherlaad, wanneer de klant via de terugknop of een link in de bevestigingsmail op de bedankpagina terugkomt, of wanneer twee tags hetzelfde event versturen. Dat laatste kan gebeuren als de meetcode zowel in de pagina als in een tagbeheerder staat.
Je onderzoekt dus twee getallen: het aantal ruwe purchase-events en het aantal unieke transaction_id's. Zijn ze gelijk, dan stuurt je site per bestelling één event. Zijn er meer events dan ids, dan wordt een bestelling meermaals verstuurd. Lege of identieke ids zijn een apart probleem.
Wat de officiële uitleg over transaction_id zegt
De hulppagina van Google Analytics over transactie-ID's legt kort uit hoe je dubbele gebeurtenissen beperkt. De kernpunten die je voor je controle nodig hebt: de id moet uniek zijn per bestelling, bijvoorbeeld een bevestigingsnummer. Dezelfde id mag niet voor verschillende gebruikers dienen, en hij mag geen gegevens bevatten waarmee een klant te identificeren is. De waarde moet dynamisch zijn, zodat elke bestelling een andere krijgt. Een lege tekenreeks is uitdrukkelijk af te raden, omdat aankopen met een lege id samen worden gededupliceerd. De pagina vermeldt ook dat deze deduplicatie alleen werkt voor webstreams en niet voor app-streams.
Omdat Google Analytics aankopen met dezelfde transactie-ID dedupliceert, kunnen dubbele events met dezelfde id in rapporten verdwijnen, terwijl ze in de ruwe gegevens zichtbaar blijven. Of en hoe een afwijking in jouw property zichtbaar is, hangt af van je opzet. Controleer dat dus zelf in de ruwe gegevens, niet enkel in samenvattende rapporten.
Stappenplan: herlaad de bedankpagina en tel
Doe deze test samen met de beheerder van je webshop, met een testbestelling die je achteraf als test herkent. Gebruik geen echte klantbestelling. De ontwikkelaarsdocumentatie over e-commerce raadt aan om debugmodus in te schakelen, zodat je events live kunt volgen en problemen kunt opsporen. Waar je die modus vindt, hangt af van je opzet; vraag het na bij je beheerder.
- Zet debugmodus aan en open de weergave met binnenkomende events.
- Plaats een testbestelling tot en met de bedankpagina.
- Noteer het aantal purchase-events en de transaction_id van dat event.
- Controleer of de id een echte waarde is, geen lege tekst of een zichtbare sjabloonplaats. Bij een id die direct in de paginacode staat, kun je de paginabron bekijken. Bij een tagbeheerder of datalaag controleer je de waarde in de debugweergave of de previewmodus van de tagbeheerder.
- Herlaad de bedankpagina één keer en noteer opnieuw wat er binnenkomt.
- Open de bedankpagina nog eens via de link in je bevestigingsmail en noteer opnieuw.
- Leg je notities naast de bestellijst in je shop: één bestelling, hoeveel events, welke ids.
Beslisblad: afwijking, oorzaak, actie
| Waarneming | Mogelijke oorzaak | Actie |
|---|---|---|
| Herlaad geeft een tweede event met dezelfde id | Het event vuurt bij elke paginaweergave | Laat de ontwikkelaar het event beperken, bijvoorbeeld tot de eerste weergave van die bestelling |
| Twee events direct na elkaar bij één bezoek | Dezelfde meting staat dubbel in pagina en tagbeheerder | Verwijder één bron en test opnieuw |
| Id is leeg of gelijk voor verschillende bestellingen | De dynamische waarde wordt niet ingevuld of is vast | Koppel de id aan het bevestigingsnummer van de bestelling |
| Id bevat naam of e-mailadres | Verkeerde bron voor de waarde | Vervang door een neutraal ordernummer en bekijk met je beheerder wat er al in analytics is verzameld |
| Dubbele aankoop uit een app wordt niet gededupliceerd | De bron beschrijft deduplicatie alleen voor webstreams, niet voor app-streams | Controleer apart hoe je app-gegevens verzamelt |
Fictief rekenvoorbeeld
Onderstaande gegevens zijn verzonnen en dienen alleen om de methode te tonen. Stel dat je debugweergave na een testsessie zes purchase-events toont met deze ids: ORD-1001, ORD-1001, ORD-1002, (leeg), (leeg), ORD-1003. Je bestellijst bevat drie testbestellingen: ORD-1001, ORD-1002 en ORD-1003.
- Ruwe purchase-events: 6.
- Unieke, niet-lege ids: 3 (ORD-1001, ORD-1002, ORD-1003).
- Events met lege id: 2.
- Events met dubbel id: 1 extra voor ORD-1001.
Verwachte technische controles: bij ORD-1001 test je herlaad en dubbele tags. Voor de lege ids onderzoek je waarom de dynamische waarde ontbreekt en welke pagina dat event verstuurt. Na een herstel verwacht je dat elke testbestelling precies één event met een eigen, gevulde id oplevert, en dat ruwe events en unieke ids gelijk zijn. Hoe je rapport daarop reageert, controleer je pas in je eigen property.
Controle na wijziging en grenzen
Herhaal na elke aanpassing de volledige procedure met een nieuwe testbestelling, inclusief herlaad en de link uit de bevestigingsmail. Vergelijk daarna ruwe events, unieke ids en bestellijst opnieuw. Controleer ook of terugbetalingen dezelfde id gebruiken als de oorspronkelijke bestelling, want de officiële uitleg koppelt de id aan het verwerken van terugbetalingen. Noteer wie de wijziging deed en welke versie van de code actief is, zodat een latere afwijking sneller te herleiden is.
Let op de grenzen: deze test toont of events dubbel vuren, niet of omzet, btw of valuta in je rapport volledig kloppen. Vergelijk bedragen daarom steekproefsgewijs met je shop. Wil je ook de publieke signalen van je site bekijken? Dat kan via Marketing Scan. Een publieke scan ziet geen interne meetconfiguratie en vervangt deze controle in je eigen analytics niet.
Veelgestelde vragen.
Waarom is een lege transaction_id een probleem?
Volgens de uitleg van Google Analytics worden alle aankopen met een lege tekenreeks als id gededupliceerd. Verschillende bestellingen kunnen dan samenvallen. Zorg dat elk purchase-event een gevulde, unieke waarde meegeeft.
Kan ik het bevestigingsnummer van de bestelling gebruiken?
Ja, de officiële uitleg noemt het bevestigingsnummer van een bestelling als voorbeeld. Gebruik geen naam, e-mailadres of andere gegevens waarmee een klant te herkennen is. Een neutraal ordernummer is de veilige keuze.
Hoe herken ik dubbele tags in plaats van een herlaadprobleem?
Plaats een testbestelling en kijk of er bij één bezoek al twee events binnenkomen, zonder dat je herlaadt. Dan is de kans groot dat dezelfde meting op twee plaatsen staat, bijvoorbeeld in de pagina en in een tagbeheerder. Verwijder één bron en test opnieuw.
Werkt deduplicatie ook voor mijn app?
Volgens de bron werkt deduplicatie op transactie-ID alleen voor gegevens uit webstreams, niet voor app-streams. Controleer apart hoe jouw app aankopen verzendt. Gebruik daar dezelfde ruwe-eventsvergelijking.
Bronnen bij dit artikel
Hoe werkt een marketing scan? Meetmethode en grenzen
Van advies naar actie voor jouw website
Maak een gratis account voor één website. Controleer zes kenmerken van je homepage en bekijk maximaal drie bevindingen.
Herhaal de check handmatig één keer per zeven dagen. Voor volledige audits en automatische opvolging is uitgebreide toegang nodig.
Maak je gratis account