Skip to content

How much data do I need for MMM?

Usually two to three years of weekly sales and ad spend per channel. Meta's Robyn guide sets two years of weekly data as the floor. Google's Meridian asks for three years for a national model, or two with regional data. The more channels and controls you model, the more weeks you need.

By , Founder & CEOUpdated 7 min read

Usually two to three years of weekly sales and spend for every channel you want to measure. Two years is the floor in Meta's Robyn guide. Google's Meridian asks for three if you model one country as a whole, two if you split by region. More channels need more weeks, and flat spend teaches the model nothing.

Two counts decide whether you have enough. One is how many weekly rows you have. The other is how many things you ask the model to estimate from those rows.

On rows, the two open-source guides agree on the floor and differ on the bar. Meta's Robyn guide says an MMM will need a minimum of two years of historical weekly data. Google's Meridian guide asks for two years of weekly data for a model split by geography, and three years for a national one.

On things to estimate, Robyn's guide asks for 10 observations per independent variable. Meridian runs the same check as data points per model parameter. Every paid channel, organic input and control counts against your rows, and so do the knots Meridian uses for trends over time.

Notice what is missing from both lists: orders, sessions and customers. Meridian's guide defines data size as the number of geos times the number of time points.

What one store's data shows

One store's anonymised GA4 export, 1 January 2024 to 21 August 2026. It holds shares of revenue only: no ad spend, no order counts.

What the export showsShare of revenueSource cell
Journeys with 1 touch: 14 distinct paths, 0.5 days to buy79.5%Journeys sheet, 1 touch row
Journeys with 2 to 3 touches: 296 distinct paths, 12.5 days to buy12.2%Journeys sheet, 2 to 3 touches row
Journeys with 4 to 9 touches: 1,568 distinct paths, 16.9 days to buy5.4%Journeys sheet, 4 to 9 touches row
Journeys with 10 or more touches: 1,792 distinct paths, 16.0 days to buy3.0%Journeys sheet, 10 or more touches row

Big numbers first. On the Journeys sheet, the four rows add up to 3,670 distinct path sequences. That can look like plenty of data for a model. They are not purchases, they are not weeks, and a mix model cannot use a single one of them.

A mix model counts time, not traffic. Two years of weekly data is 104 data points for a national model, whatever your order book looks like. More orders can make each week less noisy, but they never add a week.

So the calendar is the count that matters. The export runs about 137 weeks. Meridian's guide counts three years of weekly data as 156 data points. As weekly rows, the export's span would clear Robyn's floor and miss Meridian's national bar.

Then the catch. The export is one summary of revenue shares for the whole period, with no weekly split and no spend column. Its long history adds up to zero rows a mix model could read.

The Journeys rows still show how hard a model would work. Journeys with 2 to 3 touches took 12.5 days to buy on the Journeys sheet, and journeys with 4 to 9 touches took 16.9 days. So part of the revenue lands about two weeks after the first touch, and a weekly model needs carryover, or adstock, to catch it.

Meridian's simple parameter count leaves adstock out for simplicity. So a real model asks more of your weeks than the tally shows.

Why does "two years of data" mislead?

Because it sounds like a pass mark. It is a floor, and five things decide how far above it you need to be.

  1. It is the regional number. Meridian's two-year figure is for models split by geography. If you sell in one country and only have national totals, its bar is three years.
  2. Every input costs rows. If you apply Robyn's ratio to nine channels and six controls, you need 150 weekly rows, almost three years. A media plan with a line for every platform fills that fast.
  3. Flat weeks teach nothing. Meridian notes that too little variation in media spend hurts national models. If your Google Ads budget sat at one level all year, those weeks add rows and almost no information about Google Ads.
  4. Regions multiply rows, with a catch. Meridian's example has 105 geos and three years of weekly data: 16,380 data points. Because each region gets its own parameters, its guide puts the real ratio somewhere between about 8 and 74 data points per parameter. Regional data pays most when the regions behave alike.
  5. Old weeks are not free. Meridian says more data reduces variance but might make the inference less relevant. Robyn's guide asks how much time is enough to capture recency, given shifts in marketing practice and ad platforms. If you changed prices, channels or tracking last year, the weeks before that describe another business.

What can a data count not tell you?

Whether the weeks carry news. Meridian's guide says 1,000 data points in an MMM are not the same as 1,000 coin flips. Neighbouring weeks share seasons, promotions and trends, so each row carries less news than a coin flip.

Whether your channels can be told apart. Robyn's guide calls this multicollinearity: when inputs move together, the model struggles to work out the impact of each. If Meta and Google Ads always rise together in November, more Novembers will not separate them. One week where a channel moves alone teaches more.

Whether the answer is right. Robyn's guide leans on calibration against experiments for that. A holdout test on your biggest channel answers a narrower question without waiting years for the weeks to pile up.

What to do this week

  1. Find the week your current setup began. In Shopify, go to Analytics > Reports and open Total sales over time. In the configuration panel's Dimensions menu, set the time unit to week. Then mark the last big change: a new channel, a price reset or a tracking switch. Pass: three years of weekly rows since then, or two if you can split by region. Fail: less, so plan a holdout test before a model.
  2. Put two channels side by side. In Google Ads, select the segment icon on the Campaigns page, then Time, then Week. In Meta Ads Manager, click the Breakdown icon, then By time, and choose week. Pass: some weeks where one channel's spend moved and the other's stayed put. Fail: they always rise and fall together, so plan a stretch that moves one channel alone.
  3. Check whether your sales split by region. In Shopify, open Total sales by billing location from the Sales category in Analytics > Reports. Pass: you sell in several countries or regions, and your ad accounts can report spend the same way. Fail: one market only, so plan for Meridian's three-year national bar.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: An Analyst's Guide to MMM (Meta); Collect and organize your data (Google); Amount of data needed (Google); Sales reports (Shopify); Setting and comparing time ranges for your reports (Shopify); Use segments in your tables (Google); Navigate to breakdowns in Meta Ads Manager (Meta); About breakdowns, metrics and filtering in Meta Ads Reporting (Meta)

Frequently asked questions

  • Can I run MMM on monthly data?
    You can, with more history. Meridian recommends at least three years of monthly data and warns of non-convergence or wide credible intervals. Robyn's guide suggests more than two years, such as 4 to 5. Weekly data stays the better choice if you have it.
  • Is more history always better for MMM?
    Not always. Meridian says more data reduces variance but might make the inference less relevant. Robyn lets you fit a recent window while trend and seasonality still come from the full history. Start the window after your last big change in prices, channels or tracking.
  • How many channels can one mix model handle?
    Fewer than most media plans hold. Robyn's guide asks for 10 observations per independent variable, so two years of weekly data supports about ten inputs, controls included. Meridian suggests combining low-spend channels or dropping one when the rows run short.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.