The challenge

A performance marketing agency managing £4 million in annual ad spend across five client portfolios had a credibility problem. Their reported ROAS figures — calculated from platform-native attribution in Google Ads, Meta Ads Manager, and DV360 — consistently showed returns that clients' finance teams could not reconcile with actual revenue. Each platform claimed credit for conversions that analytics showed as single-touch events. The agency knew the numbers were inflated by cross-platform double counting, but had no methodologically sound approach to produce a single source of truth. Clients were beginning to question the agency's reporting.

Mapping the attribution architecture

We began by mapping every conversion path across all five client portfolios — from first click through to purchase — using GA4 path exploration reports combined with UTM parameter data. The analysis confirmed what the agency suspected: a user clicking a Google Ads ad, then a Meta retargeting ad, then converting organically three days later was being counted as a conversion in both Google Ads and Meta Ads Manager simultaneously. Cross-platform double counting was inflating total attributed revenue by an average of 28% across the portfolio.

The root cause was a combination of last-click attribution in Google Ads, 7-day click / 1-day view attribution in Meta, and GA4's default last non-direct click model — three different attribution windows and models applied to the same conversion events.

UTM governance and tagging audit

The UTM framework was inconsistent across all five client portfolios — some campaigns used lowercase utm_source values, others mixed case; some branded search campaigns were tagged as paid, others untagged, sending brand traffic into organic. This alone was creating channel attribution errors that compounded the cross-platform problem.

We implemented a UTM governance standard across all client accounts — a shared taxonomy document, a UTM builder spreadsheet enforcing lowercase and approved source/medium values, and a GA4 custom channel grouping that aligned with the taxonomy. Existing campaigns were retagged in bulk over a two-week period.

Data-driven attribution model

With clean UTM data, we transitioned the agency's reporting from last-click to GA4's data-driven attribution model for clients with sufficient conversion volume. For smaller clients, we moved to linear attribution as a more equitable starting point than last-click.

A monthly attribution reconciliation report was built in Looker Studio — showing GA4 attributed conversions alongside platform-reported conversions for Google Ads, Meta, and DV360 side by side. This gave clients transparency into where the differences came from and why GA4 numbers were the agency's single source of truth for budget allocation decisions.

Outcome

The ROAS variance between platform-reported and GA4-attributed figures reduced from an average of 28% to under 8% across the portfolio — the remaining gap explained by view-through conversions that GA4 does not capture by default. Five client portfolios were restructured with GA4 as the attribution source of truth. Budget reallocation based on the corrected attribution moved spend away from over-credited retargeting and into under-credited top-of-funnel channels — improving actual ROAS by 11% across the portfolio in the following quarter.