When Attribution Models Disagree: Which Number Do You Trust?
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.
THE MEASUREMENT DOOM LOOP
Gartner, June 2026 — survey of 426 senior marketing leaders, fielded Sept–Oct 2025.
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–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.
HOW THIS LINE READS IN THE DECK
Display: 3–19%, model-dependent. Credit is not reproducible across models. This is a holdout candidate, not a reallocation decision.
Recommendation: run a four-week geo or audience holdout on Display before any budget move. Results by [date].
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:
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.
-- 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.
If the models disagree, which number do I put in the board deck?▼
Isn't reporting a range just admitting you don't know?▼
How many models do I need to run, and which ones?▼
You keep saying holdout. Doesn't that mean turning off spend and losing sales?▼
Does running more attribution models get me closer to true incremental impact?▼
What stops the team from just picking the model that funds the campaign they already wanted?▼
How mature is your marketing measurement?
The free Measurement Maturity Assessment shows where you stand, where you're exposed, and what to fix first. 10 questions, 3 minutes.
Take the AssessmentReady to try server-side attribution?
Set up in 10 minutes. Free up to 30K records/month.