The GA4 events that break without telling you
A tag that fires in your test does not mean a tag that fires for your customers.
Most GA4 tracking failures are conditional rather than total: the mobile variant of a form, the returning visitor, the booking flow that only redirects for one service type. They survive launch QA because QA tests the happy path once, on desktop, as a new visitor. Catching them requires walking each conversion path end to end in a real session, then repeating the check after a week of live traffic.
Why total failures are the easy ones
A tag that never fires gets noticed. Conversions drop to zero, someone asks, and it gets fixed the same week.
The expensive failures are partial. Conversions still arrive, the number looks plausible, and a quarter of your leads have been invisible since a form variant shipped in March.
Nothing alerts on plausible. That is the whole problem — the failure mode is designed to look like success.
The six that recur
Duplicate firing. The same user action triggers two events — a tag manager tag and a hard-coded gtag call, or a thank-you page view alongside a form submission event. Conversions inflate by an unknown and variable factor.
Broken cross-domain measurement. The visitor moves to a booking platform, payment processor or subdomain, and the session breaks. GA4 records a new session from a referral, and the conversion loses its paid attribution entirely.
Thank-you page dependence. Form submissions tracked from a redirect URL that some forms no longer redirect to. Ship one inline-confirmation form variant and that path goes dark.
Unverified primary conversions. Someone marked a phone-number click or a PDF download as a primary conversion, and Smart Bidding is now optimising toward it. The count is high, the quality is unknown, and the CRM disagrees with everything.
Call tracking double counts. The call platform reports a conversion and a click-to-call event fires for the same call. Both reach the ad platform.
Missing parameters. Events fire correctly and carry nothing useful, so they cannot be segmented by location, service line or value — the gap that makes per-location performance unmeasurable.
Why launch QA misses them
| QA usually tests | Reality includes |
|---|---|
| Desktop | Mostly mobile |
| New visitor | Returning visitors with existing sessions |
| One form variant | Variants per service, per page, per campaign |
| Same-domain flow | Booking platform, payment processor, subdomain |
| Consent accepted | Consent denied, and modelled data |
| Launch day | Every deploy after launch day |
Read the right-hand column as the actual test matrix. Almost every conditional failure lives in a row of it.
The last row is the one no implementation survives on its own. Tracking is not a project that completes; it is a thing that decays every time the site ships.
How to catch them
Walk each conversion path end to end in a real session with debug tooling open: user action, data layer, trigger, tag fire, platform receipt. Record the result in a QA document per path. This takes minutes per path and finds things reports hide for months.
Then repeat after a week of live traffic, on real segments rather than your own test session. That second pass is where the conditional failures surface.
Then keep a conversion definition register — what counts as a conversion, and where it is counted. When four systems each count something slightly different, the register is what makes the difference explicable rather than an argument.
Verification, not deployment, is the deliverable. Tags are easy to deploy and easy to deploy wrong, which is why GA4 and Tag Manager work should be scoped around proving the paths rather than shipping the container.
When the numbers still disagree
Some of the gap between Google Ads and GA4 is designed in. Different attribution models, click-date versus conversion-date, session-scoped versus click-scoped counting. That variance should be quantified, written down, and then ignored.
The rest is defects, and the two categories need separating before anyone makes a budget decision. Which differences are structural and which are broken is the first question to answer.
If four systems disagree and nobody can say which is authoritative for which decision, that is a conversion attribution audit rather than a tagging task. Fixing tags under unreconciled definitions just moves the disagreement.