Problemen oplossenGA4
GA4 purchase-event vuurt twee keer op Shopify: diagnose
Telt GA4 twee aankopen voor één Shopify-bestelling? Vind de tweede afzender — app, pixel, snippet of serverhit — en controleer het transaction_id.
- Gepubliceerd
- Gecontroleerd
Diagnose
- Platform GA4
- Gebruikelijke oorzaak Twee afzenders vuren een purchase af voor dezelfde bestelling zonder overeenkomend transaction_id.
- Oorzaken, op volgorde 6
- Hoe je het diagnosticeert 7
Eerste antwoord gratis, binnen één werkdag. Beschrijf je situatie
Klinkt bekend?
Het symptoom
De korte versie
Direct antwoord
GA4 telt één Shopify-bestelling twee keer wanneer twee onafhankelijke afzenders elk een purchase voor die bestelling afvuren en GA4 ze niet kan matchen. Matchen vereist hetzelfde, niet-lege transaction_id aan beide kanten. Het waarschijnlijke paar is de Google & YouTube-app en een custom pixel — maar elk tweede pad heeft hetzelfde effect.
GA4 dedupliceert purchase-events die hetzelfde niet-lege transaction_id delen, en voegt events samen die een leeg ID delen. Een ontbrekend ID is niet neutraal: het laat niet-gerelateerde bestellingen samenvallen. Twee afzenders die hun eigen ID genereren, of het leeg laten, worden apart geteld.
Waar je moet kijken
Oorzaken, op volgorde
GA4 telt bestellingen dubbel6 oorzaken
-
De Google & YouTube-app en een custom pixel sturen allebei
purchaseBeide mappen hetcheckout_completed-event van Shopify naar een GA4-purchase, dus één bestelling levert twee events op. Elk kiest zijn eigentransaction_id, en wanneer de strings verschillen kan GA4 ze niet matchen. -
Een tweede afzender waar je geen rekening mee hield
Een gewone snippet in een themabestand kan de nieuwe checkout niet zien, maar een app-blok, een theme app extension of een door een app geïnjecteerde tag kan nog steeds draaien op de orderstatuspagina, en code van vóór de migratie kan nog live staan. Twee pixels in Customer Events hebben hetzelfde effect. -
De orderstatuspagina die opnieuw afgaat bij herladen of terugkeren
Als de purchase bij het laden van de pagina afgaat in plaats van één keer per bestelling, stuurt het verversen van de pagina of het opnieuw openen van de orderstatuslink uit een e-mail nog een event. Zonder een “al verzonden”-controle lijkt elk bezoek een nieuwe aankoop. -
transaction_iddat niet overeenkomt, of helemaal ontbreektDe ene afzender gebruikt misschien het bestel-ID, de andere de bestelnaam of het checkout-token — GA4 matcht op de exacte string, dus dat zijn twee bestellingen. Een leeg ID is erger: GA4 dedupliceert alle aankopen die het delen. -
Twee metings-ID’s of twee GTM-containers
Een tweede Google-tag of container kan dezelfde purchase twee keer naar dezelfde property routeren, of hem van binnenuit de pixel doorsturen naast één op de storefront. -
Server-side forwarding plus de browserhit, zonder gedeelde deduplicatie
Een order-webhook die via een servercontainer of Measurement Protocol wordt doorgestuurd, stuurt een tweede purchase voor bestellingen die de browser al rapporteerde — prima totdat hij een andertransaction_iddraagt, of geen.
7 stappen
Hoe je het diagnosticeert
Werk van het event terug naar de afzender: tel hoeveel purchase-events GA4 voor één bekende bestelling ontving, lees het transaction_id op elk ervan en vind dan elk systeem dat er een gestuurd kan hebben. Eén testbestelling bewijst de duplicatie; de lijst met afzenders vertelt je wat je moet uitzetten.
- Som elk pixel op dat een purchase kan sturen. Open in het Shopify-beheercentrum Settings → Customer events en lees de geregistreerde pixels. Twee pixels die zich beide abonneren op
checkout_completedenpurchasesturen, zijn je eerste antwoord. - Controleer of de Google & YouTube-app er één van is. Controleer in Settings → Apps and sales channels of het kanaal Google & YouTube is geïnstalleerd. Als dat zo is en een custom pixel stuurt ook een purchase, dan moet één van de twee worden uitgezet.
- Plaats een testbestelling in debug-modus. Open in GA4 Admin → DebugView en rond een echte checkout af op een apparaat in debug-modus. Twee
purchase-rijen voor één bestelling zijn de bevestiging; open beide en noteer elktransaction_id. Reports → Realtime toont dezelfde aankomsten zonder debug-modus. - Vergelijk de twee ID’s en herlaad dan de pagina. Klap beide events open in DebugView en vergelijk
transaction_id. Identiek en niet leeg betekent dat deduplicatie ze had moeten samenvoegen en dat er iets anders mis is; verschillende of lege waarden betekenen dat GA4 twee bestellingen kreeg. Herlaad daarna de bedankpagina en navigeer terug: een nieuwe purchase bij elk bezoek wijst op een trigger bij paginaladen zonder “al verzonden”-controle. - Tel aankopen per
transaction_idin een Exploration. Open in GA4 Explore → Free-form, stel de dimensie in op Transaction ID en de metriek op Event count, en filter op eventnaam gelijk aanpurchase. Elk transactie-ID met een telling boven één is gedupliceerd. - Zoek een tweede tag of container. Zoek in de broncode van de storefront naar de identifiers van de Google-tag en de container; meer dan één is het benoemen waard, en GA4 → Admin → Data Streams toont de legitieme bestemming. GTM Preview ziet storefront-tags, maar kan zich niet vastmaken binnen de pixel-sandbox, dus beoordeel de pixel via DebugView.
- Reconcilieer een afgesloten dag aan bestellingen. Exporteer een dag via Shopify → Orders → Export en haal event-data van GA4 op met eventnaam en
transaction_iduit een Exploration-export of BigQuery. Match per bestelling: een paar verdubbelde bestellingen per dag is dezelfde bug als een verdubbeling in de hele winkel.
Signaal en oplossing
Beslissingstabel
Koppel het signaal uit DebugView aan de afzender die het impliceert, en maak dan de kleinste wijziging die één purchase-pad overlaat.
| Oorzaak | Signaal dat je ziet | Oplossing |
|---|---|---|
| Google & YouTube-app plus een custom pixel | Twee purchase-events voor één bestelling, met verschillende transaction_id-waarden | Houd één pad aan: schakel de purchase van de app of die van de pixel uit en test opnieuw |
| Achtergebleven snippet of extra pixel | Meer dan één pixel in Customer Events, of een door een app geïnjecteerde tag op de orderstatuspagina | Verwijder de overbodige afzender; houd één abonnement dat purchase afvuurt |
| Herladen van de orderstatuspagina | Een nieuwe purchase telkens wanneer de bedank- of orderstatuspagina laadt | Vuur één keer af vanuit checkout_completed en registreer dat de bestelling al is gerapporteerd |
transaction_id komt niet overeen of is leeg | Verschillende ID’s op de twee events, of één leeg | Stuur dezelfde niet-lege waarde — het Shopify-bestel-ID — op elk pad |
| Twee metings-ID’s of containers | Meer dan één Google-tag of container in de broncode van de storefront | Verwijder de verouderde tag of container; houd één bestemming per event |
| Serverhit plus browserhit | Een serverpurchase draagt een ander of ontbrekend transaction_id | Stuur het transaction_id van de browser door, of stop de dubbele serverzending |
Een notitie van Daniilvoordat je beslist
Los je het zelf op of schakel je hulp in?
De tweede afzender vinden is meestal beheerwerk: de Customer Events-lijst plus DebugView is genoeg om de oorzaak in de meeste winkels te benoemen. Hem verwijderen is waar code begint, en het risico dat je het pad dat je aanhoudt kapotmaakt.
Welke afzender je aanhoudt is een kwestie van afweging — meestal degene wiens parameters en consent-gedrag je vertrouwt, uitgezet in plaats van verwijderd zodat hij hersteld kan worden. Een overbodige pixel verwijderen, een abonnement herschrijven zodat het niet twee keer kan afgaan, of een gedeeld transaction_id naar een servercontainer laten doorlopen is ontwikkelwerk.
Doe het in die volgorde: stop de duplicatie, draai opnieuw één testbestelling in DebugView om één purchase te bevestigen, en reconcileer de volgende dag tegen Shopify. Als de duplicatie aanhoudt nadat je hebt bevestigd dat precies één pad afgaat, dan overspant de ID-logica meerdere systemen — dat is GA4-implementatiewerk, geen instellingsschakelaar.
— Daniil
Volgende stap
Als de zelfcheck geen uitsluitsel geeft.
De checks hierboven vinden de oorzaak in de meeste winkels. Overlappen er twee of meer, dan is een afstemming per bestelling sneller dan nog een middag dashboards vergelijken.
Tracking Health Check
- Prijs
- EUR 375
- Toegang
- Alleen-lezen
- Doorlooptijd
- oordeel twee werkdagen na de kickoff
Wat de afstemming laat zien voor dit symptoom.
Een Health Check stemt dit symptoom bestelling voor bestelling af met je Shopify-bestellingen, zodat de oorzaak een feit uit je eigen data is en geen gok op basis van een dashboard. Echte cijfers voor dit symptoom zijn nog niet gepubliceerd — vraag om het voorbeeldrapport.
Volg de bestelling. Vergelijk daarna het bewijs.
- Echte bestellingBestel-ID, bedrag, valuta
- Browser- / servereventsToestemming, event-ID, aflevering
- GA4 / advertentieplatformsOntvangen events en rapportage
- Gegevens afstemmenVergelijk IDs, perioden en definities
Vragen
Vragen die dit symptoom oproept
Waarom toont GA4 meer aankopen dan Shopify bestellingen heeft?
Omdat twee systemen dezelfde bestelling rapporteren en GA4 niet kan zien dat het hetzelfde event is. GA4 dedupliceert purchase-events die hetzelfde niet-lege transaction_id delen, dus wanneer de twee afzenders verschillende waarden kiezen — of één een lege string stuurt — worden beide geteld. Controleer hoeveel purchase-events er voor één bekende bestelling binnenkwamen, niet de totalen van de maand.
Dedupliceert GA4 aankopen niet automatisch?
Jawel, maar alleen onder een voorwaarde die je moet vervullen: de purchase-events moeten hetzelfde niet-lege transaction_id dragen. Automatische deduplicatie is een vangnet voor wanneer hetzelfde ID twee keer aankomt, geen oplossing voor twee systemen die hun ID's onafhankelijk genereren. Een leeg transaction_id is erger dan helemaal geen ID, omdat GA4 niet-gerelateerde aankopen die het delen samenvoegt.
Kan ik beide afzenders laten draaien en op deduplicatie vertrouwen?
Alleen als elk pad altijd exact hetzelfde transaction_id stuurt, wat zeldzaam is wanneer één afzender een door de leverancier beheerde app is waarvan je het ID niet kunt beheren. Eén purchase-pad draaien is het betrouwbare antwoord; een tweede pad is een permanente kans dat de twee ID's na een update uit elkaar lopen.
Laten Tag Assistant of GTM Preview de duplicatie zien?
Niet betrouwbaar. GTM Preview kan zich niet vastmaken binnen de pixel-sandbox van Shopify, dus het toont alleen tags die op de pagina draaien en het pixel-pad blijft onzichtbaar voor de tool. Behandel DebugView en het Realtime-rapport als het primaire bewijs, en gebruik Preview alleen voor de containers die het wél kan zien.
Lees verder, of check een verwant symptoom.
Alle symptomen- Dienst Herstel van GA4-ecommerce tracking voor Shopify
- Artikel GA4 op Shopify: de Google & YouTube-app versus een custom pixel
- Artikel Het GA4 purchase-event op Shopify oplossen (stap voor stap)
- Artikel Waarom de omzet van GA4 niet overeenkomt met Shopify-bestellingen
- Kennisbank Wat is event_id? (deduplicatie van Meta Pixel + CAPI)
- Kennisbank Wat is orderreconciliatie in tracking-audits?
Hoi, ik ben Daniil.
Ik werk met je samen, van probleemdefinitie tot implementatie en overdracht. Je praat met degene die het werk doet. Ik werk in het Engels en het Russisch.
Geprobeerd en kom je er nog niet uit?
Beschrijf je taakHet eerste antwoord is gratis, binnen één werkdag. Of schrijf rechtstreeks: next@taskfordaniel.com