Skip to main content
Back to AI Commerce Lab
Strategy·February 2026·11 min read

How Attribution Lies About Acquisition

Attribution dashboards are precise about the wrong thing. They measure how close a touchpoint sat to the sale, not how much it caused the sale. Trust incrementality tests over model weights, because only one of the two tells you what happens when you turn a channel off.

Last-click, first-click, and even multi-touch models assume a straight line from ad to purchase. Real buying behavior rarely works that way, and the gap between the model and reality is where marketing budgets go to die.

Get the model wrong and the damage compounds. Teams cut the channels that create demand because the dashboard can't see that demand being created, then over-fund whatever channel happened to be there when the buyer finally converted.

Attribution assumes a linear journey

Most attribution models are built on four steps: a user sees an ad, clicks it, converts, and credit gets assigned back to that click. Real acquisition doesn't move in a straight line.

A typical path looks more like this:

  • A LinkedIn post read weeks earlier
  • A brand name remembered subconsciously
  • A Google search days later
  • A review checked on a marketplace
  • A recommendation from a friend
  • A "direct" visit that closes the sale

Attribution tools only see what they can track, not what actually swayed the decision. They over-credit touchpoints that leave a data trail and under-credit the ones that don't.

LinkedIn postweeks earlierGoogle searchdays laterDirect visitcloses the saleSALEthe conversionINCREMENTALITY VIEWLAST-CLICK VIEW

Last-click assigns all credit to the touchpoint nearest the sale. Incrementality asks what the causal path actually was.

Last-click is the worst offender

Last-click attribution answers the wrong question. It asks what happened right before conversion, not what created the demand in the first place.

That's like crediting the cashier for the sale and ignoring the brand, pricing, and trust built over the weeks before the customer walked in.

Common distortions this causes:

  • Brand search looks like a top acquisition channel
  • Retargeting appears more effective than prospecting
  • Upper-funnel content gets undervalued or cut
  • Paid channels compete with each other for credit instead of impact

Last-click doesn't measure influence. It measures proximity to purchase. Those are not the same thing.

A model that can't see a touchpoint doesn't ignore it. It reassigns that touchpoint's credit to whatever it can see, which is usually the channel closest to the sale.

Multi-touch models spread the blindness, not fix it

Multi-touch attribution sounds smarter, and in theory it is. In practice it still misleads, for three reasons.

It only counts trackable touchpoints

Dark social, word of mouth, offline exposure, and brand memory don't show up in the model at all. A multi-touch model spreads credit across five channels it can see and zero credit across the three it can't.

The weighting is arbitrary

A model that gives first-click 40% and last-click 40% is no more defensible than one that gives them 10% and 70%. Most weighting schemes are opinion wearing a math costume.

It assumes every touchpoint caused the outcome

Seeing five retargeting ads doesn't mean they drove the purchase. It may just mean the buyer had already decided, and the ad server kept serving.

Data-driven attribution moved the guesswork, it didn't remove it

Google now defaults every GA4 property to data-driven attribution (DDA), and Google Ads runs the same model for eligible conversion actions. DDA uses a trained algorithm to distribute credit across the observed path instead of a fixed rule.

That's a real improvement over a flat 40/20/20/20 split. It still only sees the touchpoints Google's pixels and click IDs can capture, and Google's own eligibility bar makes the limits explicit: an account needs roughly 3,000 ad interactions and 300 conversions in a 30-day window to qualify, dropping to 2,000 and 200 to stay eligible.

Below that volume, DDA falls back to a rules-based model anyway. A machine-learned weighting scheme is still a weighting scheme. It can't credit a channel it never observed, no matter how good the algorithm is.

Checking the shift yourself in GA4

Before trusting any single model, pull GA4's attribution reporting and compare how credit for the same conversions shifts between last-click and data-driven. A campaign that looks strong under one model and weak under the other is a signal to investigate, not a verdict either way.

Channel and intent are not the same thing

The most dangerous claim attribution makes is that a channel "acquired" the customer. Channels don't acquire customers. Intent does.

  • Paid search usually captures intent that already existed
  • SEO usually reflects trust built elsewhere
  • Social usually creates demand that shows up later
  • Email usually retains, not acquires

Collapsing intent creation and intent capture into one bucket leads to bad calls: cutting awareness spend because it doesn't "convert," over-investing in bottom-funnel tactics, and starving the channels that create demand in the first place.

Cookie loss made attribution worse, not better

Cookie deprecation, iOS privacy changes, and platform data silos mean attribution models now run on partial visibility, even as vendors roll out cookieless measurement approaches like Privacy Sandbox.

Every platform still reports "results." Each one claims more credit than is mathematically possible, cross-channel influence disappears from the data, and incrementality becomes a guess.

The output looks precise. It's incomplete precision, and that's more dangerous than admitting uncertainty.

GA4 tries to patch part of this gap with behavioral modeling for consent mode, which estimates conversions from users who declined tracking based on the behavior of similar consenting users. Modeled data is a statistical estimate standing in for a real signal, not a fix for the underlying visibility gap.

A dashboard where every platform claims more credit than total conversions isn't giving you precision. It's giving you the illusion of it.

Media mix modeling: pulling the view back up a level

Media mix modeling (MMM) sidesteps the cookie problem by working from aggregate spend and outcome data instead of individual click paths. It regresses sales against spend by channel, over time, adjusting for seasonality and price.

Google open-sourced its own MMM framework, Meridian, and made it generally available to any team willing to run the modeling themselves. It uses Bayesian causal inference and models effects like ad-stock decay and channel saturation, rather than crediting individual clicks.

MMM has its own weaknesses. It needs months of clean historical data, it reports at the channel level rather than the campaign level, and it can't tell you why a channel underperformed, only that it did. Pair it with incrementality tests, don't treat it as a replacement for them.

When MMM and incrementality tests disagree

They will, occasionally, since one models aggregate history and the other measures a specific window. Weight the incrementality test higher for a near-term budget call, and weight MMM higher for long-range planning across the full channel mix.

Choosing between the four approaches

MethodWhat it measuresBlind spotBest use
Last-click / first-clickProximity to conversionEverything before the last (or after the first) tracked clickQuick directional read, not budget decisions
Multi-touch / DDAWeighted credit across trackable touchpointsUntrackable channels; correlation treated as causationComparing paid channels against each other, same tracking depth
Media mix modelingChannel-level contribution to aggregate salesCampaign-level detail; needs months of clean dataAnnual or quarterly budget allocation across channels
Incrementality / holdout testingCausal lift from turning a channel on or offCost and time per test; geo or audience contamination riskHigh-stakes decisions: cutting or scaling a channel

Designing a holdout test that actually answers the question

An incrementality test asks one question: what happens to conversions when a channel is removed, compared to a matched group where it keeps running. That's the only method on this list that measures causation instead of correlation.

Pick the test design

Three designs cover most cases:

  1. Geo holdout: pause the channel in a set of matched regions, keep it running elsewhere, compare conversion trends between the two
  2. PSA or ghost ads: serve a public-service or house ad to the holdout group instead of no ad at all, which controls for the ad slot itself
  3. Platform-native lift study: use the ad platform's built-in tool, such as Meta's Conversion Lift or Google's Conversion Lift, which randomizes at the user level behind the platform's own ad delivery

Match the control before you start

Match test and control regions or audiences on the variables that actually move revenue: historical conversion volume, seasonality, average order value, and existing channel mix. A mismatched control invalidates the read before the test even starts.

Run it long enough to trust the number

A test that ends the moment it shows significance is more likely to be noise than signal. Run through at least one full purchase cycle for the product, including any typical consideration lag, before reading the result.

Read the result against the platform's own number

Compare the lift the test measured against what the platform's dashboard claimed for the same period. A gap in either direction is informative: a platform overclaiming inflated ROAS, or underclaiming a channel's halo effect on other channels.

Where holdout tests go wrong

Four failure modes account for most bad reads:

  • Underpowered regions. A test region too small to generate enough conversions can't detect a real effect, and a null result gets misread as "the channel doesn't work"
  • Spillover. National TV, cross-border shopping, or a shared branded search term can leak the treatment into the control group and shrink the measured lift
  • Seasonality contamination. Running the test across a regional promotion or local event skews one side of the comparison for reasons that have nothing to do with the channel
  • Novelty effects. Turning a channel off produces a sharper short-term drop than the long-run effect, since existing momentum takes time to decay
The dashboard tells you what happened. The holdout test tells you what would have happened without that channel. Only one of those is a budget decision.

How you'd verify the win, not just the test

A single test result is a data point, not a policy. Before you act on it at scale, check the following:

  • Did the lift hold across more than one time window, or was it a single lucky period
  • Does the result replicate in a second geo pair, not just the original test regions
  • Did a downstream metric move too, such as branded search volume or direct traffic, not just the platform's own reported conversions
  • Is the effect size large enough to justify the operational cost of reallocating budget

A common pattern: a channel that looks strong under last-click posts a much smaller lift under a holdout test. Most teams respond by right-sizing the budget rather than cutting the channel outright.

If a test only clears the first bar, treat the result as directional. Scale the budget change gradually and keep measuring, the same way you'd roll out a code change behind a feature flag rather than shipping to 100% of traffic on day one.

What to measure alongside incrementality

Track demand signals, not just conversions. Brand search lift, direct traffic trends, returning-visitor growth, and conversion-rate stability over time show demand being created, not just captured.

Evaluate channels by role, not ROI alone. Some channels build awareness, some build trust, some remove friction, some accelerate a decision already made. Judging all of them on last-click ROI is like judging a football team only on goals scored.

Use attribution as a directional signal, not a verdict. It's useful for spotting trends and comparing changes over time. It's dangerous as the sole input for budget cuts or channel shutdowns.

The question that actually matters

Stop asking which channel acquired the customer. Ask what combination of experiences made the customer confident enough to buy.

That shift, from credit assignment to decision understanding, is where growth teams actually win.

We treat attribution as one input, not a verdict. When a client wants to defend or cut a channel's budget, we push for a holdout test before we touch the dashboard.

FAQ

Is data-driven attribution in GA4 better than last-click?

Yes, for comparing trackable digital channels against each other. It still can't see word of mouth, offline exposure, or brand memory, so it's not a full picture of acquisition.

How long should a holdout test run?

Long enough to cover one full purchase cycle for the product, including typical consideration time. A test read too early usually measures noise, not lift.

What's the difference between MMM and incrementality testing?

MMM estimates channel contribution from historical spend and sales data at an aggregate level. Incrementality testing runs a live experiment with a holdout group. Use MMM for annual planning and incrementality tests for specific budget decisions.

Can a small budget run an incrementality test?

Yes, with a platform-native lift study rather than a custom geo holdout, since platform tools randomize at the user level and don't need dozens of matched regions.

Should multi-touch attribution be abandoned entirely?

No. Keep it as a comparison tool across channels with equal tracking depth, and pair it with at least one incrementality test per year on your top two spend channels.

What if we don't have the budget for enterprise MMM tools?

Google's Meridian is free and open source, but it still needs someone comfortable with Python and Bayesian modeling to run it well. Below that capacity, a disciplined incrementality testing calendar delivers more reliable decisions per hour invested.

References

From the Destm engineering archive. For current work on this topic, start at Solutions or the blog.