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 Joris van Huët, 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 shows | Share of revenue | Source cell |
|---|---|---|
| Journeys with 1 touch: 14 distinct paths, 0.5 days to buy | 79.5% | Journeys sheet, 1 touch row |
| Journeys with 2 to 3 touches: 296 distinct paths, 12.5 days to buy | 12.2% | Journeys sheet, 2 to 3 touches row |
| Journeys with 4 to 9 touches: 1,568 distinct paths, 16.9 days to buy | 5.4% | Journeys sheet, 4 to 9 touches row |
| Journeys with 10 or more touches: 1,792 distinct paths, 16.0 days to buy | 3.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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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)
Related answers
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
- AnalyticsAnalytics is the systematic computational analysis of data. It reveals customer behavior and measures campaign performance.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- CausalityCausality is the relationship where one event directly causes another, essential for identifying specific actions that drive desired outcomes in marketing.
- ExperimentsExperiments are scientific procedures that test hypotheses or demonstrate facts. In marketing, experiments like A/B tests determine the causal effect of campaign changes, enabling data-driven decisions.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- Marketing MixThe marketing mix is the set of actions a company uses to promote its brand or product. It traditionally includes product, price, place, and promotion.
- Marketing Mix ModelingMarketing Mix Modeling (MMM) is a statistical analysis that estimates the impact of marketing and advertising campaigns on sales. It quantifies each channel's contribution to sales.