Performance Marketing Agency — Identity Resolution Across 8 Data Sources

Building a unified contact and audience record for a digital marketing agency managing campaigns across hundreds of brand clients.

  • Resolved customer identity across 8 data sources — CDP, GA4, email platforms, paid media APIs — into a unified master contact record
  • Lifted audience match rates from 30% to 60%, reclaiming roughly $60K/month in paid search spend on a $200K/month budget
  • Built a GA4 → BigQuery → dbt pipeline covering the agency's full client portfolio of 200+ brands
  • Expanded email marketing tracking from clicks-only to full deliveries, opens, and engagement funnel
  • Enabled phase-based engagement continuation — work that started as a project became a multi-year analytics partnership

A performance marketing agency managing digital campaigns across a large portfolio of brand clients in retail, ecommerce, and consumer categories. The agency’s value proposition was data-driven campaign management, which created an architectural challenge: they needed to track and optimize across channels for hundreds of clients simultaneously, with consistent measurement standards and reliable attribution.

Starting point

The identity resolution problem was the core constraint. A single customer might appear in the CDP under one identifier, in GA4 under another, in the email platform under a third, and in two or three paid media platforms each with their own user tracking. Without a way to resolve those identities into a single record, attribution was largely guesswork. Audience match rates on paid search sat around 30%, which on a $200K monthly search budget meant a significant portion of spend was hitting unresolved or duplicate contacts. The agency’s ability to prove campaign ROI to clients was limited by gaps in their own data.

Beyond identity, the data architecture had scaled with the client portfolio in an ad hoc way: different pipelines built at different times, inconsistent modeling, and a patchwork of tools that had never been designed to work together. Adding a new data source or onboarding a new brand client required significant manual work each time.

How we approached it

The foundation was a GA4 to BigQuery pipeline covering the agency’s full portfolio, using BigQuery as the central warehouse and dbt as the transformation layer. The modeling approach was built for scale from the start: consistent schema patterns across brand clients, parameterized models where appropriate, and clear separation between raw source data, intermediate transformation logic, and the metrics layer that analytics consumers would actually query.

We tackled identity resolution in phases, prioritizing the sources with the most coverage and the clearest join keys first, then progressively enriching the master contact record as confidence in the underlying data improved. The CDP was integrated as both a source and a target: feeding into the identity graph and receiving enriched segment data back out.

A significant milestone was expanding email marketing tracking beyond clicks. Most email platforms expose limited event data by default, and most analytics pipelines stop at clicks. Building out delivery, open, and bounce tracking, and connecting that to downstream conversion behavior, gave the agency a materially more complete view of how email drove outcomes. That became a key part of the client value narrative.

What changed

The work moved the agency from a fragmented collection of per-client analytics to a coherent architecture serving over 200 brand clients, one where adding a new brand, a new data source, or a new reporting requirement didn’t require starting from scratch. Audience match rates moved from 30% to 60%, which translated to roughly $60,000 per month in reclaimed paid search spend. The unified contact record became the foundation for audience segmentation, lookalike modeling, and campaign optimization work that had been blocked by the identity problem.

The engagement extended through multiple phases as the scope of what was now possible expanded. That’s how these things tend to go when the technical foundation is solid. The analytical work that follows finds its own momentum.