Top-of-funnel channels almost always show 0.0x% last-click conversion, and the usual conclusion is that the channel doesn't work. The more common truth is that the measurement never saw the journey. In our experience a first-party pixel captures ~20-30% more sessions than GA4, and the missing ones are concentrated exactly where the argument is.
Third-party trackers have a blind spot
GA4, Segment, Heap and Mixpanel are all third-party. Open your browser's network tab and you'll see calls going out to analytics.google.com, which is exactly what ad blockers look for, so many sessions are never recorded at all. Even when the scripts load, they're heavy and often fire late, and users who bounce in the first 5-10 seconds (a large share of top-of-funnel traffic) simply vanish.
A first-party pixel runs from your own domain, e.g. t.yourbrand.com. It reads as your site's own traffic, avoids blockers, and loads early enough to catch the bounces.
The identity problem
Third-party tools also struggle to keep a person being one person. We've seen Segment track the same user on the same device as 3 different people inside 5 days, and GA4 has similar stitching issues. A first-party pixel persists identity over time by joining cookies on signals GA4 doesn't use:
That joining matters most when you sell a high-consideration product and the journey spans weeks, not minutes.
What the journeys actually look like
Here is what identity joining changes in practice, from one brand's first-party journey data. With basic IP matching alone, the share of orders with a Facebook session in the journey went from 1.3% to 7.1%, and the measured journey length for those orders went from 10 days to 25.
| Channel | % of orders influenced | Days to convert | Journey length |
|---|---|---|---|
| Organic | 53.8% | 9.4 | 12.5 |
| Google PMax | 38.3% | 8.6 | 14.8 |
| Google Branded | 24.9% | 10.0 | 16.3 |
| Google NonBranded | 12.5% | 11.9 | 17.1 |
| 12.3% | 7.4 | 16.9 | |
| Facebook Prospect | 7.1% | 16.4 | 24.9 |
| Facebook Retarget | 3.7% | 11.8 | 23.4 |
| Reddit Prospect | 2.1% | 23.5 | 32.8 |
| TikTok | 1.7% | 16.1 | 30.3 |
| Pinterest Prospect | 1.1% | 20.2 | 30.6 |
| 1.1% | 25.3 | 37.3 |
Read the two right columns: top-of-funnel channels run ~25-37 day journeys, against ~12-15 for organic and branded search. That is the structural reason last-click shows 0.0x% on Reddit and TikTok.. their buyers convert weeks later through other doors, and a tracker that loses identity along the way never connects the two ends.
The read that makes this worth the build
The strongest use isn't reporting, it's triangulation. When a geo test (Haus, Measured, etc.) comes back, first-party journeys give you a behavioral read on whether to believe it:
Three independent reads agreeing is a result you move budget on. One read that journeys and MTA don't corroborate is likely noise, and spending against it is how "validated" budget shifts quietly fail.
What to do with it
Keep GA4. It's fine for content reporting and top-line trends, and it's free. This isn't a replatform.
Add a first-party pixel for journeys, and point your funnel questions at it: what do returning top-of-funnel visitors do, which channels send people who come back.
Redesign the top-of-funnel landing experience around what the journeys show. Visitors spending seconds on one page shouldn't land on a hard Add to Cart; softer CTAs and email capture fit what they're actually doing.
Treat journeys as the behavioral layer under every incrementality read, per the comparison above.
Happy to walk through how we'd approach it for your stack.
Common questions
Does GA4 undercount top of funnel traffic?
Yes, and it's structural rather than a configuration issue. GA4's tag calls out to analytics.google.com, which ad blockers target by hostname, and the script is heavy enough that it often hasn't fired before a 5-10 second bounce ends. Prospecting traffic bounces the most, so the loss concentrates exactly where the budget debates are. In our experience a first-party pixel captures ~20-30% more sessions, and the practical effect is the table above: a channel GA4 scores at 0.0x% last-click was present in journeys behind 2.1% of new orders. You can size your own gap in an afternoon by comparing GA4 sessions against Shopify or server-side session counts for one prospecting campaign.
Do I need to replace GA4?
No, and trying to usually backfires. GA4 is free, your team knows it, and it's fine for content reporting and topline trends. What it structurally can't do is persist identity, so multi-week journeys never connect. Run both: GA4 keeps the reporting jobs, the first-party pixel takes the journey and identity questions, like which channels send people who come back and what returning prospecting visitors do. The cost of running both is far below the cost of one channel wrongly cut on last-click zeros.
How does this help geo tests and MMM?
It gives every incrementality read a behavioral cross-check. If a geo test says Meta lift is real, the holdout geos should also show fewer Meta-referred sessions and worse session quality (lower product-page click-through, higher bounce), because prospecting traffic actually disappeared there. When the geo read, the journeys and MTA all agree, move the budget. When the geo tool alone shows lift and neither of the other two moved, treat it as noise. Point estimates with wide confidence intervals get shipped as wins far too often, and this is the discipline that catches them.
Channel and measurement reads like this are the core of our Acquisition & Creative work.
See how it works →