Duplicate Events Detecteren en Oplossen - Troubleshooting Guide
Overzicht
Dit artikel legt uit hoe je duplicate events kunt herkennen, analyseren en oplossen. Duplicate events ontstaan wanneer dezelfde tracking tag meerdere keren wordt afgevuurd voor ÊÊn gebruikersactie, wat kan leiden tot opgeblazen statistieken en onbetrouwbare data.
Waarom zijn duplicate events een probleem?
Duplicate events kunnen ernstige gevolgen hebben voor je tracking data:
Impact | Voorbeeld |
|---|---|
Opgeblazen omzet | 100 purchases worden 118 purchases (+18%) |
Verkeerde ROAS berekening | Advertentie platforms rapporteren te hoge conversiewaarde |
Onbetrouwbare funnel analyse | Add-to-cart en checkout rates kloppen niet |
Verkeerde optimalisatie beslissingen | Je optimaliseert op basis van foutieve data |
Let op: Bij purchase events is dit extra kritiek omdat het direct invloed heeft op je gerapporteerde omzet en ROAS in Google Ads, Meta, etc.
Hoe herken je duplicate events?
Signalen in je AdPage Validation Report
Het AdPage Tracking Validation System detecteert automatisch duplicate events. Je ziet dit terug als:
đ´ CRITICAL: Duplicate purchases gedetecteerd (>50 duplicates of hoog percentage)
â ī¸ WARNING: Hoge duplicate rate voor andere events
â SUCCESS: Geen significante duplicates gevonden
Kenmerken van duplicate events
Duplicate events hebben typisch deze eigenschappen:
Kenmerk | Waarde | Betekenis |
|---|---|---|
Tijd tussen fires | < 10 seconden | Tag vuurt meerdere keren snel achter elkaar |
Zelfde client_id | Ja | Dezelfde gebruiker |
Zelfde event_name | Ja | Bijvoorbeeld |
Zelfde transaction_id | Vaak | Dezelfde bestelling wordt meerdere keren gemeten |
Voorbeeld uit de praktijk
Totaal purchase events: 1,023
Unieke purchase windows: 833
Duplicate events: 190 (18.6%)
Affected users: 167
Patroon: 171 windows met double-fires binnen 8 seconden
Dit wijst op een tag configuratie probleem, niet op normaal gebruikersgedrag.
Oorzaken van duplicate events
1. Dubbele tag firing in GTM
Probleem: De tag vuurt op meerdere triggers tegelijk.
Controleer:
Open Google Tag Manager
Ga naar de purchase/conversie tag
Bekijk de triggers - zijn er meerdere actief?
Check of dezelfde trigger niet dubbel is toegevoegd
Oplossing:
â
Gebruik ÊÊn specifieke trigger per tag
â
Voeg een "Tag has fired" blokkerende trigger toe
â
Gebruik eenmalige tag firing instelling
2. SPA (Single Page Application) navigatie issues
Probleem: Bij SPA websites kan een page view of event opnieuw vuren bij "virtuele" navigatie.
Controleer:
Gebeuren duplicates na URL wijzigingen zonder page reload?
Zijn het steeds dezelfde events die dupliceren?
Oplossing:
â
Gebruik History Change triggers i.p.v. Page View
â
Implementeer deduplicatie logica in je tag
â
Check of de dataLayer correct wordt gereset
3. Race conditions bij checkout
Probleem: De purchase tag vuurt voordat de vorige firing is afgerond, vooral bij langzame verbindingen of server response.
Controleer:
Gebeuren duplicates binnen 1-2 seconden?
Is er een patroon met specifieke browsers of devices?
Oplossing:
â
Voeg een debounce/throttle toe aan je tag
â
Gebruik een flag variabele om dubbele firing te voorkomen
â
Implementeer server-side deduplicatie
4. Browser refresh op thank you page
Probleem: Gebruiker refresht de bedankpagina, tag vuurt opnieuw.
Controleer:
Zijn de duplicates verspreid over langere tijd (30+ seconden)?
Gebeurt het bij dezelfde transaction_id?
Oplossing:
â
Sla gefireerde transaction_ids op in localStorage/cookie
â
Check of transaction_id al is gemeten voordat tag vuurt
â
Redirect na purchase naar pagina zonder tracking
Stap-voor-stap oplossing
Stap 1: Identificeer het event type
Welk event heeft de meeste duplicates?
trytagging_purchaseâ Hoogste prioriteit - direct fixentrytagging_add_to_cartâ Medium prioriteittrytagging_begin_checkoutâ Medium prioriteitAndere events â Lagere prioriteit
Stap 2: Analyseer het patroon
Gebruik de AdPage MCP of ClickHouse om het patroon te analyseren:
-- Check duplicate patroon voor specifieke container
WITH duplicates AS (
SELECT
client_id,
toStartOfFiveMinutes(timestamp) as event_window,
COUNT(*) as fire_count,
dateDiff('second', MIN(timestamp), MAX(timestamp)) as time_span_sec
FROM incoming_requests
WHERE container_id = 'jouw-container-id'
AND timestamp >= now() - INTERVAL 7 DAY
AND event_name = 'trytagging_purchase'
AND client_id != ''
GROUP BY client_id, event_window
HAVING fire_count > 1
)
SELECT
fire_count,
COUNT(*) as occurrences,
ROUND(AVG(time_span_sec), 1) as avg_seconds_between
FROM duplicates
GROUP BY fire_count
ORDER BY fire_count
Stap 3: Implementeer de fix
Voor GTM Web Container:
Maak een nieuwe variabele
JS - Purchase Fired Flag:
function() {
return window._purchaseFired || false;
}
Maak een Custom HTML tag die na de purchase tag vuurt:
<script>
window._purchaseFired = true;
</script>
Voeg een blokkerende trigger toe aan je purchase tag:
Trigger type: Custom Event
Conditie:
Purchase Fired Flagequalsfalse
Voor Server Container:
Gebruik transaction_id deduplicatie in je AdPage tag configuratie:
Activeer "Deduplicatie op transaction_id"
Stel een deduplicatie window in (bijv. 5 minuten)
Stap 4: Verifieer de fix
Na implementatie:
Test met echte aankoop (of test mode)
Check GTM Preview mode - tag mag maar 1x vuren
Wacht 24-48 uur
Run nieuwe AdPage Validation - duplicates moeten verdwenen zijn
Acceptabele duplicate rates
Niet alle duplicates zijn problematisch. Hier zijn richtlijnen:
Event Type | Acceptabel | Aandacht nodig | Kritiek |
|---|---|---|---|
Purchase | < 1% | 1-5% | > 5% |
Add to Cart | < 5% | 5-15% | > 15% |
Begin Checkout | < 3% | 3-10% | > 10% |
Page View | < 10% | 10-20% | > 20% |
Belangrijk: Een paar duplicates bij weinig gebruikers is normaal (bijv. 10 duplicates bij 3 gebruikers). Het wordt pas problematisch bij systematische patronen (bijv. 18% van alle purchases).
Veelgestelde vragen
Zijn alle duplicates slecht?
Nee. Sommige "duplicates" zijn legitiem:
Gebruiker koopt 2x op dezelfde dag â 2 unieke transacties
Gebruiker voegt zelfde product 3x toe aan winkelwagen â kan gewenst zijn
De check kijkt naar duplicates binnen een 5-minuten window met dezelfde client_id, wat vrijwel altijd een tag probleem is.
Hoe snel zie ik resultaat na de fix?
GTM wijzigingen: Direct na publiceren
Validation rapport: Run een nieuwe validatie na 24-48 uur data
Platform data (GA4, Meta): 24-72 uur vertraging
Kan ik historical data corrigeren?
Helaas niet automatisch. Opties:
Noteer de periode met duplicate issues
Pas handmatig aan in rapportages
Gebruik de gecorrigeerde data vanaf fix-datum
