If you are a marketer or analyst, you have likely noticed an increasing number of people reporting duplicate events in their Google Analytics 4 (GA4) DebugView. This is a common frustration, and while sometimes the reasons are obvious, they can often be trickier than initially anticipated.
If you are seeing events fire twice—or even more—in your GA4 DebugView, you are dealing with inconsistent data that can dramatically inflate metrics like pageviews or purchases, leading to flawed reporting.
We have collected the most common causes and detailed solutions you will need to fix these Duplicate Events in Google Analytics 4.

The Four Main Categories of Duplication

The root cause of duplicate tracking typically falls into one of these four categories:

  1. Multiple tracking snippets:

    This involves running hardcoded GA4 and Google Tag Manager (GTM) simultaneously.

  2. Tag configuration issues:

    Problems with GTM triggers or misconfigurations in the GA4 interface (like the Create event feature).

  3. Website/platform specifics:

    Issues inherent to technologies like Single-Page Applications (SPAs) or how ‘Thank You’ pages handle reloads.

  4. External interference:

    Overlaps stemming from the Measurement Protocol or Enhanced Measurement settings.

Below, we detail Ten common solutions to restore accuracy to your data.

10 Detailed Solutions to Fix Duplicate GA4 Events

1. Double Tagging: Hardcoded GA4 and GTM Installed Together

One of the most frequent reasons for duplicates is double tagging. This happens when you install GA4 via GTM (the recommended way, as it offers more flexibility) while simultaneously having some hardcoded GA4 tracking code added directly to the website’s source code. The result is that if a visitor performs an action, such as starting a checkout, two identical events are sent to GA4: one from GTM and one from the hardcoded snippet.
How to Diagnose: You can check for hardcoded code using browser developer tools. Open the Sources tab and use the search function (CTRL + SHIFT + F, or Command + SHIFT + F on Mac). Search for the event name (e.g., add_to_cart) that is being duplicated. If you see the code containing gtag, it confirms the event is being sent directly from the website’s code.

Alternatively, you could temporarily remove the GTM container entirely and check if you are still receiving GA events; if you are, then hardcoded GA is present.
The Fix: You must audit your entire setup, remove unnecessary hardcoded GA4 snippets, and ensure that all tracking is configured solely within Google Tag Manager. Also, verify that GA4 wasn’t installed through a plugin like Google Site Kit.

2. Duplicate DataLayer Events

If you observe duplicate events (e.g., add_to_cart) in your GA4 Debug View, the issue might stem from faulty implementation code. Due to a bug in a developer’s code, the same dataLayer.push might be activated multiple times when a visitor clicks a button.
The Fix: You will need to ask a developer to correct this problem and ensure the event is fired only once per interaction.

3. Misusing the “Create event” Feature in Google Analytics 4

This problem occurs when users incorrectly use the “Create event feature” found under Admin > Events in the GA4 interface. If you are already sending an event (like add_to_cart) from GTM to GA4, you should NOT also create an event with the same name in the GA4 interface.
If you create a rule that matches an existing event name and copies its parameters, GA4 will generate a new event that is identical to the one you already sent, leading to duplicates.
The Fix: If this rule has been created, you must delete it. Go to Admin > Events > Create event, select the specific rule, click the three dots in the top-right corner, and choose Delete. Note that this action only stops new duplicates; you cannot fix historical data.

4. The Same GTM Container is Added Multiple Times

A simple oversight by a developer can lead to the same GTM container snippet being accidentally added to the website twice.
The Fix: If this is the cause, you must remove the duplicate container installation. Crucially, perform this diagnosis while the GTM preview and debug mode is closed, as the preview mode itself causes multiple GTM containers to be shown.

5. Poor Configuration of Tag’s Triggers

If your event tag is firing more often than intended, you have a trigger misconfiguration in GTM.
How to Diagnose: Use the GTM Preview and Debug mode. Clear the stream and perform the action that causes the duplicate event. In the GTM Preview mode Summary, check how many times the tag fired. If it fired twice or more, click the tag, scroll down, and examine the exact preview mode messages that caused the tag to fire. If the tag fired on an unexpected event, you must refine your trigger conditions to be more precise.

6. Ignoring Duplicate Instances of On-Page Configuration

This fix addresses “mystery pageviews” that can fire when GA4 was automatically connected to an existing Universal Analytics (GA3) property using a Google Tag.
The Fix: Go to GA4 > Data Streams > Choose your data stream > Configure tag settings > Click on Your Google Tag. Check the box that says “Ignore duplicate instances of on-page configuration (recommended)”. Although this is recommended, it often does not come enabled by default.

7. Duplication in Single-Page Applications (SPAs)

When working with Single-Page Applications, duplicates frequently arise if you implement custom “virtual pageviews” (usually pushed to the data layer by a developer) via GTM, while simultaneously having the automatic pageview tracking feature of Enhanced Measurement enabled.
The Fix: If you have custom page_view tracking, disable the automatic SPA tracking in GA4. Navigate to GA4 Admin > Data Streams, select your stream, click the cog icon in “Enhanced Measurement,” go to “Page views,” click “Show advanced settings,” and disable “Page changes based on browser history events”.

8. Incorrect Server-Side Tagging Configuration

If you utilize server-side tagging, duplicates may occur within the Server GTM (SGTM) container. Even if you receive only one GA4 request from the browser, you might have multiple GA4 tags in the server container configured to send data to the same property. This might happen if you accidentally duplicated your GA4 tag or if a custom tag (like a Measurement Protocol tag) is also sending the same event data.
The Fix: Ensure that for every incoming event request from the browser, only one tag in the server container sends that specific event data to your intended GA4 property. You can check the tid parameter in outgoing requests to confirm you are not sending data to different GA4 measurement IDs.

9. Overlap between GTM Events and GA4 Enhanced Measurement

GA4’s Enhanced Measurement automatically tracks events like outbound clicks and scroll depth (only tracking when the visitor scrolls below the 90% threshold). If you create a custom solution in GTM to track the same action (e.g., custom scroll thresholds like 25% or 50%), you must disable the corresponding feature in Enhanced Measurement.
Example: If you set up a custom GTM tag to track outbound link clicks but leave the automatic Enhanced Measurement outbound click tracking enabled, you might see two events: your custom event and the automatic click event.
The Fix: If you deploy a “custom replacement” in GTM, immediately disable the related automatic tracking feature in GA4’s Enhanced Measurement settings.

10. Visitor Reloads or Revisits a Thank You Page

If an event (such as a purchase) fires based on a page load trigger on a “Thank You” or order confirmation page, a visitor reloading or revisiting that page will cause the tag to fire again.
The Fixes: There are several solutions:
Use a Cookie: Store a cookie (e.g., gtm_user_converted) upon the first visit, and update the trigger condition to prevent the tag from firing if that cookie exists.
Developer Fix: If the event is pushed to the data layer, ask the developer to handle the logic in the code, ensuring the dataLayer.push does not happen again if the page is revisited.
Use Transaction ID (for purchases): If you are tracking purchases, make sure the transaction_id is sent with the event. GA4 is designed to ignore duplicate purchase events that share the same transaction ID from the same user.

Comprehensive GA4 Duplicate Event Troubleshooting

Comprehensive GA4 Duplicate Event Troubleshooting – Incisive Ranking

Troubleshooting Checklist: Where to Look First

If you are facing Duplicate Events in Google Analytics 4 (GA4), systematically check these four common culprits first:

  1. Double tagging:

    Are you running both hardcoded gtag.js and GTM for GA4? Remove the hardcoded implementation if using GTM.

  2. GTM Trigger misconfiguration:

    Did your GA4 event tag fire multiple times in GTM Preview mode for a single user action? Check the ‘Messages Where This Tag Fired’ section and make your trigger conditions more specific.

  3. GA4 ‘Create Event’ feature:

    Did you mistakenly create an event in the GA4 interface (Admin > Events > Create event) with the same name as an event you are already sending via GTM? Delete the rule in the GA4 interface.

  4. Enhanced measurement overlap:

    Are you sending a custom event via GTM (e.g., for scrolls or outbound clicks) without disabling the corresponding automatic tracking in GA4’s Enhanced Measurement settings? Disable the relevant Enhanced Measurement option.

    In my experience, the most common issues are conflicts between hardcoded events vs GTM and misconfigured GTM triggers. If you are new to these topics, gaining a deeper understanding of Google Tag Manager configuration is crucial for accurate tracking.
    Dealing with duplicate events can feel like having two metronome beats slightly out of sync—you have to meticulously adjust the mechanisms (GTM triggers, Enhanced Measurement settings, or the base code) until both outputs align perfectly with the single user action.