Why Your GA4 Funnel and Your Revenue Report Disagree

Nothing errors. The report renders, the percentages look plausible, and a team spends a quarter optimising a step that was never the problem. Here is how the gap opens and how to find which cause is yours.

Kissmetrics Editorial

|11 min read

A GA4 funnel counts users, and unless you send a User-ID, a GA4 user is one browser on one device. Your revenue report counts people who bought. Those are different denominators, so the two numbers can both be correct and still disagree by a wide margin. Almost every reconciliation exercise that starts with “the funnel must be broken” ends with the discovery that it was measuring something else.

This is the single most expensive misunderstanding in web analytics, because it is invisible. Nothing errors. The report renders, the percentages look plausible, and a team spends a quarter optimizing a step that was never the problem. What follows is how the gap opens, how to work out which cause is yours, and what changes when the funnel is scoped to a person instead.

Stay ahead in analytics and growth

The most important reads on measurement, retention and revenue, in five minutes a week, in a free email. Already read by 10,000+ operators and founders.

No spam. Unsubscribe in one click.

I.The gap is not a bug, it is the unit of measurement

Two reports disagree because they count different things. Until you name the unit, no amount of tag debugging will close it.

A.What a GA4 funnel is actually counting

Open Funnel exploration in GA4, drop in four steps, and the report tells you how many users completed each one. The word users is doing a lot of work there. Steps can happen across visits, anywhere in the date range, but a GA4 user is a browser on a device, identified by a cookie, unless your site sends a User-ID when people sign in.

So a person who views a product on their phone at lunch, reads reviews on a tablet that evening, and buys from a laptop on Thursday is three users. Between them they did every step in your funnel, and as far as the report is concerned none of them completed it.

The same shoppers, counted two ways

Funnels view
Product viewed
100100%
↓ 26% drop
Added to cart
7474%
↓ 45% drop
Checkout started
4141%
↓ 71% drop
Purchased, counted per device
1212%
Purchased, counted per person
2929%
Illustrative, not measured. The shape is the point: the last two rows are the same purchases. The only thing that changed is whether the steps had to happen on one device.

The longer and more multi-device the journey, the wider the gap gets. An impulse purchase on one phone closes in one visit and the two numbers nearly agree. A B2B trial that takes three weeks and two devices will show a funnel conversion rate that bears no relationship to the revenue report, and the gap will grow every time you improve the top of the funnel on one device while people buy on another.

B.Why this survives so long unnoticed

Broken tracking announces itself. A tag that stops firing produces a cliff in a chart and somebody files a ticket. A scope mismatch produces a plausible number, and plausible numbers are never investigated.

The usual trigger for finally looking is finance. Someone notices that the funnel says 300 purchases and the billing system says 640, and the analytics team is asked to explain a discrepancy that was there all along. By then a quarter of optimization work has been aimed at the wrong step.

II.Four reasons the numbers separate, in the order to check them

Two of these cost nothing to rule out. Check those first, because the other two are engineering work.

A.Users counted per device, and the window that cuts journeys in two

The first cause is the one above. The second is subtler and compounds it: the same browser does not stay the same user forever. Clear cookies, switch to a private window, or browse in Safari, which limits cookies set by scripts to seven days, and a returning visitor arrives as someone new.

Then there is the window. The funnel only counts steps inside the date range you picked, and inside any time limit you set on a step with Within. A journey that starts on the last day of the range and finishes the day after shows up as a drop-off.

An offsite payment page does not break the funnel by itself, because the visitor comes back on the same browser. It can still hand the purchase to the payment provider as a referral, unless you list the provider as an unwanted referral in GA4.

B.Open versus closed funnels, and event ordering

A closed funnel requires people to enter at step one and pass through in order. An open funnel lets them enter anywhere. The default in GA4 exploration is closed, which is usually not what a real journey looks like.

Two things break closed funnels routinely. Returning customers skip steps, arriving from an email straight into checkout without hitting the product page inside the date range. And events that fire in an unexpected order, which is more common than teams expect: an add_to_cart that fires on page load for a pre-filled basket will land before the view_item, and the sequence test fails on a journey that plainly happened.

Which cause, and what it looks like

Diagnosis view
SymptomLikely causeCost to check
Gap grows with multi-device journeysUsers counted per deviceFree
Purchases missing for returning customers onlyClosed funnel, skipped stepsFree
Step 1 much larger than any other report saysEvent fires on load, not on actionLow
Sharp loss at the payment step specificallyOffsite redirect or blockerMedium
Totals low across every step by a similar ratioConsent gate or ad blockerMedium
Numbers change when you re-run the same reportSampling or thresholdingFree to confirm
Work down the list. The first two are settings, not code, and between them they explain most of the gaps we see.

C.Data that never arrived

The fourth cause is loss, and it is the one people reach for first even though it is usually the smallest. Ad blockers, consent gates and tracking prevention all remove some share of events. What matters for a funnel is that the loss is not evenly distributed.

It concentrates on the steps furthest down, because those pages are more likely to sit behind a redirect, load a payment iframe, or run after a consent decision that a visitor has by then had time to decline. A uniform 12% loss would leave your conversion rate unchanged. A loss that is 5% at the top and 20% at the bottom invents a drop-off that never happened. Our breakdown of ad blocker impact covers how to size your own share, and GA4 data thresholds covers the reporting side of the same problem.

If you want to know what your own tracking is actually recording rather than what the report claims, put your site into Kissmetrics and it sets the tracking up itself in about a minute. Free, no card, and you can compare it against GA4 side by side.

III.Diagnosing it, and what a person-scoped funnel changes

Reconcile against one number you trust absolutely, then make the person the unit.

A.The reconciliation that settles it

Start from the bottom, not the top. Take one day, and compare the count of your final funnel step against the count of orders in your billing system. Billing is the only number in this exercise that is not an estimate.

If the final step already disagrees with billing, you have a data loss problem and no amount of funnel configuration will fix it. If the final step matches billing but the funnel conversion rate looks wrong, the loss is in the definition, and you are looking at scope or ordering. That single comparison splits the problem in half in about ten minutes.

Then widen the date range, remove any Within limits, and re-run. If the numbers move materially, part of the gap is journeys the window cut in two. Most of what remains is people who switched devices, and you have confirmed it without writing any code.

1
day
enough to diagnose
2
numbers
final step against billing
4
causes
and the split rules out half
What the reconciliation tells you, depending on where the numbers stop agreeing.

B.What changes when the unit is a person

Every cause above except outright data loss comes from the same root: the unit of analysis is a browser on a device, and that is an artifact of measurement rather than a thing your customer did. Nobody decides to be three users.

Kissmetrics resolves every event to a person across devices and months, from the moment they sign up or give an email, so a funnel step counts when the human did it, on whichever device. The three-week B2B journey and the two-device purchase are one record. The funnel shows people who did the steps in order, and how many did the last step at all, so a skipped or reordered step is visible.

It also removes the reconciliation ritual. When the funnel and the revenue report are built on the same person-resolved events, the answer to “why do these disagree” is that they do not. And any drop-off in the funnel opens as the list of people who stopped there, which is the thing you actually wanted when you asked why step three was losing everybody.

There is a real trade. A person-scoped funnel will not tell you about single-visit behavior, and sometimes single-visit behavior is exactly the question, particularly for a landing page or a checkout flow you have deliberately built to close in one sitting. For that, a short Within limit in GA4 is fine. Our complete guide to funnel reports covers when each is the correct unit.

§Verdict

When a funnel report and a revenue report disagree, the instinct is to assume something is broken. Usually nothing is. Two systems are counting different denominators, and both are right about the thing they are counting.

Reconcile the final step against billing first. It takes ten minutes and it tells you whether you have a data problem or a definition problem, which are fixed by completely different teams. Then decide, deliberately, whether the question you are asking is about a visit or about a person, because that choice is the funnel.

If you want to go further

Funnel Reports: The Complete Guide to Building and Analyzing Conversion Funnels

How to use funnel reports to track conversion by step, find the drop-off point, and optimise the customer journey one stage at a time, with examples.

GA4 Conversions Don't Match Google Ads: Here's Why and What to Do About It

Why GA4 and Google Ads report different conversion counts: the four mechanisms behind the gap, why consent modelling makes it drift, and which number belongs in which decision.

Revenue

Revenue is the total income generated by a business from the sale of goods or services before any expenses are deducted.

Data hygiene in Kissmetrics

What the tracking actually recorded on your site, and which events GA4 would have dropped or duplicated, so the number in a report can be trusted before it is compared.

ga4 funnelfunnel analysisconversion funnelga4 troubleshootingsession scopefunnel explorationdata discrepancy
Kissmetrics

Try it on your own data for free.

Kissmetrics builds the funnel with the person as the unit, so a three-week journey across two devices counts once and the reconciliation stops being a monthly ritual.