Our small-business guide to measuring without trackers covers the basics: counting visits, tagging links, asking customers. This guide is the other half. It’s for businesses spending enough on media that “which channel worked?” is a budget question worth real money.
Attribution and incrementality are different questions
Attribution asks which touchpoint gets the credit for a sale. Incrementality asks whether the sale would have happened without the ad. Pixel-based reporting mostly answers the first question, and it answers it generously: an ad shown to someone who was going to buy anyway still gets the credit.
Removing trackers takes away the per-person attribution data. It doesn’t take away incrementality, because incrementality was never measured person by person in the first place. It’s measured by comparing groups, and groups can be places and weeks rather than people.
Everyday attribution: links, codes and asking
Tagged links plus cookieless analytics. Put campaign parameters on every link you control: ads, emails, social posts, partner placements. First-party, cookieless analytics (clause NFS-2.1, ruling R-007) will then report visits and sales by source on a last-click basis. It’s crude, but it’s consistent, and good enough to spot a channel that has stopped working.
Promo codes. Give each channel, podcast, partner or campaign its own code. Codes also pick up the sales that links miss, such as someone who heard an ad in the car and typed your address in later. Codes leak onto voucher sites, so treat code counts as a signal, not a census.
“How did you hear about us?” Ask it after purchase, as a single question with a short fixed list and an “other” box. Report the answers in aggregate. This is the only method on the list that captures word of mouth, podcasts and offline media properly, and customers are often happy to answer.
Used together, these three give a weekly picture by channel. None of them can tell you what would have happened if you’d spent nothing. For that you need an experiment.
Geo experiments: switch it off somewhere
A geo experiment splits the country into regions, changes spend in some of them and leaves the others alone. You then compare sales in the two groups, before and during the test. Google researchers described the method in a 2011 paper, and Meta publishes an open-source tool for it, GeoLift. All it needs is your own sales or sign-ups by date and location. No platform ever sees a customer record.
There are two common designs:
- Holdout: go dark in some regions and keep spending in the rest. This shows what the channel is adding.
- Scale-up: increase spend in some regions. This shows whether extra budget still pays its way.
GeoLift’s published best practices give useful rules of thumb:
- Test for at least 15 days with daily data, or four to six weeks with weekly data, and cover at least one full purchase cycle.
- Have at least four to five times the test length in stable historical data, and at a minimum 25 pre-test periods across 20 or more regions. Ideally include the last 52 weeks, so seasonality is visible.
- Use daily data if you can, at the finest level of geography the platform lets you target.
- Have no gaps: every region needs a figure for every period.
- Hold other local marketing steady across all regions during the test.
These are rules of thumb from one tool’s documentation, not guarantees. The honest test of whether a design will work is a power analysis on your own data before you spend anything. GeoLift and similar tools include one.
One thing to watch: the platforms’ own lift products usually depend on the tracking you’ve just removed. Meta’s Conversion Lift compares test and control groups using its pixel, app events, Conversions API or offline conversion data. Google’s geography-based Conversion Lift needs at least one Google Ads conversion action, such as its conversion tag or uploaded offline data. Both are out under the Standard (rulings R-003, R-004). A geo experiment you design and read yourself, using your own sales figures, is fine.
Marketing-mix modelling: the long view
A marketing-mix model (MMM) is a statistical model of your sales over time. It estimates how much each channel contributed, after allowing for seasonality, pricing, promotions and other factors outside your control. It then tells you where the next pound is likely to do most good.
There are two free, open-source packages:
- Meridian (Google). Released to everyone in January 2025 under the Apache 2.0 licence. It’s in active development: version 2.0.0 was published on 3 September 2026. Google describes it as built on aggregated data, and it can use the results of your experiments to calibrate the model.
- Robyn (Meta Marketing Science). MIT-licensed. The R version is the mature one, and the Python version is labelled an LLM-translated beta. The latest tagged release on GitHub is 3.12.0, from December 2024. Meta calls the project “experimental”.
What the data looks like. Each row is a week (and a region, if you have that level), with:
- sales or another outcome;
- spend on each channel, plus impressions or clicks where you have them;
- control variables, such as price changes, promotions, competitor activity, search demand or holidays;
- optionally, population by region.
There are no customers in it, no IDs and no click trails, just totals. That’s why an MMM sits comfortably inside the Standard.
How much you need. Meridian’s documentation recommends at least two years of weekly data for regional models and three years for national ones. Robyn’s guide says at least two years of weekly data, and around seven to ten times as many rows as input variables. If you have less, combine channels or model at regional level.
Be realistic about what a model can do. An MMM is only as good as the variation in your spend. If every channel has moved up and down together for three years, no model can separate them. That’s why the two methods work best together: run geo experiments to get firm answers on your biggest channels, then feed those answers into the model as calibration. Meridian is built to do exactly that.
A sensible sequence
- Tag every link and put codes on every channel you can. Add the post-purchase question.
- Start keeping a weekly spend-and-sales table by channel and region now, even if you won’t model it for a year.
- Run a geo holdout on your largest paid channel.
- Once you have two years of clean history, build a mix model and calibrate it with your experiments.
- Re-test a channel whenever the model’s answer would change a large budget decision.
Clause NFS-2.1 allows analytics that count rather than follow: first-party, cookieless and aggregate, with nothing linking visits across days (ruling R-007). Clause NFS-2.2 applies the same logic to email: counts, not per-person open logs. Ad pixels, conversion APIs, offline click-ID imports and GA4 are not allowed (rulings R-003, R-004, R-006), even with consent (clause NFS-1.3). So any platform measurement product that depends on them is out too. Everything else in this guide runs on your own aggregate figures, and none of it sends a customer anywhere.
Sources (13), checked 20 September 2026
- Collect and organize your data – Meridian, Google for Developers
- Amount of data needed – Meridian, Google for Developers
- Meridian is now available to everyone – Google blog, 29 January 2025
- google/meridian – GitHub
- google-meridian – PyPI release history
- facebookexperimental/Robyn – GitHub
- Robyn releases – GitHub
- An analyst’s guide to MMM – Robyn documentation
- GeoLift best practices – Meta, GitHub Pages
- GeoLift walkthrough – Meta, GitHub Pages
- Measuring ad effectiveness using geo experiments – Vaver and Koehler, Google Research (2011)
- Lift studies – Meta Marketing API documentation
- Set up Conversion Lift based on geography – Google Ads Help