Launch Offer2 free audits with all 229 checks. No credit card required.Start free audit

GA4 Duplicate Transactions: How to Detect and Fix Them (2026)

Intermediate

How do duplicate transactions happen in GA4?

Duplicate transactions occur when the GA4 purchase event fires more than once for the same order. The three root causes: (1) Thank-you page refresh — a user refreshes the order confirmation page, firing the purchase event again; (2) Multiple triggers — both the URL-based page view trigger AND a custom event trigger fire the purchase event on the same page load; (3) Email confirmation link — the order confirmation email links back to the thank-you page URL, and a returning user click fires the purchase event again. Impact: GA4 reports 2–5x actual revenue.

Google Ads Smart Bidding learns from inflated conversion counts and develops distorted bidding strategies. This is one of the most commercially damaging data quality problems in GA4.

Detecting duplicates: the BigQuery query

Interpreting results:

  • occurrence_count > 2: severe duplication — page loads are being tracked multiple times, not just once
  • duplicate_revenue: the total amount of false revenue over the query period
  • over_reporting_pct: how much this specific transaction inflated revenue

Calculating the scale of the problem

If duplicate_pct > 5%, you have a significant duplicate transaction problem.

Fix 1 — sessionStorage deduplication (client-side)

Limitation: sessionStorage is cleared when the browser tab closes. If a user opens a new tab to the thank-you URL (via email link), sessionStorage is empty and the purchase fires again.

Fix 2 — Server-side flag on the order record (most reliable)

Set a flag on the order record in your database after the first GA4 push:

Want to see which hidden implementation gaps are affecting your GA4 data quality?

WooCommerce (PHP):

Shopify: Use analytics.subscribe('checkout_completed', ...) Custom Pixel event — fires exactly once per order, not on subsequent page views.

Fix 3 — Removing duplicate triggers in GTM

Check for double-trigger setups in GTM:

In GTM, look for any GA4 Event tag with event name = purchase that has:

  • Trigger: All Pages (or a broad page view trigger) AND
  • Trigger: Custom event purchase from the dataLayer

If both triggers are active on the order confirmation page, they fire simultaneously → duplicate purchase. Remove the page view trigger; keep only the Custom Event trigger.

Cleaning historical duplicate data

GA4 doesn't offer a way to selectively remove specific event instances from reports. For historical analysis after fixing the duplication bug:

In BigQuery (deduplicated purchase report):

Use this query in Looker Studio for historical revenue analysis that correctly deduplicates.

FAQ: GA4 Duplicate Transactions: How to Detect and Fix Them

What should a team validate first when ga4 duplicate transactions: how to detect and fix them appears?

Reproduce the problem in the live implementation, isolate whether it is scoped to one report or flow, and compare it against at least one secondary source before changing the setup.

How do I know whether the fix actually worked?

You need before-and-after evidence in the browser and in the downstream report. A clean-looking dashboard without validation is not enough.

When should this become a full GA4 audit instead of a quick fix?

If the issue touches attribution, consent, revenue, campaign quality, or data trust for more than one workflow, it is usually safer to audit the surrounding implementation than patch only the visible symptom.

Run a GA4 audit before ga4 duplicate transactions: how to detect and fix them spreads into reporting decisions

Use GA4 Audits to surface implementation gaps, broken signals, and the next fixes to prioritize before the issue becomes harder to trust or explain.

These findings come from auditing thousands of GA4 properties. See how your property compares

GA4 Audits Team

GA4 Audits Team

Analytics Engineering

Specialising in GA4 architecture, consent mode implementation, and multi-layer audit frameworks.

Share