Case study

Full-Funnel Marketing Attribution Platform

Closing the gap between what GA4 shows and what the business actually needs to know — without paying enterprise-tier license fees to see it.

  • Analytics engineering
  • Server-side tagging
  • AI-assisted reporting
  • AWS

The brief

Client
Enterprise marketing & analytics function — P&C insurance vertical (generalised)
Sector
MarTech / Analytics engineering
Scope
First-party measurement layer — cross-property identity, observed attribution, AI-assisted reporting
Role
Solo architect and developer, proof of concept through production
Team
Built and shipped solo. Marketing and finance stakeholders on both sides of the reporting gap; handed to a stewardship rotation after release.
Dates
2025 · 8-week proof of concept, 12-week production build
At a glance

What shipped

  • ~100Ktop-of-funnel users tracked
  • 8 wksto prove the identity graph
  • 12 wksproof of concept to production
  • ~$50K/yranalytics license avoided, per property

The problem

GA4 tells you traffic moved. It cannot tell you which dollar moved it.

Every enterprise running paid acquisition eventually hits the same wall, and it is not a reporting wall — it is a structural one. GA4 is built around sessions inside a property. The business is built around a person who takes three weeks, four devices and usually one phone call to become a policy. Those two models do not reconcile, and no amount of dashboard-building inside the tool makes them reconcile, because the missing piece — a durable identity that survives the gap between the click and the sale — is not something the tool was designed to hold.

The practical symptom was a room full of capable people arguing using different numbers. Marketing reported conversions from GA4. Finance reported bound policies from the CRM. The two never matched, and the gap between them was precisely the stretch of funnel where the money was being decided. So when the quarterly question arrived — which campaigns should we spend more on? — the honest answer was a shrug in the shape of a spreadsheet.

Google sells the answer to this. Analytics 360 adds sub-properties, roll-ups, unsampled exports and higher limits, and it opens around fifty thousand dollars a year per property before anyone has built a single report. For an enterprise running several consumer-facing applications, stitching them into one view the vendor-native way was a six-figure annual line item — to rent infrastructure that, given a first-party foundation, the organisation could simply own.

That reframed the brief entirely. The question was never how to get better dashboards. It was: what is the smallest durable data layer that can follow a person from a paid click, across properties, through a multi-week consideration window, to a bound policy — and then tell a marketer what to do about it on a Tuesday morning?

The gap

Five specific things the standard toolset could not do —each one a structural limit rather than a configuration mistake. Naming them precisely is what turned an infinite problem into a scopeable one.

What was missing

  • Cross-property identity

    Each consumer-facing application was its own property with its own client ID. The same person browsing two of them counted as two strangers. Nothing in the standard toolset stitches that back together without a first-party identifier you control and store yourself.

  • Off-platform conversion

    A meaningful share of policies bind over the phone or after an agent follow-up. That event happens in the CRM, not the browser — so the single most valuable outcome in the funnel is structurally invisible to the tool measuring the funnel.

  • Modelled attribution, not observed

    Platform attribution is a model. Models are defensible for directional reads and indefensible for reallocating budget. When real money moves between campaigns, "the model says" and "we observed" are not the same sentence, and only one of them survives a finance review.

  • Spend and outcome living apart

    Click and cost data sit in the ad platforms. Bound-policy data sits in the CRM. Joining them by campaign, at the grain finance actually reports on, was a manual monthly exercise performed in spreadsheets — and therefore performed late, by hand, and differently each time.

  • Sampling and retention ceilings

    At meaningful volume the standard tier samples, and it expires exactly the historical depth needed for year-over-year comparison — which is the first comparison leadership asks for and the one hardest to reconstruct after the fact.

Approach

From proof of concept to production

Four phases, one person carrying all of them end to end.

  1. Prove the identity graph first

    The entire approach rested on a single assumption, so that assumption got tested before anything else was built. Eight weeks, one question: can a first-party cookie plus server-side tagging reliably reconnect a click to a sale weeks later, across separate properties, using no third-party identifiers? The proof of concept shipped deliberately ugly — no dashboard, no polish, just a reconciliation report demonstrating the join held. It held, and everything after it earned the right to exist.

  2. Build a pipeline that survives contact with reality

    Server-side tagging moved collection out of the browser — where ad blockers and shifting browser policy decide what survives — and onto infrastructure under our control. Events normalise on the way into AWS, then resolve against an identity layer built to tolerate a multi-week gap between first touch and bind. The unglamorous work was the event contract: one schema every property emits, so onboarding a fourth application later is a configuration change rather than a second integration project.

  3. Put spend and outcome in the same table

    Campaign and cost data ingest directly from the ad-platform APIs rather than arriving pre-modelled. That lets spend and bound-policy outcomes sit at the same grain, in the same place, observed rather than inferred. It sounds mundane and it is the whole point — the moment those two columns are adjacent, the standing argument between marketing and finance stops being about whose number is correct and starts being about what to do next.

  4. Make it answer, not just display

    A dashboard showing a campaign declining still needs a human to notice, interpret and act — which in practice means noticing at the weekly review, four days late. The final layer scores campaign health against cohort, flags anomalies the day they begin, and drafts a proposed reallocation with its reasoning visible rather than hidden behind a score. A marketer approves or rejects a specific recommendation instead of staring at a chart and inferring one.

Decisions

Build a first-party measurement layer, or license the enterprise tier?
Options: License Analytics 360 (sub-properties, roll-ups, unsampled export) · Build first-party on existing AWS footprint
Chosen: Build
The license opens near fifty thousand a year per property, and multiple properties were in scope — six figures annually, recurring, before a single report existed. More decisive than cost: licensing solves the sampling and roll-up problems but not the two that actually mattered, cross-property identity and off-platform conversion. We would have paid enterprise pricing and still been missing the bind event. Building meant the join we needed most was the thing we owned outright.
Third-party cookies, or first-party identity resolution?
Options: Conventional third-party cookie tracking · First-party cookie plus server-side resolution
Chosen: First-party, server-side
Browser vendors have spent years withdrawing third-party cookie support and the signal was already degrading unevenly across browsers — meaning the data was not just incomplete but biased in a direction nobody could quantify. A first-party identifier resolved server-side is durable by construction, survives the browser policy of the next five years, and keeps the privacy posture legible: we can state exactly what is collected, where it lives, and how it is hashed.
Neutral reporting, or an opinionated recommendation?
Options: Dashboards that present the data and stop · A layer that scores, flags and proposes action
Chosen: Opinionated, with reasoning shown
Neutral dashboards are safer to build and easier to defend, and they quietly push the hard work back onto whoever opens them — which is how a measurable problem goes unnoticed for a fortnight. The trade-off is that an opinionated system can be wrong in public. That was acceptable on one condition: every recommendation shows the reasoning behind it, so a marketer can overrule it on the evidence rather than on faith. Trust comes from visible reasoning, not from accuracy claims.

The interface

Campaign health dashboard
AI-flagged anomalies
Budget reallocation builder
Funnel-stage drill-down

What shipped

A first-party measurement layer the business owns outright — collection, identity, attribution and recommendation, running on infrastructure already paid for, with no per-property license and no dependency on a vendor’s modelling choices.

  • Server-side event collection on a first-party domain
  • Identity resolution across every consumer-facing property
  • Observed click-to-bind attribution, not modelled
  • Ad-platform spend joined to CRM outcome at campaign grain
  • Campaign health scoring against cohort, refreshed daily
  • Anomaly flagging with the reasoning surfaced, not hidden
  • Budget reallocation proposals with one-click approval

Outcomes

  • Full click-to-bindFunnel visibilitywas fragmented across separate properties
  • Materially less wastePaid spend efficiencydirectional — figures withheld pending disclosure clearance
  • ~$50K/yr avoidedLicense costper property, recurring
  • Same-dayDecision latencywas a weekly manual reconciliation

The precise percentages behind "less waste" and "faster decisions" are not cleared for public disclosure, so they are described directionally rather than invented. What is verifiable is structural, and structural change is the more interesting claim anyway: marketing, finance and leadership went from three partial views of the same funnel to one shared view, and from a weekly manual reconciliation to a same-day flag with a proposed action attached.

The quieter outcome was organisational. Once spend and bound policies sat in the same table, the recurring argument about whose number was right simply stopped — not because anyone won it, but because the question dissolved. Most of the value of a measurement platform is not measurement. It is removing the thing everyone was arguing about instead of deciding.

The point was never better dashboards. It was one number the whole room could argue from instead of about.
Next workModernizing Legacy Systems in a Regulated Industry

Want to build something together?

Emailashishvrm86@gmail.com
Based inIndianapolis, IN
Replywithin 24 hrs