# When Attribution Models Disagree: Which Number Do You Trust?

Finance distrusts attribution because it arrives as a single confident number that changed 4x last quarter. Report the spread between models instead: reallocate where they agree, run a holdout where they disagree.

- Canonical: https://mbuzz.co/articles/report-attribution-as-a-range
- Published: 2026-07-23
- Author: Holly Mehakovic, mbuzz (https://mbuzz.co)

---

> **TL;DR:** Finance distrusts attribution because it arrives as a single number with the confidence of an audited statement, then moves 4x the next quarter when someone changes a model. The fix is to run several attribution models over the same touch data and report the spread. Where the models agree, you have a stable read and can reallocate budget. Where they diverge wildly, that spread is your measured uncertainty, and the channel becomes a holdout candidate rather than a budget decision. Report the range, the share of budget sitting inside a tight band, and a pre-registered rule for what you do at each outcome. A CFO can sign off on a range with a decision rule. A CFO cannot sign off on a point estimate that moved twenty points last time someone changed a dropdown.


## Why finance stopped believing your attribution

Finance distrusts attribution because it is delivered as if it were right, even when the number itself is off. One model, one number, no error bar, presented with the confidence of an audited financial statement.

The CFO has seen last-touch say LinkedIn drove 8% of pipeline and a data-driven model say 31%, on the same data, in the same quarter. When the source of truth changes its mind by 4x depending on a modelling choice nobody in the room can defend, the credibility problem is the pretense of a single truth, not the model itself.

This is not a soft complaint. Gartner surveyed 426 senior marketing leaders and found that 84% of companies are stuck in a brand measurement "doom loop": underfunded measurement leads to unclear impact, which feeds rising skepticism, which tightens budgets, which underfunds measurement further. Companies caught in the loop were half as likely to exceed their growth targets as companies that could credibly evaluate marketing value.

<div class="not-prose my-8 bg-white border border-slate-200 rounded-lg overflow-hidden">
  <div class="px-5 py-3 border-b border-slate-200 bg-slate-50">
    <p class="text-xs font-bold text-slate-500 tracking-[0.15em]">THE MEASUREMENT DOOM LOOP</p>
  </div>
  <div class="px-5 py-5 space-y-3">
    <p class="text-sm text-slate-700"><strong class="text-slate-900">Gartner, June 2026</strong> &mdash; survey of 426 senior marketing leaders, fielded Sept&ndash;Oct 2025.</p>
    <div class="grid grid-cols-2 gap-3 mt-4">
      <div class="bg-slate-50 border border-slate-200 rounded-md p-3">
        <div class="text-[10px] font-bold tracking-[0.15em] text-slate-500 mb-1">STUCK IN THE LOOP</div>
        <div class="text-3xl font-bold text-slate-900 mb-2">84<span class="text-xl">%</span></div>
        <div class="text-xs text-slate-500">of companies: underfunded measurement &rarr; unclear impact &rarr; skepticism &rarr; tighter budgets.</div>
      </div>
      <div class="bg-amber-50 border border-amber-200 rounded-md p-3">
        <div class="text-[10px] font-bold tracking-[0.15em] text-amber-700 mb-1">THE COST</div>
        <div class="text-3xl font-bold text-amber-700 mb-2">&frac12;</div>
        <div class="text-xs text-amber-700">as likely to exceed growth targets as companies that can credibly value marketing.</div>
      </div>
    </div>
  </div>
</div>

The way out is a more honest report, not a better model. Stop hiding the disagreement between your models and start reporting it.

## The move: report the spread, not the point

Run several attribution models over the same touch data. Where they agree on a channel's credit, you have a stable read, and you can reallocate with confidence. Where they diverge wildly, that spread is your measured uncertainty, quantified in the only honest way a correlational method can produce it. The divergence is not a failure to converge.

You report three things: the range for each channel, the share of budget that sits inside a tight band, and a pre-registered rule for what you will do at each outcome. A CFO can sign off on a range with a decision rule. A CFO cannot sign off on a point estimate that moved twenty points last time someone changed a dropdown.

The reframe that lands with finance: a channel whose credit collapses when you change the model is a holdout candidate, not a budget decision. You do not move money on a number you cannot reproduce across models. You run an experiment on it. Attribution's job is to triage, not to be the final answer: reallocate the agreements, test the disagreements.

The width of the disagreement between your models is the most honest number in the deck.

## Ranges are the mature standard, not the soft option

The objection comes fast: reporting a range is admitting you do not know. The opposite is true. Every rigorous method in the measurement stack already reports a range.

Bayesian marketing mix models produce a posterior credible interval per channel, not a point estimate. A worked illustration from the PyMC-Marketing literature: a channel with a posterior mean marginal return of $0.50 per $1 spent and a 95% credible interval of $0.20 to $0.80. Practitioners are explicitly advised to make more conservative reallocation decisions where that interval is wide. The most statistically serious method in the stack does exactly what we are proposing.

Even the causal gold standard returns a range, and the range's width dictates the decision. An incrementality lift test might estimate 4.2x ROI with a 95% interval of 1.1x to 8.8x. That is directionally positive, but the interval spans "your worst channel" to "your best channel." The operative rule: if the interval straddles a meaningful positive and a meaningful negative outcome, you do not have enough evidence to change spend. The range is the decision object, not a hedge.

A point estimate with no interval carries no more knowledge than the range. It is the same uncertainty with the error bar deleted.

## Scenario A: the channel that survives every model

A B2B SaaS company runs four models on one quarter of touch data: last-touch, linear, time-decay, and a data-driven Shapley-style model. Paid Search gets credited across them:

| Model | Paid Search credit |
|---|---|
| Last-touch | 22% |
| Linear | 19% |
| Time-decay | 24% |
| Data-driven (Shapley) | 21% |

The range is five points, all clustered around 21%. This is a tight-coverage channel. The models distribute credit differently by design, and they still agree. The report to finance reads: "Paid Search: 19&ndash;24% of attributed pipeline across all four models. Confident reallocation. Recommend +15% spend." The decision rule fires because the models agree.

## Scenario B: the channel that collapses

Same company, same data, a brand-awareness display channel:

| Model | Display credit |
|---|---|
| Last-touch | 3% |
| Linear | 4% |
| Time-decay | 6% |
| Data-driven (Shapley) | 19% |

The range is 3 to 19%, a 6x spread. The data-driven model loves this channel. Every simpler model says it is marginal. Under the old regime, someone picks the flattering model and defends a budget increase, or picks the harsh one and cuts a channel that might be doing real upper-funnel work. Either way the deck presents a point estimate that the data does not support.

Under the range regime, the report reads differently.

<div class="bg-slate-50 border-l-4 border-slate-400 p-5 my-8 rounded-r-md not-prose">
  <p class="text-xs font-bold text-slate-500 tracking-[0.15em] mb-3">HOW THIS LINE READS IN THE DECK</p>
  <p class="text-sm text-slate-700 leading-relaxed mb-3"><strong class="text-slate-900">Display: 3&ndash;19%, model-dependent.</strong> Credit is not reproducible across models. This is a holdout candidate, not a reallocation decision.</p>
  <p class="text-sm text-slate-700 leading-relaxed">Recommendation: run a four-week geo or audience holdout on Display before any budget move. Results by [date].</p>
</div>

Finance responds to this well, because it converts an argument into an experiment with a date. Nobody is being asked to trust a number that changed by 6x depending on which dropdown was selected. The uncertainty is named, quantified, and assigned to a test.

## Scenario C: lead with coverage, not per-channel numbers

The strongest version of this report does not open with a channel table at all. It opens with portfolio coverage: how much of the budget sits in each confidence band.

Of $2M in quarterly attributed spend:

<div class="not-prose my-8 flex flex-wrap items-stretch gap-2">
  <div class="flex-1 min-w-[160px] bg-emerald-50 border border-emerald-200 rounded-lg p-4">
    <div class="text-[10px] font-bold tracking-[0.15em] text-emerald-600 mb-1">TIGHT COVERAGE</div>
    <div class="text-2xl font-bold text-slate-900">68%</div>
    <div class="text-xs text-slate-500">$1.36M</div>
    <div class="text-sm text-slate-700 mt-2">All models agree within a &plusmn;3-point band. Reallocate freely.</div>
  </div>
  <div class="flex-1 min-w-[160px] bg-amber-50 border border-amber-200 rounded-lg p-4">
    <div class="text-[10px] font-bold tracking-[0.15em] text-amber-600 mb-1">MODERATE SPREAD</div>
    <div class="text-2xl font-bold text-slate-900">22%</div>
    <div class="text-xs text-slate-500">$440K</div>
    <div class="text-sm text-slate-700 mt-2">5&ndash;10 point spread. Directional only. Small moves, &plusmn;10% caps.</div>
  </div>
  <div class="flex-1 min-w-[160px] bg-pink-50 border border-pink-200 rounded-lg p-4">
    <div class="text-[10px] font-bold tracking-[0.15em] text-pink-600 mb-1">HIGH DIVERGENCE</div>
    <div class="text-2xl font-bold text-slate-900">10%</div>
    <div class="text-xs text-slate-500">$200K</div>
    <div class="text-sm text-slate-700 mt-2">Range exceeds 10 points or 3x. Holdout queue. No moves until tested.</div>
  </div>
</div>

Now the CFO gets one number they can govern: 90% of the budget is either confidently allocated or explicitly under test, and the remaining 10% is quarantined pending an experiment. That is a sentence a finance committee can approve. It reads like a risk register, because it is one.

## Where the spread comes from, and why it is diagnostic

Divergence between models is a signal worth reading, not just noise you are forced to disclose. The standard validation practice is to run attribution output against platform-reported data, against practitioner intuition, and ideally against incrementality results, and where they diverge, investigate.

Divergence between models on the same data often points at a fixable cause. A wide spread frequently means the attribution window is too short for the sales cycle, or that identity resolution is fragmenting journeys so that one person's path is being split across several anonymous sessions. When you see Display swing from 3% to 19%, the data-driven model may be catching upper-funnel touches that last-touch structurally cannot see, or it may be over-fitting on fragmented journeys. The spread tells you to look. It formalizes what good analysts already do by hand.

If you want to compute the spread directly from your attributed credit, the query is ordinary aggregation over your model outputs.

```sql
-- Per-channel credit spread across four attribution models.
-- Assumes one row per (channel, model) with fractional credit that
-- sums to 1.0 within each model.
SELECT
  channel,
  ROUND(MIN(credit_share) * 100, 1)               AS low_pct,
  ROUND(MAX(credit_share) * 100, 1)               AS high_pct,
  ROUND((MAX(credit_share) - MIN(credit_share)) * 100, 1) AS spread_pts,
  CASE
    WHEN (MAX(credit_share) - MIN(credit_share)) <= 0.03 THEN 'tight'
    WHEN (MAX(credit_share) - MIN(credit_share)) <= 0.10 THEN 'moderate'
    ELSE 'high_divergence'
  END                                             AS coverage_band
FROM attribution_credit_by_model
WHERE model IN ('last_touch', 'linear', 'time_decay', 'data_driven')
  AND period = '2026-Q2'
GROUP BY channel
ORDER BY spread_pts DESC;
```

The channels that sort to the top of that list are your holdout queue. The ones at the bottom are where you reallocate.

## What the range does not do

A measurement-literate CFO will push on this, and the report loses credibility fast if it oversells. Four caveats belong in the room.

**Model agreement is not the same as being correct.** Four correlational models can all agree and all be wrong in the same direction. A channel that gets over-credited by last-touch structure will look stable across every touch-based model, because they share the bias. Agreement narrows model uncertainty, which model is right, and says nothing about causal validity, whether any of the credit is incremental. Convergence reduces one kind of uncertainty and is silent on the other. This is the single most important caveat, and leaving it out is how you lose a serious audience.

**Attribution does not measure incrementality. Full stop.** Attribution measures correlation through user tracking: what customers touched before converting. Incrementality measures causation through controlled experiments: what your marketing caused. The range-of-models method makes attribution more honest about its own internal disagreement. It does not turn attribution into a causal method. Running more models never gets you incrementality. It gets you a well-characterized correlational read that tells you where to spend your limited experiment budget. That is the correct, defensible claim, and it is the only one to make. Academic work confirms the underlying mechanism: standard attribution systematically over-credits by counting conversions that would have happened without the ad (Li et al., "Attributed, But Not Incremental," ADKDD 2026).

**The models are correlated, so the spread understates true uncertainty.** Last-touch, linear, and time-decay are all rule-based transforms of the same path data. They are not independent estimators. When they agree, it can be because they share assumptions, not because the signal is robust. The honest range is likely wider than the model spread suggests. Present the band, but do not oversell its tightness.

**A wide range can be un-actionable, and that is an acceptable answer.** If Display is 3 to 19%, the range does not tell you what to do with Display. It tells you that you cannot decide from attribution alone. "We do not know, here is the test" is a legitimate and superior output to a confident wrong number. The range does not resolve the decision. It reassigns the decision to an experiment.

## This is a governance change, not just an analytics one

Two operational truths are worth naming so the proposal survives contact with how finance actually runs.

Running several models, maintaining them, and pre-registering decision rules is more work than exporting one dashboard. And dynamic reallocation collides with how finance operates: stable budget commitments, fixed agency scopes, campaign plans set months ahead. Ranges plus pre-registered rules is partly a governance proposal, not only an analytics one. Treat it that way, and get the decision rule agreed before the numbers land.

The pre-registration is load-bearing. The whole finance-safety argument rests on committing to the decision rule before seeing which channel benefits. If the team quietly picks the model that funds the campaign they already wanted, the range framework becomes new theatre with better production values. Write the rule down, timestamp it, and hold to it. A range you can reverse-engineer to justify last week's plan is worth less than the point estimate it replaced.

## Why this is the honest report

The old report asked finance to trust a number. This one asks finance to trust a process: agree where the models agree, test where they fight, and quarantine what neither the models nor a test has resolved yet. It is slower to produce and less satisfying to present, because it refuses to fabricate certainty on the channels where certainty does not exist.

That refusal is the point. A range with a decision rule tells the CFO the truth about what you know and what you are about to find out. A point estimate tells them a story that the next model choice can unravel. One of those survives a finance committee. The other one is why 84% of companies are still in the doom loop.

## Key takeaways

- Finance distrusts attribution because it is delivered as if it were certain, not because the number is wrong.
- Run several models on the same touch data and report the spread; agreement is a stable read, divergence is measured uncertainty.
- A channel whose credit collapses when you change the model is a holdout candidate, not a budget decision.
- Lead the report with coverage: the share of budget where all models agree, versus the share quarantined pending a test.
- Model agreement narrows which-model uncertainty; it never proves incrementality. Only an experiment measures what marketing caused.


## FAQ

**If the models disagree, which number do I put in the board deck?**

You put the range and the coverage percentage, not a single number. For the roughly two-thirds of budget where the models agree within a few points, the range is tight enough to quote a midpoint. For the divergent channels, the honest board line is 'model-dependent, under holdout test, results by [date].' A range plus a plan beats a fabricated point estimate every time.

**Isn't reporting a range just admitting you don't know?**

Every rigorous method in measurement reports a range. Bayesian marketing mix models report credible intervals per channel. Incrementality tests report confidence intervals, for example a 4.2x ROI estimate with a 1.1x to 8.8x interval. A point estimate with no interval carries no more knowledge than the range. It is the same uncertainty with the error bar deleted. The range is the knowledge.

**How many models do I need to run, and which ones?**

Enough to span the assumption space, not a zoo. A practical set is last-touch, linear, time-decay, and one data-driven or algorithmic model such as Shapley. They differ in how they distribute credit across the path, so agreement between them is meaningful and disagreement is diagnostic. Running ten near-identical models adds cost, not information.

**You keep saying holdout. Doesn't that mean turning off spend and losing sales?**

A holdout suppresses a channel for a randomized slice of geography or audience, not your whole program, for a bounded window of typically two to four weeks. You only queue a channel for a holdout when attribution cannot decide anyway, so the spend you are risking is spend you could not confidently justify in the first place. The test replaces a guess, not a known winner.

**Does running more attribution models get me closer to true incremental impact?**

No, and anyone who says it does is overselling. More models reduce model-choice uncertainty. They tell you how much your answer depends on an arbitrary methodology decision. They do not remove the correlational nature of attribution. Only an experiment measures incrementality. The range method's real value is triage: it tells you which channels are worth spending your scarce experiment budget on.

**What stops the team from just picking the model that funds the campaign they already wanted?**

Nothing, unless you pre-register the decision rule before you see which channel each model favors. The whole finance-safety argument rests on committing to the rule in advance. If the team quietly selects the flattering model after the fact, the range framework becomes new theatre. Write the rule down, timestamp it, and hold to it.


