Media mix modelling is back.

Open-source MMM tools have closed the gap with legacy vendors. A practical walk-through of running your first model on six months of spend data.

Media mix modelling went out of fashion when last-click attribution became free and accurate enough not to bother with statistical decomposition. It came back because last-click attribution stopped being either of those things. The privacy-driven loss of cross-device, cross-domain tracking has made marginal-channel analysis hard to do in any single platform’s reporting; running an MMM on consolidated spend and outcome data has become, again, the cleanest way to ask “what should I add or remove?”

What MMM is and isn’t

Media mix modelling is a regression-based technique that decomposes a business outcome — typically revenue or qualified leads — into contributions attributed to media channels and to non-media factors (seasonality, pricing, distribution, baseline demand). It is a marginal-effect tool, not an attribution tool. It does not tell you which user converted because of which click. It tells you, given last year’s spend pattern and outcomes, what the marginal contribution of each channel was.

The open-source revolution

Until 2022 doing this kind of work professionally meant licensing tooling from one of three or four vendors, paying a six-figure setup fee, and waiting six weeks for results. Two open-source projects changed this materially: Robyn (released by Meta in 2020 but maturing in 2022 to 2023) and LightweightMMM (released by Google in 2022). Both are Bayesian frameworks that let you run a credible MMM on a laptop in an afternoon, on data you already have. Both come with thoughtful documentation. Neither replaces a senior analyst, but both close the gap between “we’d like to run an MMM” and “we have an MMM that gives us defensible answers”.

What you need to run one

Roughly two years of weekly spend and conversion data, segmented by channel. Channel granularity should be high enough to inform decisions and low enough to give the model degrees of freedom: ten to fifteen channels typically works; thirty channels tends to overfit. You also need exogenous variable data — the things that drive your business outside of paid media. Common ones: pricing changes, promotional periods, seasonality dummy variables, holiday effects, organic search trends. Skipping these means the model attributes seasonal effects to whatever channel happens to spend more during those weeks, which is misleading.

The shape of a working analysis

The pattern we follow:

  1. Data extraction. Pull weekly spend by channel for the prior 24 months from each platform. Pull conversion data from your warehouse or analytics platform; reconcile to your ground-truth revenue figure. Pull exogenous variables. The reconciliation step is the largest source of model failure — if your channel spend doesn’t reconcile to your finance system within a percent or two, the model will inherit the discrepancy.
  2. Saturation and adstock parameters. MMM frameworks need you to specify (or let the model fit) the diminishing-returns curve and the carry-over effect for each channel. Default ranges work for most cases; tighten the priors if you have channel-level domain knowledge.
  3. Model fit and diagnostics. Both Robyn and LightweightMMM expose a Pareto front of solutions trading off NRMSE against decomp RSSD. The right model is on that front; choosing among the candidates is a judgement call informed by reasonableness of the resulting decomposition.
  4. Budget allocation. Both frameworks expose an optimiser that suggests reallocations of spend to maximise the expected outcome. Treat the suggestions as input to a quarterly planning conversation, not as a deliverable.

Common pitfalls

  • Treating MMM output as user-level attribution. The numbers are channel-level marginal effects, not click-level credits. Mixing the two leads to operational confusion.
  • Running MMM on insufficient history. You need enough variation in spend per channel to estimate effects; if a channel has been at a constant spend for two years, the model has nothing to learn.
  • Skipping exogenous variables. Models that don’t account for seasonality, promotions and pricing will mis-attribute their effects to whichever channel ran during the same weeks.
  • Trusting a single model run. Re-run the model with different priors and seeds; the actionable insight is what survives across runs, not the point estimate of one fit.

What MMM is good for

Quarterly budget allocation across channels. Cross-channel saturation analysis (where is the next pound best spent?). Sanity-check on platform-reported attribution. Long-horizon planning conversations with finance.

What MMM is not good for

Day-to-day campaign optimisation. Campaign-level creative testing. Anything where the question requires user-level resolution. The granularity of MMM is the channel and the week; finer questions require platform-native tooling or experiment design.

Closing observation

The single largest blocker to running MMM well is no longer the tooling. It’s the discipline of maintaining clean, reconciled spend and outcome data. Most agencies that struggle with MMM struggle because they don’t have a single source of truth for either input. That discipline is worth installing whether or not you intend to model.

Want this kind of analysis on your own programme?

Send us access to your existing Google Ads account and we’ll return a written audit within five business days.

Request the audit