Your GA4 check passed. So why is the data still wrong?

Search for "ga4 check" and page one is unanimous. Google's own documentation on verifying an implementation. A handful of free checker tools that scan a URL and report whether the tag loads. Tutorials on opening DebugView or searching the page source for a measurement ID. Every result answers the same question: is Google Analytics installed and firing?

That is a real question, and the answer matters. It is also the easy half. Every account in the four cases below would have passed every one of those checks. The tag was present. Events were recording. Dashboards were populated and nothing was red. The data was still wrong, and in each case it was wrong in a way that was quietly costing money.

I run a measurement audit at the start of most engagements, and GA4 is one layer of it, sitting between the platforms that collect data and the platforms that spend on it. What follows is what that audit actually finds once the presence check is out of the way.

A completion event wearing a purchase event's name

The first account was a Shopify store selling a configurable product. A third-party customization app let customers build what they wanted before buying, and when a customer finished configuring, the app fired a completion event. Somewhere in the wiring, that event had been mapped to the purchase event. On top of that, purchases were double-counting.

Every presence check passed. The pixel was installed, the purchase event fired, and the platform reported a strong return. It was strong because the event it was counting happens far more often than a purchase and was counted twice when a purchase did happen. The channel looked like the best performer in the account, earned more budget, and spent it finding more people who configured a product and left.

GA4 was installed on the same store and was not configured properly either. Present is not configured. Firing is not correct. I wrote that case up in Your Meta pixel was already installed. That was the problem.

Everything counted except the purchase

The second account was an ecommerce store on a different platform, and I will leave it at that. By the usual checklist, the measurement setup was thorough. Every meaningful action on the site was an event in GA4: newsletter signups, newsletter page views, account signups, add to cart, purchase. All of it was passed to Google Ads.

In Google Ads, everything counted as a conversion except the purchase. The one event that pays the business was the one event not set to count. Smart Bidding did what it does with the signal it was given. Newsletter signups are plentiful and cheap compared with purchases, so the bidding found more of them, cost per conversion fell, the conversion count rose, and every report looked healthy. The account was efficiently buying newsletter signups.

A GA4 check would have found a property that was, by any reasonable standard, well instrumented. The failure was not in GA4. It was in what happened to GA4's events after they left. That case is the second half of Your campaigns bid on the signal you send, not the one you think you send.

A cross-domain list that nobody had accepted

The third account was a Shopify store with a $300-plus average order value. It passed every check you would normally run. Consent mode green, purchases recording, enhanced conversions enabled. By every dashboard signal, tracking was healthy.

The Google tag's cross-domain configuration was empty. Not misconfigured. Empty. The domains Google had detected were sitting there as suggestions and nobody had ever clicked accept. The fix took two clicks, and the leak had been running since the tag was installed.

What made it invisible is that the conversion does not disappear when the click ID drops at a domain hop. Google fills the gap with modeling, so a measured conversion quietly becomes a modeled one. Totals look continuous while the share of them you can actually trace to a click erodes. In that account, ad-involved purchases averaged around seven days and around three touchpoints, so each purchase crossed the domain boundary several times, and the odds of at least one drop compounded with journey length. That is The two-click fix hiding in your Google tag.

The surface you are checking with is not the ledger

The fourth case is the one that reframes the other three. On a DTC brand I work with, GA4 captured roughly 81.5 percent of platform-of-record revenue across a sixteen-month window. Nothing was broken. Consent loss, blocked scripts, and ordinary measurement attrition took the rest. A GA4 check would pass this property every day of the year.

The finding is not that 81.5 percent is bad. It is that a count quoted from GA4 without its capture rate attached is a number nobody can act on. The same property attributed 7.4 percent of its recorded revenue to email pooled across those sixteen months, with a monthly range from 0.0 to 23.9 percent. A surface whose share swings from zero to nearly a quarter by month is not a stable input to a budget decision, and an email platform claiming 25 to 30 percent of revenue year-round was scoring its own work with its own referee.

The resolution was a role assignment, not a better attribution model. Shopify is the platform of record. GA4 is the cross-channel comparison layer, directional, and never quoted for a count without its capture rate. Google Ads and Meta are optimization instruments that steer their own bidding and are the wrong input for a cross-channel budget. I laid that out in Every surface claims the credit. The budget is still due.

What the four have in common

None of them were detectable from inside GA4. Each one needed GA4 held up against something else: the app that fired the event, the Google Ads conversion settings, the tag's domain list, the order ledger. A checker that only looks at the property cannot see any of them, because the property was fine.

All of them produced healthy dashboards. That is the part that keeps them alive. A broken tag gets fixed in a week because someone notices the graph fell off a cliff. A tag that fires correctly into the wrong mapping, the wrong conversion set, or an incomplete domain list can run for a year with every chart trending up.

All of them were cheap to fix and expensive to carry. Two clicks. One event mapping. One conversion toggle. One capture-rate footnote. The cost was never the fix. It was the months of budget steered by the wrong number before anyone looked.

All of them required knowing what to hold GA4 against. That is the real difference between a GA4 check and a measurement audit. The check asks whether the tag is there. The audit asks whether the number it produces agrees with the number that pays you, and when it does not, which one is lying and by how much.

If your GA4 property passes every check and you are still not certain what the conversion column is made of, that is the work behind my analytics and reporting engagements, and it starts by reading the property against the ledger. Get in touch.

About the author

I'm Mark Henderson, a paid media specialist who does the analytics work to back it up. I've spent 20+ years running paid media and measurement for ecommerce and multi-location service businesses, including growing one ecommerce operation from $500K to $4.8M in annual revenue. I'm based in Charlotte, work with clients nationally, and you can find more of my background on the About page or on LinkedIn.