Meta Robyn is the open-source MMM that does the model search for you, then hands you a shortlist to choose from. That automation is its selling point and its biggest trap.
Here's a hands-on walkthrough, from setup to budget allocation, and where it quietly lets you fool yourself.
What Robyn is
Robyn is Meta's semi-automated MMM package, written in R. Under the hood it uses ridge regression to fit the model and Nevergrad, Meta's optimization library, to search hyperparameters like adstock and saturation.
Instead of one model, it produces a Pareto front of candidate models that trade off business fit against error. You pick from that set.
Setting up
Robyn runs in R but leans on Python for Nevergrad, so you wire the two together with reticulate.
install.packages("Robyn")
library(Robyn)
# Nevergrad comes from Python via reticulate
library(reticulate)
py_install("nevergrad", pip = TRUE)
Get that connection working first, because a missing Nevergrad is the most common reason a fresh Robyn install won't run.
Preparing the data
Robyn wants the same weekly, aggregate data any MMM does: a dependent variable like revenue, spend and exposure per channel, and context variables.
- A date column and a weekly KPI, pulled from your GA4 BigQuery export.
- Spend columns per paid channel, plus impressions or clicks where you have them.
- Context: promotions, price, holidays, and other known drivers.
Running the model
You define the inputs and hyperparameter ranges, then let Robyn search. It fits many models and returns the Pareto-optimal set for you to review.
From there you inspect candidates, read the response and adstock curves, and use the budget allocator to propose a reallocation that lifts your KPI.
How not to fool yourself
The Pareto front is where discipline matters. It's tempting to scroll until you find the model whose channel ROIs match what you already believe, which is just bias with extra steps.
- Calibrate with an experiment: Robyn accepts lift-test results to constrain the search toward reality.
- Judge models on out-of-sample error and business sense, not on which flatters your favorite channel.
- Don't over-read tiny ROI differences between channels the model can barely tell apart.
What the output actually gives you
For each model Robyn produces a one-pager: the decomposition of your KPI into base and each channel, the response and adstock curves, and the fit metrics. The response curves are the payoff, because they show where a channel saturates and the next dollar stops working.
The budget allocator then takes a chosen model and proposes a reallocation, either the same KPI for less spend or more KPI for the same spend. In both cases it's a proposal to validate with a test, not a command to run.
Robyn or Meridian
They solve the same problem with different bets. Robyn searches many models fast in R and asks you to choose; Meridian fits a Bayesian model in Python and hands you intervals.
Neither is more correct. Pick Robyn if your team is in R and likes the fast search, Meridian if you want Python and native experiment calibration. What matters far more than the choice is whether you calibrate either against a real test.
Where it breaks
- Cherry-picking the model whose ROIs match your priors, which defeats the whole exercise.
- Too little data or too many hyperparameters, so the search overfits noise.
- Skipping calibration, so the fast search just reaches a confident wrong answer faster.
Meta Robyn is a fast, powerful way to search the model space, as long as you treat the automation as a starting point and not a verdict. Calibrate it against a real test, pick models on error rather than vibes, and it earns its place next to Meridian.
Want a stronger data analyst role or a raise? Grab the FREE Product Analyst Playbook and get the exact roadmap to your next offer.
