Duplicate Events Detecteren en Oplossen - Troubleshooting Guide

Bewerkt

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 trytagging_purchase

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 fixen

  • trytagging_add_to_cart → Medium prioriteit

  • trytagging_begin_checkout → Medium prioriteit

  • Andere 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:

  1. Maak een nieuwe variabele JS - Purchase Fired Flag:

function() {
  return window._purchaseFired || false;
}
  1. Maak een Custom HTML tag die na de purchase tag vuurt:

<script>
  window._purchaseFired = true;
</script>
  1. Voeg een blokkerende trigger toe aan je purchase tag:

    • Trigger type: Custom Event

    • Conditie: Purchase Fired Flag equals false

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:

  1. Test met echte aankoop (of test mode)

  2. Check GTM Preview mode - tag mag maar 1x vuren

  3. Wacht 24-48 uur

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

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.