TROUBLESHOOTING 8 min read

Your GA4 Conversions Doubled Overnight and Nothing Changed. Here's What Did.

LastClarity

The short answer

Duplicate GA4 events usually mean the same event fires twice from two sources: a hardcoded gtag alongside GTM, Enhanced Measurement overlapping a custom tag, or a purchase page refiring on refresh. Open DebugView, trigger the event once, and count how many times it lands.

Conversions doubled. Revenue doubled. Nobody deployed anything. The natural conclusion is that GA4 broke, and it almost never has.

What broke is that two things are now reporting the same action, and they cannot see each other.

Find it in five minutes with DebugView

Before theorising, measure. Enable GTM Preview mode (or install the Google Analytics Debugger extension), open Admin → DebugView in GA4, and perform the action exactly once.

Then count. One click should produce one event. If two identical events land two seconds apart, you have your answer, and the parameters attached to each will usually tell you which source sent which — a GTM-fired event and a hardcoded gtag event rarely carry identical parameter sets.

This takes five minutes and eliminates guessing about causes that do not apply to you.

The four causes, in order of likelihood

1. Double tagging. The GA4 tag is installed twice — typically hardcoded in the site template and deployed through GTM. Also common: a CMS plugin that injects GA4 while GTM does the same, or two GTM containers both carrying a GA4 config tag. Each installation is unaware of the other and both fire.

Check by viewing source and searching for your measurement ID (G-XXXXXXX). More than one occurrence is your bug.

2. Enhanced Measurement overlapping a custom tag. Enhanced Measurement tracks scrolls, outbound clicks, downloads, site search and video automatically. Build a custom GTM tag for any of those without turning the matching toggle off in Admin → Data streams → Enhanced measurement, and GA4 records both.

3. The confirmation page that refires. The purchase event fires on page load. A refresh is another page load. So is hitting back. Without a guard, one order can log three purchases and your revenue inflates for reasons entirely unrelated to sales.

4. Trigger misconfiguration. An All Elements click trigger that also matches a parent element. A form submission trigger firing alongside a thank-you page view. These produce duplicates that look like a tracking bug and are really a scoping bug.

SymptomMost likely causeWhere to look
Every event doubleddouble taggingpage source, count G- IDs
Only scroll / click / download doubledEnhanced Measurement overlapAdmin → Data streams → Enhanced measurement
Only purchase doubled, irregularconfirmation page refreshtransaction guard in storage
One specific click doubledtrigger scopeGTM trigger conditions
Everything doubled after going server-sidemismatched event IDsclient vs server ID generation

The server-side trap worth stating separately

If you moved to server-side GTM and conversions doubled, the usual cause is deduplication that was never actually implemented.

Deduplication requires the client and the server to send the same event ID. Generating a random ID on the client and another random ID on the server is not deduplication — the two values never match, so nothing is ever recognised as a duplicate. Generate the ID once, on the client, and pass it through.

The mental model that prevents most of these: GA4 has no idea what you intended to send. It counts what arrives. Two arrivals are two events, no matter how obvious it is to you that they describe one action.

Cleaning up afterwards

Fixing the tag stops the bleeding. It does not repair history.

GA4 has no retroactive edit. The duplicated period stays duplicated, so annotate the date range and be explicit in any reporting that spans it. If the inflated figures were already imported into Google Ads as conversions, fix those separately — Ads keeps its own counter and will not correct itself because GA4 stopped double-firing.

The one silver lining: duplication is usually a clean step change on a specific date. That makes the affected window easy to identify and easy to caveat, which is more than can be said for most measurement problems.

Where we fit, honestly

This is a tagging problem, and tagging is outside what our extension touches — we read the GA4 Data API and never write tags or containers.

What GA4 Simple View does help with is noticing. Duplication shows up as an abrupt step change rather than a trend, and with the comparison toggle on, a metric that doubled against the previous period is hard to miss on the Overview tab. Catching it in days instead of at month-end is most of the value; DebugView and GTM do the actual diagnosis from there.

Questions people also ask

Each answer stands on its own, so it still makes sense quoted somewhere else.

Why are my GA4 events firing twice?

The most common cause is double tagging: the GA4 tag is installed both directly in the page HTML and through Google Tag Manager, or through two GTM containers. Each installation fires independently, so one user action produces two events. A plugin that also injects GA4 creates the same result.

How do I check for duplicate events in GA4?

Use DebugView. Enable GTM Preview mode or the Google Analytics Debugger extension, perform the action once, and watch the event stream. If a single click produces two identical events seconds apart, you have a duplicate. DebugView shows the parameters too, which usually reveals which source sent which.

Does Enhanced Measurement cause duplicate events?

Yes, frequently. Enhanced Measurement automatically tracks scrolls, outbound clicks, file downloads, site search and video engagement. If you have also built custom GTM tags for any of those interactions and did not switch the matching Enhanced Measurement toggle off, GA4 records both.

Why does my purchase event fire twice when someone refreshes?

Because the confirmation page fires the purchase event on load, and a refresh is another load. Without a guard, every refresh or back-navigation to that page records another purchase. Fix it by writing the transaction ID to storage and refusing to fire again for an ID already sent.

Does a transaction ID automatically deduplicate GA4 events?

No. GA4 does deduplicate ecommerce purchases by transaction_id within a limited window, but that only helps if the same ID is actually sent both times. It does nothing for non-ecommerce events, and it does not help if your two sources generate different IDs.

How does deduplication work in server-side GTM?

The client and the server must send the same event ID. A common and costly mistake is generating a random ID independently in both places and assuming that counts as deduplication. The two IDs never match, so nothing is deduplicated and every conversion is counted twice.

#GTM#Duplicate Events#GA4#Conversions#Debugging

This is what we built instead

GA4 Simple View puts the numbers in this post on one screen, in one click, without building a report first.

Get the extension