The MarketTwin™ method

How Countlift proves what your ads actually did.

Compare every market that got more media with a twin built from markets that didn’t. The gap is what the ads did. Written for marketers, checkable by your CFO.

Actual sales
What your locations sold
− MarketTwin
What they would have sold without the extra media
= Incremental
Customers the ads brought in, with a 95% range

or try the live demo

The problem

Ad platforms see the click. Your money is made at the counter.

Click attribution was built for online checkouts. For locations, most customers never click, and the ones who do get claimed by every platform at once.

WHAT AD PLATFORMS SEESees adClicksBuys onlineWHERE MOST OF YOUR REVENUE HAPPENSSees adDrives overBuys at the counterNo click, no cookie, no credit, even when the ad is what brought them in.

Walk-ins never click

A billboard, a radio spot or a video seen on the couch leaves no trail to the front desk.

Everyone claims the same guest

Each platform counts every customer it touched. Add the reports up and you often get more sales than you made.

Credit is not cause

A regular who saw an ad still counts. The real question is who came because of it.

The method, step by step

Nine steps from raw totals to a budget move.

Each step is a documented module in the engine, described in plain terms.

  1. 01

    Bring two tables you already have.

    Sales by location (guests or transactions, revenue if you have it) and ad spend by market and channel. Daily rows roll up into weeks.

    Totals only. No customer records.

    SALES BY LOCATIONWeek ofLocationGuestsJun 2Midtown1,184Jun 2Lakeside962Jun 9Midtown1,207SPEND BY MARKETWeek ofMarketChannelSpendJun 2Market 1Search$1,900Jun 2Market 1Social$2,400Jun 2Market 2Search$1,750One weekly panelMonday weeks · gaps filled
    Sample rows
  2. 02

    Sort markets into media markets and twins.

    Markets whose spend rose become media markets. Steady-spend markets become twin candidates. For a planned test, you pick both.

    Media market: weekly spend up more than 25% and $150Twin market: spend held steady
    Illustrative: 18 markets
  3. 03

    Build each media market a twin.

    Synthetic control: the weighted blend of steady-spend markets that best matched the media market’s sales before media started. Weights are never negative and sum to 1.

    Augmented synthetic control and synthetic diff-in-diff both run; the lower back-test error on your data wins.

    Twin A× 0.42Twin B× 0.31Twin C× 0.19Twin D× 0.08PRE-PERIOD · 12 WEEKSMedia marketIts twinTwin = 0.42·A + 0.31·B + 0.19·C + 0.08·Devery weight ≥ 0 · weights sum to 1.00 · pre-period fit 99%
    Illustrative worked example
  4. 04

    Carry the twin forward. The gap is the lift.

    The twin runs on through the measured weeks as the counterfactual. Actual minus twin is incremental guests and revenue.

    1,0001,0501,1001,1501,200MEDIA STARTSPRE-PERIODActual guestsTwin: what would have happenedThe gap = incremental guests from the media
    Illustrative: 12 pre weeks, 10 measured weeks
  5. 05

    Put an honest 95% range on it.

    Sized from back-tests on your own history: hundreds of fake spend changes where the true lift is zero, plus planted lifts of known size. A market only counts as a win when the low end clears zero.

    Calibrated with conformal inference, then graded A to D.

    PLACEBO: EACH TWIN RUN AS IF IT HAD MEDIAnoise: lifts that happen by chance0%-5%+5%+10%+15%MEDIA MARKET · 95% RANGE+3.1%+8.4%+13.7%
    Illustrative
  6. 06

    Split each market’s lift to its locations.

    Each location inherits its market’s counterfactual by its share of pre-period guests. New stores stay out, so an opening never looks like ad performance.

    Market lift+1,200 guests45%Midtown+54035%Lakeside+42020%Airport Rd+240Share of pre-period guests. Only locations open 4+ weeks before the window count.
    Illustrative
  7. 07

    Model channels across markets, then test.

    Market lift is explained by channel spend: guests per dollar, never negative, shrunk toward the brand average. It is labelled modeled. Weak channels get a holdout test.

    MODELEDGuests per incremental dollar, across media marketsPaid socialSearchCTVRadioweak: under 20% of brand averageConfirm with a holdout test →
    Illustrative
  8. 08

    Read openings against an expected ramp.

    New locations are compared with a ramp built from your own openings without launch media, adjusted for seasonality. The 16-week gap is what launch media added.

    6008001,000wk 0wk 5wk 10wk 15New location, with launch mediaExpected ramp, no launch media
    Illustrative
  9. 09

    Turn the read into budget moves.

    Spend in markets with no measurable lift moves to the lowest-cost proven market. Returns diminish, so the next guest there costs more than the average one.

    SPEND →GUESTSaverage cost per guestnext dollarMARGINAL COST= avg cost ÷ 0.6elasticity 0.6 · adjustableNo measurable liftLowest-cost proven market
    Diminishing-returns assumption

How we keep it honest

It tells you when it can’t tell you.

A tool that always finds lift isn’t measuring. These guardrails run on every read.

Too few twins

Fewer than 2 twin markets? We say so.

The engine falls back to a baseline-only model, the result carries an honest grade, and you get a prompt to plan a holdout test.

Every read

Graded A to D, with the evidence.

Each result shows its grade, what was accounted for, the back-test record on your data and one next step.

See the five layers of the engine →
Minimum data
4 weeksruns at all
~16 weeksa solid read
52 weeksbetter: seasonality separated

Weekly sales history before the measured period.

What can bias a read, and what to do about it

Market-specific shocks

RISK

A road closure, new competitor or storm hits one market but not its twins.

FLAG

A machine-learned baseline absorbs weather, holidays, school breaks and local events. Other shocks show up as a weaker pre-period fit and a wider range.

Spillover between neighbors

RISK

Media in one market reaches shoppers in a nearby twin, shrinking the measured gap.

FLAG

Exclude neighboring markets from the twin pool, or plan a test with holdouts far apart.

Compare methods

Every method has a job. Here’s where each fits.

MarketTwin reads spend changes you already made, and tells you when a geo test is the better next step.

Comparison of platform attribution, marketing mix models, geo lift tests and Countlift MarketTwin
MethodIn-store salesLocation detailSpeed to readCostNeeds a data teamWatch out for
Platform attributionOnline clicks; modeled store visits on someWhere store-visit reporting existsReal timeIncluded with ad spendNoEach platform grades itself; credit is not cause
Marketing mix modelYes, total salesUsually national or regionalMonths to build; quarterly refreshHigh: consultants or in-house teamYesBest for long-run, all-channel planning
Geo lift testYes, the gold standardMarket levelWeeks per test, planned aheadHoldout markets give up mediaUsuallyOne question per test
Countlift MarketTwinYes, from your sales totalsEvery market and locationReads past spend changes; refreshes weeklySoftware subscriptionNoNeeds steady-spend markets; channels modeled

strong partial or with caveats weak

Validated in code

Open to your analysts. Same inputs, same outputs.

  • Your analysts can review the engine’s code, method notes and tests.
  • Deterministic: fixed solvers and starting points, so every read reproduces.
  • Every assumption is visible and editable: window, pre-period, elasticity, twin pool.
  • Tests build a sample brand with known effects and check the engine finds them.
  • Every account is back-tested on its own history, and shows its own track record.
engine/tests · sample brand with built-in effects
$ python -m unittest discover -s tests
✓Market with a real campaign effect→ significant
✓Market whose campaign does nothing→ not significant
✓Channel built with zero effect→ flagged weak
✓Opening with launch media→ beats expected ramp
✓Only one twin market→ marked directional
✓Engine vs. its reference implementation→ same numbers, within 1%

Methodology FAQ

Questions your analyst will ask.

How is this different from a geo lift test?

Same family of method. A geo lift test plans holdouts in advance. MarketTwin reads the spend changes you already made, so your history gives an answer now. When a read is weak or directional, Countlift helps you design a holdout test to confirm it.

Why should I trust a blend of other markets?

Because you can check it. Each twin is a named mix of your own markets, with weights that add up to 1 and its pre-period fit shown. The placebo test shows how much “lift” appears by chance in markets with no change.

Get the read, and its 95% range, for your own markets.

Free location report · No card · No customer data