Attribution tells you which touchpoint was nearby. Incrementality tells you which one caused the sale. Only one of them should move budget.
Your branded search campaign reports a 14x ROAS. It is the best performing line in the account by a wide margin, so it survives every budget review.
Turn it off for two weeks and total revenue does not move. The orders arrive anyway, through organic search, because the people typing your brand name into Google had already decided to buy.
That campaign was not producing revenue. It was standing next to revenue and taking credit for it. Attribution measures presence. Incrementality measures cause. Almost every reporting system you own measures the first and almost every budget decision you make requires the second.
Attributed revenue answers: which marketing touchpoint was closest to this order? It is a bookkeeping exercise. Some rule, last click, first click, last non-direct, a 7-day window, assigns each order to a channel. The rule always produces an answer, and the answer always sums to roughly your total revenue, which makes it feel authoritative.
Incremental revenue answers: how much of this would not have happened without the spend? That requires a counterfactual, which means running an experiment. It is harder, slower, and it is the only one that tells you whether to spend more.
The gap between them is not small. On the channels most prone to it, retargeting, branded search, and email flows aimed at people already mid-purchase, attributed revenue routinely overstates incremental revenue by a factor of two or more.
Every high-attribution, low-incrementality channel shares one property: it targets people who were already going to buy.
The pattern is that proximity to purchase is being read as influence over purchase. A channel that positions itself late in the journey will always look excellent under attribution and may be contributing very little.
The inverse is also true and costs brands more. Top-of-funnel spend, the thing that creates demand in the first place, looks weak under last-click because it is rarely the final touch. Cutting it makes attributed performance improve for a month, then revenue quietly declines a quarter later, and by then nobody connects the two events.
Crestline Co. ran a holdout test across three channels, suppressing each from a randomized 20 percent of its audience for three weeks and comparing against the exposed group.
| Channel | Attributed | Incremental | Real lift |
|---|---|---|---|
| Branded search | $84,000 | $11,700 | 14% |
| Meta retargeting | $196,000 | $71,300 | 36% |
| Meta prospecting | $334,000 | $291,600 | 87% |
| Klaviyo abandoned cart | $61,000 | $25,600 | 42% |
| Total | $675,000 | $400,200 | 59% |
Crestline Co. is a simulated DTC brand used for demonstration. These figures are illustrative and are not a client result.
Read the ordering carefully, because it inverts the dashboard. Branded search had the highest attributed ROAS in the account and produced the least actual lift. Prospecting looked like the weakest line and was carrying almost all of the real demand creation.
A budget meeting run off the attributed column moves money from prospecting into branded search and retargeting. That decision improves next month's reported ROAS and reduces the actual business, which is the worst possible combination because it is self-reinforcing. The metric you optimized rewards you for the thing that hurt you.
The tell. If your blended ROAS keeps improving while total revenue is flat, you are almost certainly shifting budget toward channels that harvest existing demand instead of creating it. Reported efficiency rises because you stopped paying for the hard part.
You do not need a formal MMM. Three approaches, in rising order of effort:
Geo holdouts. Turn a channel off in a set of matched regions, leave it running elsewhere, and compare revenue per capita. Clean, cheap, and it works for any channel with geographic targeting.
Audience holdouts. Suppress a randomized share of your list or audience from a flow or campaign. Klaviyo and Meta both support this natively. Best suited to email, SMS and retargeting.
Scheduled pauses. The blunt version. Turn a channel off entirely for two weeks and watch total revenue, not attributed revenue. Noisy, and for something like branded search it usually tells you what you need to know within days.
Whichever you use, measure the result on total revenue. If you measure the effect of a holdout using attributed revenue you have simply reproduced the original error inside your experiment.
The practical difficulty is that the evidence is scattered. Knowing branded search is not incremental requires connecting ad spend, organic search performance, total revenue and the timing of a test, which live in four systems that do not compare notes. Postlytix reads across them together and flags where reported performance and actual contribution have separated, with the supporting numbers attached so you can check the work.
This is one of eight places the numbers come apart. Why your e-commerce revenue numbers never match explains why fragmentation happens across the whole stack, and links to the rest.