How often should I run MMM?
Usually once a quarter, a few weeks before you set budgets. Rebuild from scratch when you add a channel or most of the data is new. A refresh only teaches the model something if spend moved since the last run: flat spend adds weeks, not information.
By Joris van Huët, Founder & CEOUpdated 7 min read
Usually once a quarter, a few weeks before you plan budgets. Run one again after a big change, such as a new channel or a price change. Rebuild the model from scratch when you add a variable or most of its data is new. If spend barely moved since the last run, a refresh adds weeks, not information.
There is no official cadence, only habits. Meta's Robyn docs say the conventional refresh cycle of MMM is bi-annual or even longer. Robyn's own refresh feature is built to run as often as the data allows: monthly, weekly or even daily.
So the useful question is not how often. It is when your model has something new to learn, and when you have a decision that needs the answer.
Two words get mixed up here. A refresh adds new weeks to the model you already chose and keeps its settings close to the old ones. A rebuild starts over: new design, new search for settings, new checks. Robyn's guide says to rebuild when new variables need adding, or when most of the data is new. Its example is a 100-week model facing 80 weeks of new data, where a rebuild might be better.
If you plan budgets each quarter, each refresh adds about 13 new weekly rows. That is usually enough to show a change, if spend moved, and it lands in time for the next plan.
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 (0.5 days to buy) | 79.5% | Journeys sheet, 1 touch row |
| Journeys with 2 to 3 touches (12.5 days to buy) | 12.2% | Journeys sheet, 2-3 touches row |
| Journeys with 4 to 9 touches (16.9 days to buy) | 5.4% | Journeys sheet, 4-9 touches row |
| Journeys with 10 or more touches (16.0 days to buy) | 3.0% | Journeys sheet, 10+ touches row |
A mix model never sees journeys. It sees weekly sales next to weekly spend. But the Journeys sheet answers a question every refresh schedule leans on: how long after a visit does the money arrive?
In this one store, journeys with 1 touch hold 79.5% of revenue on the Journeys sheet and took 0.5 days to buy. In the export, longer journeys took 12.5 to 16.9 days and together hold about a fifth of revenue: 12.2% + 5.4% + 3.0% = 20.6%.
So in this store, most revenue came from one-visit journeys that took about half a day. The slower fifth took roughly two to two and a half weeks. For a refresh schedule, that cuts both ways. A quarter of new weeks holds plenty of response. But a budget change made in the last two or three weeks has not finished landing. A refresh run straight after it reads the change too early.
The export spans about 137 weeks, which would clear Robyn's minimum of two years of weekly data. It still could not feed a model, because it holds no weekly spend and no weekly sales. It also only sees visits. An ad that people saw and never clicked leaves no trace in it, while a mix model can pick that ad up through its spend.
Why does a fixed calendar mislead?
A calendar measures time. A model learns from change, and the two do not always arrive together.
Flat spend teaches nothing new. Google's Meridian docs warn that insufficient variation in media spend hurts national models. If a channel spent the same every week since the last run, the new rows repeat what the model already knew.
Small refreshes wobble. Meta says its refresh feature is not yet tested thoroughly and might give unstable results. A monthly refresh adds about four weeks to two years of history. If a channel's return swings after a month like that, the swing usually says more about noise than about the channel.
More history is not always better history. Meridian's docs note that adding data reduces the variance of the estimates but might make them less relevant. Its FAQ adds that the model's coefficients do not change over time, even though a channel's ROI can. A two-year fit averages your old store with your new one.
Some changes cannot wait for the calendar. A new channel is a new variable, and Robyn's guide says new variables call for a rebuild, not a refresh. Treat a price change the model has never seen, or a broken sales feed, the same way.
What can a refresh not tell you?
A refresh cannot check itself. Google's Meridian docs say multiple models can fit well and still give different ROI results. So two runs can disagree, and the model cannot say which one is closer to the truth.
That is the part a calendar cannot replace. Robyn's guide recommends running incrementality studies on an ongoing and regular basis to calibrate the model. One workable rhythm: quarterly refreshes, a rebuild when the design changes, and a lift test on your biggest channel whenever budget and time allow.
Meridian's FAQ also points to a cheap habit. You can ask for ROI over selected time periods, so read the newest quarter next to the all-time figure. If the two disagree sharply, ask why. A new spend level can explain it, while a changed store may call for a rebuild.
What to do this week
- Count your new weeks. In Shopify admin, go to Analytics > Reports and open Total sales over time. In the configuration panel's Dimensions menu, set the time unit to week, then count the weeks since your model's last date. Pass: about a quarter of new weeks. Fail: only a handful, so wait for more.
- Check that spend moved. In Google Ads, open Campaigns, select the segment icon and choose Time, then Week. Pass: weekly cost for your main campaigns changed in some weeks since the last run. Fail: flat lines, so skip this refresh and plan a deliberate spend change to learn from.
- Save the raw Meta file. In Ads Manager, open the Reports drop-down, choose Create custom report, add a weekly time breakdown and export it. Meta caps the reporting window at 37 months from the date of your request. Pass: one saved file per quarter. Fail: none saved, so start today, before older weeks fall out of reach.
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: Robyn: Key Features (Meta); Robyn: An Analyst's Guide to MMM (Meta); Meridian: Amount of data needed (Google); Meridian: FAQs (Google); Meridian: About MMM as a causal inference methodology (Google); Setting and comparing time ranges for your reports (Shopify); Use segments in your tables (Google); Export and share reports in Meta Ads Reporting (Meta); About breakdowns, metrics and filtering in Meta Ads Reporting (Meta)
Related answers
Frequently asked questions
What is the difference between refreshing and rebuilding a mix model?
A refresh adds new weeks to the model you chose and keeps its settings close to the old ones. A rebuild starts over, with a new design and a fresh search for settings. Robyn's guide suggests a rebuild when you add variables or when most of the data is new.Can I refresh a mix model every week?
You can: Robyn's refresh supports weekly or even daily runs. Whether it helps is another matter. Each run adds little new data, and Meta says the refresh feature might give unstable results. Weekly runs make sense when budgets move weekly; otherwise you mostly watch noise.Do I need a new lift test for every MMM refresh?
No. A lift result stays useful while it still describes the channel: same targeting, similar spend. Robyn's guide recommends running incrementality studies on an ongoing and regular basis. Plan a new test when a channel's setup or spend level changes, not on every refresh.
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.
- Causal InferenceCausal Inference determines the independent, actual effect of a phenomenon within a system, identifying true cause-and-effect relationships.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- 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.