Incrementality vs attribution vs marketing mix modeling: what each one tells you

Attribution hands out credit, incrementality tests measure extra sales, and a mix model reads spend against sales. What each answers, and where each misleads.

By Justin Maddahi · · 10 min read

The short answer

Attribution decides which ad gets credit for a sale, using clicks and views. Incrementality measures the sales that would not have happened without the ad, by comparing people or regions that saw it with ones that did not. Marketing mix modeling is a statistical model of total sales against spend over time. Use attribution daily, a test each quarter, and a model once you have years of varied spend.

One campaign. One month. Three measurements that do not agree.

Meta’s own report makes it look like your best campaign. A holdout test makes it look like a loss. A mix model lands somewhere between the two.

None of the three is a mistake.

They are three different questions, and nobody wrote down which one was being asked. Attribution, incrementality and marketing mix modeling are three ways to ask “did my ads work?” Attribution hands out credit for sales. Incrementality measures the sales the ads caused. A mix model reads total sales against spend over time.

They give different numbers for the same campaign, and all three can be right. The trouble starts when one method’s number is used to answer another method’s question. Below: what each needs, a worked example, the traps for multi-channel brands, and a plan.

Three methods, three different questions

Attribution: who gets the credit?

Attribution assigns a sale to the ads a buyer touched before buying. A rule decides who wins. Last click hands everything to the final click. Platform attribution lets each ad platform count any sale that follows its own ad.

Every platform sets a window for this: how long after an ad a sale can still count. Meta’s developer blog says its reporting API keeps click windows of 1, 7 and 28 days and a 1-day view window. It stopped returning its 7-day and 28-day view windows on January 12, 2026. A view window means a buyer who only saw the ad, and never clicked, can still count.

  • The question it answers: which ads, audiences and creatives are linked to sales?
  • What it needs: tracking. A pixel (tracking code on your website), a server connection, or tagged links.
  • Speed and cost: a day or two, and it comes free inside each ad platform.
  • The catch: it counts buyers who would have bought anyway. It cannot tell a sale the ad caused from a sale the ad stood next to.

Incrementality: what would not have happened?

Incrementality is the sales that exist only because of the ad. You cannot look it up. You have to run an experiment.

One group sees the ads. A matched group does not. The difference in sales between them is the lift.

There are two common designs:

  • A holdout test splits people at random. Meta’s Conversion Lift compares “a test group that sees your ads” with a control group that does not. Before paying for one, ask how it would count sales on Amazon or in stores. Google Ads offers Conversion Lift based on users too.
  • A geo test splits regions. Ads run in some regions and stop in matched ones. Google offers a version based on geography. Its comparison of lift types says it can measure online and offline conversions. Meta publishes an open-source tool for this design, GeoLift.

What it takes:

  • The question it answers: how many extra sales did this spend cause, in this period?
  • What it needs: enough sales in both groups to beat normal noise, and a quiet stretch with no big promotions. GeoLift’s best practices recommend 20 or more regions. They also recommend stable history before the test at least 4 to 5 times as long as the test.
  • Speed and cost: weeks, not days. The main cost is the sales you give up in the group without ads. As of September 2026, Google’s help page says Conversion Lift “isn’t available for all Google Ads accounts.” Google also says geo studies tend to need more budget than user studies.
  • The catch: it measures one campaign, in one period, at one spend level.

Marketing mix modeling: what does spend do to sales over time?

A marketing mix model (MMM) is a statistical model of total sales against spend, week by week. It also accounts for season, price and promotions. No clicks, no user tracking, only totals.

Two free, open-source versions exist. Meta has Robyn, and Google has Meridian. Both let you feed in results from lift tests to anchor the model (Meridian’s guide to this).

  • The question it answers: across all channels, roughly how much does each one return, and where does extra spend stop paying?
  • What it needs: history. Robyn’s analyst guide asks for “a minimum of two years of historical weekly data.” It also needs spend that went up and down. Meridian’s data guide says “the true answer depends on what the data is like.” In its own example, two years of weekly data is too little for a national model with 12 media channels.
  • Speed and cost: weeks to build, then monthly or quarterly refreshes. The software can be free. The analyst time is not.
  • The catch: the answer is an average over years, with a wide range around it.

Side by side

Attribution Incrementality test Marketing mix model
Question Which ads are linked to sales? What extra sales did the ads cause? What does each channel return over time?
How Credit rules on clicks and views Compare exposed and held-out groups Model of total sales against spend
Data needed Pixel, server events or tagged links Sales by group or by region 2+ years of weekly sales and spend
Time to an answer A day Several weeks per test Weeks to build
Main cost Free in each platform Sales lost in the control group Analyst time
Sees Amazon sales? Only through Amazon’s own tags Yes, if you measure them by region Yes, if you feed them in
Sees store sales? Rarely, for sales through retailers A geo test can Yes, if you feed them in
Tends to Overstate Be right for one period only Blur, with a wide range
Best for Daily and weekly decisions Checking your biggest channel Setting yearly budget by channel

A worked example: one Meta campaign, three answers

Illustrative numbers only. A travel mug brand spends $20,000 in a month on one Meta campaign. It sells on Shopify, Amazon and in about 400 stores. Here is what each method says.

Method Sales credited to the campaign Return on $20,000
Meta’s own attribution (store checkouts only) $60,000 3.0x
Holdout test (store checkouts only) $28,000 1.4x
Mix model (all channels, two years) $36,000 1.8x

That looks like a contradiction. It is three answers to three questions. Here is one way all three could be right.

Attribution counts people who were already coming. Say $32,000 of the $60,000 came from past customers and people who had already searched the brand. They clicked or saw an ad on their way to buying. Meta counts them. The holdout test does not, because the control group bought at that rate too. That leaves $28,000 of extra store sales, or 1.4x.

The test only looked at one store. The lift study counted Shopify checkouts, because those were the only sales the brand’s pixel sent to Meta. Some people saw the ad and bought the mug on Amazon or at a shop. The mix model reads total sales in every channel. Say it finds $8,000 more: $6,000 on Amazon and $2,000 in stores. $28,000 plus $8,000 is $36,000, or 1.8x.

The model is an average, and the test is a snapshot. The 1.8x covers two years at many spend levels. The model might report a range such as 1.2x to 2.4x. The test covers one month at one spend level. So the gap between them may be part halo, part timing. Halo here means sales in places the test did not count. You cannot tell which from these numbers alone.

Now the part that decides the budget. Say this brand’s break-even ROAS is 2.0x. ROAS is sales divided by ad spend. Break-even is the ROAS where an ad just pays for itself after product cost, fees and shipping. At 2.0x, half of each sales dollar is left to pay for ads.

  • At 3.0x attributed, $60,000 leaves $30,000 against $20,000 of spend. The campaign looks $10,000 ahead.
  • At 1.4x from the test, $28,000 leaves $14,000. The campaign is $6,000 behind.
  • At 1.8x from the model, $36,000 leaves $18,000. The campaign is $2,000 behind.

Compare break-even with the incremental return, not the attributed one. Note that the model’s range reaches 2.4x, above break-even. So the loss at 1.8x is likely, not certain.

Where each method misleads a multi-channel brand

Every platform claims the same order

A shopper clicks a Meta ad, then a Google ad, then buys. Meta and Google can each count that one order. Add up the platform reports and the total can run well past your real sales. Never add platform-reported revenue across platforms. Compare the sum with actual revenue as a sanity check. MER (all revenue divided by all marketing spend) is the number no platform can inflate.

Pixels cannot see Amazon

A pixel lives on your own website. When an ad sends a shopper to Amazon, the checkout happens where your pixel cannot follow. Meta then reports near-zero purchases for ads that may be selling well. Amazon Attribution tags can fill part of the gap, but they only see clicks. We cover this in depth in do Meta ads drive Amazon sales.

Store sales have no clicks

Nobody clicks from an Instagram ad into a shop down the street. Store sales usually arrive as weekly retailer data by store or region, with no buyer names. Click-based attribution has nothing to match them to. A geo test with regional store sales, or a model, can see that effect. Leaving it out makes ads meant to build awareness look worse than they are.

A test that watches the wrong store

A lift study reads the sales it is given. If that is only Shopify checkouts, an ad that mostly sells on Amazon will look like it did nothing. Before any test, write down which sales it counts. For a brand that sells mostly on Amazon, a geo test using Amazon orders by ship-to region is often the better design.

A test a promotion walked all over

A promotion, a price change or a stockout during the test swamps the ad’s effect. So does a test too small to separate lift from normal week-to-week swings. Pick a quiet period, and check before starting that each group will have enough sales. Ads sending shoppers to Amazon need about two extra weeks at the end, because Amazon Attribution keeps crediting sales for 14 days after a click.

A model fed flat spend

A model learns from change. If Meta spend sat at the same level every week, the model cannot tell what Meta did. The same is true when two channels always rise together, like Meta and Google both going up every fourth quarter. The model then splits credit between them by guesswork. Results from a lift test give it a fixed point to work from.

The next dollar does not earn the average

A 1.8x average return does not mean the next $10,000 returns 1.8x. Most channels pay less as spend rises, because the easiest buyers are reached first. Ask the model for the return on added spend at your planned budget, not the average.

The ladder: what to build first

A brand doing a few million to tens of millions a year does not need all three on day one. Climb in this order.

  1. Make attribution consistent before anything else. Pick one attribution window per platform and write it down. Label every number with its platform, its window and where the ad sends people: your store, Amazon or a retailer. Never add platform numbers together. Track MER next to them every week.
  2. Test your biggest channel once a quarter. Run a holdout or geo test on the channel with the most spend. Measure sales in every place you sell, not only the store the platform sees. Pick a quiet month and plan the sales you will give up.
  3. Turn each test into a correction factor. Divide the incremental result by what attribution said for the same period. In the example, 1.4 divided by 3.0 is about 0.47. Apply it to daily attribution for that channel until the next test. Re-test when the campaign, the offer or the spend level changes a lot.
  4. Build a model only when the data can support one. That means about two years of weekly sales and spend, spend that went up and down, and several channels at real budgets. Feed in your test results. Treat its output as a range for yearly budget choices, not a daily scoreboard.
  5. When two methods disagree, test the disagreement. A gap between the model and the test is a question, not a verdict. Design the next test to answer it.

Start at step one and stay there until it is boring. The model can wait. What cannot wait is one agreed window per platform, a label on every number, and one test a quarter on the channel that costs the most. Attribution hands out credit. Only a test measures cause.

Synthesis labels every figure with where it came from and what it cannot see, such as “Meta’s pixel cannot see Amazon checkouts.” Whether each ad sends shoppers to Amazon or to the store is a definition written once and shared by every answer. When two figures for the same metric and period disagree by more than 5%, the answer is flagged rather than one being quietly picked.

Questions people ask

What is the difference between incrementality and attribution?

Attribution gives credit for a sale to the ads a buyer touched first. It counts buyers who would have bought anyway. Incrementality counts only the extra sales the ads caused, measured against a group that did not see them. Attribution is almost always the higher number.

What is incrementality testing?

It is an experiment. You keep ads away from a random group of people, or from a set of regions, and compare their sales with the group that saw the ads. The gap is the incremental effect. Meta Conversion Lift, Google Ads Conversion Lift and geo tests all work this way.

Is marketing mix modeling better than attribution?

It answers a different question. A mix model sees every channel, including Amazon and store sales, and needs no clicks. But it needs about two years of weekly data and gives a slow, averaged answer. Attribution is fast and detailed but only sees tracked clicks and views.

How much data do you need for marketing mix modeling?

Meta’s open-source Robyn guide asks for at least two years of weekly data. Spend also has to vary over that time. A channel that ran at the same level every week gives the model nothing to learn from.

Why does the revenue my ad platforms report add up to more than my sales?

Each platform counts any sale that follows its own ad within its own window. One buyer who clicked a Meta ad and then a Google ad is claimed by both. The platform totals overlap, so they should never be added together.

How long should an incrementality test run?

Long enough to cover at least one purchase cycle and to collect enough sales in both groups. GeoLift’s guide suggests at least 15 days with daily data, or 4 to 6 weeks with weekly data. Add about two weeks for ads that send shoppers to Amazon, since Amazon Attribution credits sales up to 14 days after a click.