How lift is calculated
By Harry Burman · Updated October 20, 2026
Spillmark answers one question: how many Amazon orders do your Meta ads cause? Not how many they get credit for. This page shows the geo holdout, the math and the error range, so you can check the design.
The short version
- Spillmark splits the US into two groups of states that normally sell in step.
- During the test, your Meta ads keep running in one group and pause in the other. The paused group is the holdout.
- If the holdout falls behind its usual share of your Amazon orders, the gap is what your ads were adding.
- Every result comes with a range. If the range is wide, the test couldn't tell, and Spillmark says so.
Why credit isn't cause
Meta counts a sale when someone saw or clicked your ad and then bought. Amazon Attribution credits Meta when a shopper clicked a tagged ad and bought within 14 days. Both are rules for handing out credit. Neither can tell you if the shopper would have bought anyway. That gap is why incremental sales differ from attributed sales.
They also miss people. Someone who sees your ad on Instagram, then searches for you on Amazon a day later, never clicked a tag. A holdout test doesn't depend on tracking any click. It counts every Amazon order by the state it ships to, so it sees those shoppers too. For how to choose a design, see incrementality measurement.
Step 1: Split the states into two matched groups
Orders come from Amazon's All Orders report (or the same report through Amazon's API). Spillmark counts each order once, by ship-to state and local date. It drops cancelled orders, orders outside the US, and Multi-Channel orders from other sites.
Then it draws 4,000 random splits of the 50 states and DC, each close to the share of orders you want in the holdout. It keeps the split whose weekly ratio between the two groups was steadiest. Steady groups make a small change easy to see.
The most recent 8 weeks are left out of that choice and used afterwards to check the noise. A split chosen for being steady always looks steadier on the weeks it was chosen on, so this keeps the check honest.
Step 2: Size the test before you pause anything
Spillmark tries every combination of 30%, 40% or 50% of orders in the holdout and 4 to 12 weeks of testing. For each one it works out the smallest lift the test could reliably detect (the minimum detectable effect) and how much Meta spend you'd pause.
It recommends the cheapest option that can detect the lift you care about. If none can, it tells you before you start, so you don't pause ads for an answer you won't get.
Here is how order volume and test length change what a test can see. These are best cases with a 50/50 split and 12 weeks of history:
| Amazon orders a day | Test length | Smallest lift it can detect |
|---|---|---|
| 10 | 8 weeks | 36% |
| 10 | 12 weeks | 31% |
| 30 | 4 weeks | 25% |
| 30 | 6 weeks | 21% |
| 30 | 8 weeks | 19% |
| 100 | 4 weeks | 13% |
Real sales are noisier than this. Promotions, stockouts and seasons all add noise, so Spillmark measures it from your own history and the real numbers come out larger.
To try rough numbers for your own brand, use the free holdout test calculator.
Step 3: Check the calendar
A test that overlaps Prime Day, Prime Big Deal Days, Black Friday week or December can be thrown off by the sale, not the ads. Spillmark checks those dates, your own promotions and price changes, and any earlier test (plus 2 weeks after it). A serious overlap blocks the test unless you choose to accept the risk, and that choice is written into the test design.
Step 4: Lock the design
Before the test starts, Spillmark writes down the groups, the dates, the holdout share, the expected minimum detectable effect and the noise level. It takes a SHA-256 fingerprint of that record. Any later change to the design would change the fingerprint.
Each record in a brand's ledger includes the fingerprint of the one before it, and the latest fingerprint is time-stamped by an independent timestamp authority (RFC 3161). Results are added when the test ends and are never edited. So you can show a test report to an investor, a buyer or your agency, and they can check it wasn't redesigned after the fact.
Step 5: Run the test and measure
You pause Meta ads in the holdout states using location targeting and leave everything else alone. When the test ends, Spillmark compares each group's orders during the test with the same group before it. The math is below.
The math
Lift. Before the test, the two groups sell in a steady ratio. That ratio predicts what the holdout would have sold with ads. The shortfall is the effect of the ads:
lift = (N_on,test / N_off,test) ÷ (N_on,pre / N_off,pre) − 1
N is the number of orders, "on" is the group that kept its ads, "off" is the holdout, "pre" is the baseline before the test (12 weeks by default) and "test" is the test itself. A lift of 20% means the holdout states would have had 20% more orders with ads on. This is a difference-in-differences on the log scale: it cancels out anything that moves both groups together, like a holiday or a price change everywhere.
Error range. Order counts behave roughly like Poisson counts, so the variance of log N is about 1/N. The four counts are independent, so their variances add:
SE(log lift) = √( φ · (1/N_on,pre + 1/N_off,pre + 1/N_on,test + 1/N_off,test) ) 95% range = exp(log lift ± 1.96 · SE) − 1
φ (phi) is the noise multiplier: how much more the weekly ratio between the groups wanders than pure chance would allow. It's measured from your history and is never below 1. At analysis time Spillmark uses the larger of the φ locked at registration and the φ measured in the baseline, so a noisy baseline can only widen the range. The p-value is the usual two-sided test of "no lift".
Minimum detectable effect. For 95% confidence and 80% power:
MDE = exp((1.96 + 0.84) · SE) − 1
The planner doesn't trust this formula alone. It also runs placebo tests: the same calculation on every past stretch of weeks when nothing changed. Those should find no lift, and about 5% of them will look "significant" by chance. Spillmark uses whichever is larger, the formula's error or the spread of the placebo results.
From lift to orders and profit. The lift turns into orders per day across the whole country:
extra orders a day = (orders a day with ads on everywhere) × lift ÷ (1 + lift) extra sales a day = extra orders a day × average order value
Divide by Meta spend per day to get incremental ROAS (iROAS). That dollar lift is also what people mean by marketing incrementality. Then Spillmark takes off Amazon fees and your product costs, because an extra sale only helps if it makes money after fees, costs and the ads that caused it.
Does it work? Checked on simulated data
We ran 200 simulated tests at 30 Amazon orders a day, a 50% holdout and 6 weeks, with a true lift of 25%. The data was simulated, not any brand's:
- The average estimate was 24.7%, so the method isn't biased.
- The 95% range contained the true lift 96 to 97% of the time.
- With no real effect, 3% of tests came out "significant", under the 5% you'd expect.
- For this design, the planner's minimum detectable effect was about 23%.
Before a test: a rougher estimate
Before you run a test, Spillmark estimates the effect from how your Amazon orders moved when Meta spend changed, day to day and state to state. It uses a state-by-day model with state and day effects (errors clustered by state), checked against a national daily model with weekday and trend terms (Newey-West errors). This is weaker than a test, because spend doesn't change at random. Spillmark shows it with its range and uses it to decide whether a test is worth running. A test gives the firmer answer.
Limits
- Small brands. Under about 10 Amazon orders a day, most tests can't see a realistic lift. Spillmark tells you before you start.
- Ads leak across state lines. People travel, and location targeting isn't perfect. Leakage makes the two groups look more alike, so it pushes the measured lift toward zero. Read a result as conservative.
- One test is one moment. It measures your ads at one level of spend, with one set of creative, in one season. Effects change, so test again when those change.
- A holdout costs some sales. If your ads work, the holdout states sell less during the test. Spillmark shows the expected cost before you start.
- Ship-to state, not ad location. Amazon reports where an order ships, not where the shopper saw the ad. Gifts and travel add a little noise.
Sources
Geo experiments are a published, peer-reviewed method. Spillmark's estimator is the simple ratio form described in Google's geo experiment papers. Meta's GeoLift uses synthetic control, a related method.
- Vaver & Koehler, Measuring Ad Effectiveness Using Geo Experiments (Google, 2011)
- Kerman, Wang & Vaver, Estimating Ad Effectiveness using Geo Experiments in a Time-Based Regression Framework (Google, 2017)
- Ben-Michael, Feller & Rothstein, The Augmented Synthetic Control Method (2021), the method behind Meta's open-source GeoLift
- GeoLift, Meta's open-source geo experiment package
FAQ
- What is incrementality testing?
- A test that estimates the sales your ads caused, not the sales a platform credited. Spillmark runs geo holdout tests: you pause Meta ads in matched US states, leave them on elsewhere, then compare Amazon orders by ship-to state.
- How is lift calculated in the test?
- Spillmark compares each group's orders during the test with the same group before it. Lift is the change in the on/off order ratio. Every result includes an error range; if the range is wide, Spillmark says so.
- What is the difference between lift and iROAS?
- Lift is the relative change in orders (for example, 20% more with ads on). Incremental ROAS, or iROAS, turns that into extra sales dollars divided by ad spend. Both need a holdout or similar design; platform ROAS uses credited sales instead.
- Why not trust Meta or Amazon Attribution alone?
- Both hand out credit by click or view rules. They include buyers who would have ordered anyway, and they miss shoppers who see a Meta ad and later search Amazon without a tagged click. A holdout counts every Amazon order by ship-to state.
- How small a lift can a test detect?
- It depends on your daily Amazon order volume, how long you test, the holdout share and how noisy your state groups are. Spillmark plans the test from your own order history and tells you before you start if none can detect the lift you care about.
Go deeper
Plain-English guides to each idea on this page:
- What is incrementality?: The sales your ads cause, not the sales they get credit for, and why the two differ.
- Attribution models: Last click, multi-touch, data-driven and view-through: how each splits credit, and what none can see.
- What is ROAS?: The formula, break-even ROAS, and how reported ROAS differs from incremental and marginal ROAS.
- Holdout groups: The people or places that don't see your ads, and how they show what the ads did.
- Geo testing (geo lift tests): Measure ads by turning them off in some regions and comparing sales.
- Matched market testing: How to pick test and control regions that normally sell in step.
- Difference-in-differences: The before-and-after comparison behind most geo tests, explained with sales.
- Synthetic control: Build a stand-in for the test region from a blend of others. The method behind GeoLift.
- Marketing mix modeling vs. testing: When a model is enough, when you need a test, and how they work together.
See it on a demo brand
The demo shows a finished holdout test, its range and its locked design, on made-up numbers.