Sooner or later a CFO asks the simple question: which channels actually made us money last month? In most retail companies the honest answer is that the tools disagree. Meta claims 240 orders. GA4 credits 95 to paid social. The shop backend can’t settle the argument. All three are working as designed; they just measure different things, on partial data, with different rules for handing out credit.
Consent banners and browser tracking prevention made the gaps wider, and they aren’t going away. Here’s the stack we set up on retail accounts, and the habits that matter more than the stack.
The three pieces
Consent Mode v2 has been required for EU audiences since March 2024. When a visitor declines, Google receives cookieless pings instead of full measurement and models the missing conversions. The quality of everything downstream starts with your consent rate. A well-built banner gets 75-90% acceptance on most EU retail traffic; a clumsy one drops below 60, and that gap stays guesswork forever. Test the banner the way you’d test a landing page.
Server-side tagging moves tag firing to a server you control, in a first-party context. Cookie lifetimes survive Safari’s seven-day cap, ad blockers interfere less, and you decide what gets forwarded where. Budget around €100 a month of infrastructure for a mid-sized shop. Be clear about what it doesn’t do: it doesn’t bypass consent, and it shouldn’t. It improves the quality of what you’re allowed to measure.
Modelled conversions fill the consented-out gap in GA4 and Google Ads. The models are decent when your observed data is decent. Just know what you’re reading: part observation, part statistics. Write the assumptions down somewhere the whole team can see them.
Pick one anchor and hold it
The habit that settles more arguments than any tool: nominate backend revenue as the number that wins. Platform-reported conversions are useful for optimising within a channel, because the bid algorithms need them. They’re unfit for cross-channel budget decisions, because every platform over-claims.
We keep one reconciliation sheet per account, updated weekly: claimed revenue per platform next to actual blended revenue. The ratio between the two is your inflation index. On a typical retail account the platforms jointly claim 130-160% of real revenue; the exact figure matters less than whether it’s stable. When the index jumps, something changed: a tracking break, a new campaign type double-counting, or a platform update. Watching how it moves over time tells you more than any attribution model will.
Cheap incrementality checks
You don’t need a data science team to sanity-check attribution. Three tests we actually run:
- Brand search holdout. Pause brand search in one region for two weeks. If organic and direct pick up 90% of the volume, most of that spend was buying traffic you already owned.
- Geo split. Run a channel in half your regions and hold it off in the other half, then compare total backend revenue between the two. Total revenue, not what the platform attributes.
- Spend step. Raise one channel’s budget 30% for three weeks. If attributed revenue climbs but backend revenue doesn’t, the extra spend is reshuffling credit rather than creating orders.
One test per quarter is enough to keep your models honest. Pick whichever channel currently takes the biggest budget decision on faith.
Where this lands
Perfect attribution is gone, and no vendor is bringing it back. Decision-grade attribution is very much available: a consent setup you’ve tested, server-side plumbing, models read with open eyes, one anchoring metric, and a cheap experiment now and then. That combination is enough to move budget with confidence, which was always the actual goal.