Back to blog
AttributionSeptember 1, 2026

We Fixed a Client's Attribution Model and Stopped Facebook from Stealing Credit

Fixed client's attribution model; Facebook stopped stealing conversion credit.

We Fixed a Client's Attribution Model and Stopped Facebook from Stealing Credit

A CMO called us last year. "Facebook says 40% of our revenue. Finance says 15%. Someone is wrong."

Their marketing team was running a sophisticated multi-channel strategy: paid social, paid search, organic content, email, and partnerships. Their attribution model (last-touch in Google Analytics) was giving Facebook credit for 40% of revenue. But when finance reconciled actual payments against attributed revenue, Facebook was only driving about 15% of actual new customer acquisition.

The other 25%? Customers who saw a Facebook ad, clicked a Google ad later, and converted. Facebook got the credit because it was the "last touch" before the Google click that actually converted. Google got nothing. The paid search team was underfunded because their true contribution was invisible.

This is the attribution gap that breaks marketing teams. Not because the data is wrong, but because the model is wrong for the business.

What We Found

We pulled [N] days of clickstream data and built a journey map. A typical customer journey looked like this:

TouchChannelTime to ConversionAttribution (Last-Touch)Actual Influence
1Instagram adDay -14NoneAwareness
2Organic blog postDay -10NoneConsideration
3Google branded searchDay -3NoneIntent
4Facebook retargetingDay -1100%Reminder
5Direct (type URL)Day 0100%Conversion

Last-touch attribution gave Facebook 100% credit for a 5-touch journey that started with Instagram and included organic search and a blog post. Every channel except the last one was invisible.

The channel conflict was stark:

ChannelLast-Touch AttributionFinance RealityDifference
Facebook[PCT]%[PCT]%+[PCT]%
Google Search[PCT]%[PCT]%-[PCT]%
Organic[PCT]%[PCT]%-[PCT]%
Email[PCT]%[PCT]%-[PCT]%
Partnerships[PCT]%[PCT]%-[PCT]%

Facebook was over-credited by [PCT]%. Google Search was under-credited by [PCT]%. Organic and email were essentially invisible. The marketing budget was being allocated based on a model that rewarded the last touch, not the true influence.

What We Did

We didn't just "fix attribution." We built a multi-model approach that answered different questions for different teams.

Model 1: Position-Based (40/40/20)

For tactical optimization (which campaigns to scale, which to cut):

  • First touch: 40% credit (what started the journey)
  • Last touch: 40% credit (what closed the deal)
  • Middle touches: 20% split equally (what kept them engaged)

This immediately changed the picture. Google Search went from "underperformer" to "high performer." Organic went from "nice to have" to "critical channel." The reallocation was immediate: we shifted [SPEND] from Facebook to Google Search and saw a [PCT]% improvement in blended CAC.

Model 2: Data-Driven (Markov Chains)

For strategic questions (what happens if we kill a channel entirely):

We built a Markov chain model that calculated removal effect: if we removed Facebook entirely, what percentage of conversions would we actually lose?

The removal effect showed that organic content had a [PCT]% removal effect — higher than its position-based credit. This meant organic wasn't just "in the journey," it was "critical to the journey." Killing the blog would lose more conversions than the attribution model suggested.

Model 3: Incrementality Testing (Geo-Holdout)

For Facebook specifically (the most disputed channel), we ran a geo-holdout test: [N] US states with Facebook ads running normally (treatment), [N] US states with Facebook ads paused (control), for [N] weeks, measuring total new customer acquisition (not just attributed).

Results: treatment states had [N] new customers/week, control states had [N], incremental lift was [PCT]%. True Facebook contribution: [PCT]% of total (not the [PCT]% last-touch claimed).

The incrementality test became the "source of truth" for Facebook budget decisions. The attribution model was used for tactical optimization. The incrementality test was used for strategic budget allocation.

Implementation

We instrumented every ad click (UTM parameters, click IDs, gclid/fbclid), every site visit (anonymous ID, session ID, timestamp), every conversion (user ID, revenue, timestamp, attribution snapshot), every email open/click (via webhook), and every organic search visit (search term, landing page). All stored in the warehouse with a common schema.

We built an attribution engine in SQL with last-touch, first-touch, position-based, and linear models. And a self-service dashboard with model selector, channel comparison, journey explorer, and incrementality overlay.

The Results

MetricBefore (Last-Touch)After (Multi-Model)
Facebook budget allocation[SPEND][SPEND] (-[PCT]%)
Google Search budget allocation[SPEND][SPEND] (+[PCT]%)
Organic content investment[SPEND][SPEND] (+[PCT]%)
Blended CAC[RATE][RATE] (-[PCT]%)
Marketing-finance alignmentBrokenWeekly sync, same numbers
Channel conflict meetings/week[N][N]

The biggest win was organizational: marketing and finance started using the same numbers. The CMO could defend the Facebook budget with incrementality data. The CFO could see organic's true contribution. The channel teams stopped fighting over credit and started optimizing their actual impact.

What We Learned

No single model is right. Last-touch is wrong for strategic decisions. Position-based is wrong for incrementality. Data-driven is wrong for tactical optimization. We built multiple models for different questions.

Incrementality testing is expensive but necessary. The geo-holdout cost [SPEND] in lost Facebook revenue (control states). But it saved [SPEND] in misallocated budget over the next quarter.

The journey explorer is the secret weapon. When the CMO could show the CEO an actual customer journey (Instagram → Blog → Google → Facebook → Direct), the conversation shifted from "why is Facebook getting so much credit?" to "how do we optimize each touch?"

Attribution is political. The real problem wasn't technical — it was that teams were incentivized based on last-touch numbers. We had to change incentives, not just models.

Bottom Line

This client's attribution model went from "Facebook wins everything" to "every channel gets fair credit for its actual contribution." The marketing budget reallocation improved blended CAC by [PCT]%. But the real win was a leadership team that trusted the numbers and made decisions based on reality.

If your attribution model gives one channel 40%+ of credit, you have this problem. The fix isn't a better model — it's multiple models, incrementality testing, and organizational alignment.