Tools

Marketing Mix Modeling Tool (MMM)

Paste weekly spend and sales into this free marketing mix modeling (MMM) tool to estimate each channel's contribution, adstock carryover, saturation point and a better budget split for the same spend. No cookies or user tracking, no code; your data never leaves your browser.

Lightweight MMM, no codeAdstock, saturation curves, channel contribution and budget split
Processed in your browser; nothing is uploaded.
One row per week. The first row is a header: date, channel spend, target (revenue or conversions) and optional control columns. 52+ weeks recommended.
Target type

The model tests carryover and saturation for every channel; it can take 2-3 seconds.

Result

Model result Waiting for data
Weeks0data rows
R²0variance explained
Mean error (MAPE)0weekly deviation
Media share0of sales driven by media
Results appear here. Paste your weekly data or try the sample data.
Written by
  • Digital Marketing Expert
  • Google Partner
  • Full Stack Developer
Last updated
Based on
3 sources

How to use the marketing mix modeling tool

  1. Paste or upload your weekly data

    Type one row per week into the Weekly data box and make the first row a header. First, you need a date column, your channel spend columns and a target column. Have a file ready? Use Upload CSV. Want to explore first? The Try sample data button loads a synthetic table of 104 weeks and 4 channels and fits the model at once; it is not real customer data.

  2. Check the column roles

    In Columns, the tool guesses a role for every column: Date, Spend, Target (KPI), Control or Ignore. Then fix any wrong guess from the list. Mark columns such as promo weeks or price as Control.

  3. Set the target type and options

    Pick Revenue or Conversions as the target type. The Seasonality and Trend boxes start ticked, and seasonality only takes effect with 52 weeks or more. Untick a box if you do not need it.

  4. Fit the model

    Press Fit model. The tool searches carryover and saturation for each channel on a grid, which can take 2 to 3 seconds. The whole calculation runs in your browser, so your data never reaches a server.

  5. Read the warnings and the fit

    Start with Warnings, then check R², MAPE and the Actual vs model chart. If the two lines drift apart, do not trust the channel results.

  6. Calculate the budget allocation

    Weekly budget starts with your current average, so enter any other test amount if you like. Limit each channel to ±50% starts ticked, so the advice stays close to what you spend today. Then press Optimise split.

Marketing mix modeling formulas

The tool applies two transforms to each channel's spend and adds the results in one linear layer. In the notation below, x is weekly spend, a is spend after carryover (adstock) and y is the target. The tool first divides the target by its own mean and scales the results back afterwards.

Adstock (carryover)a(t) = x(t) + λ × a(t-1); λ is a value from 0 to 0.7 in steps of 0.1
Saturation (Hill)h(a) = a / (a + k); k = the channel's average adstocked spend × 0.5, 1, 1.5 or 2.5
Modelŷ(t) = b0 + Σ β(c) × h(a(c,t)) + trend + seasonality + Σ γ(j) × control(j,t)
Trend and seasonalitytrend = t / (weeks - 1); seasonality = sin and cos (2π × m × t / 52.18), m = 1 and 2
Fit (NNLS + ridge)min Σ (y(t) - ŷ(t))² + α × Σ β(c)²; β ≥ 0 for every channel, α = 0.01 × weeks; baseline and control coefficients can take either sign and carry no penalty
Channel contributionContribution(c) = Σ(t) β(c) × h(a(c,t))
ShareShare(c) = Contribution(c) / Σ(t) ŷ(t) × 100
ROI or CPARevenue target: ROI = Contribution / Spend; conversion target: CPA = Spend / Contribution
Marginal ROIΔContribution / ΔSpend; if weekly spend holds steady, weekly contribution = β × h(w / (1 - λ)); a small step of 1% of spend at the current average w. Marginal CPA = 1 / marginal ROI
Saturation statusr = (average weekly spend / (1 - λ)) / k; r < 0.6 room to grow, r < 1.6 moderate, otherwise near saturation
R²1 - Σ (y - ŷ)² / Σ (y - ȳ)²
MAPEmean(|y - ŷ| / y) × 100; weeks where the target is 0 stay out
Budget allocationStarts at the lower bounds (with the box ticked, 0.5 × current and an upper bound of 1.5 × current); splits the remaining budget into 600 equal steps and gives each step to the channel that gains the most contribution at that moment

The Media share card is the share of the model total that comes from channel contributions. Baseline, trend, seasonality and controls stay out of it. The allocation assumes you hold each channel's weekly spend steady.

Worked examples: carryover, saturation, ROI and error

These rows are example calculations, not client data. Try the same numbers by hand and you get the same results.

Example calculationInputsMethodResult
Carryover, long effect1,000 spent in week 1, then 0; carryover rate 0.5Each week adds half of the previous effective value1,000 / 500 / 250 / 125; total effect 2,000
Carryover, short effectSame spend; carryover rate 0.3Each week keeps 30% of the previous value1,000 / 300 / 90 / 27; total effect about 1,429
Saturation (Hill)Half saturation point 1,000; effective spend 500, 1,000, 2,000, 4,000h = a / (a + 1,000)0.33 / 0.50 / 0.67 / 0.80
ROI and marginal ROISearch: spend 10,000, contribution 30,000, marginal ROI 0.9. Video: spend 5,000, contribution 7,500, marginal ROI 1.4ROI = contribution / spend; shift = 2,000 × (1.4 - 0.9)Search ROI 3.0; Video ROI 1.5; first estimate: +1,000 weekly revenue
CPA (conversion target)Spend 20,000, contribution 400 conversions; the next 1,000 of spend buys about 10 conversionsCPA = spend / contribution; marginal CPA = 1,000 / 10CPA 50; marginal CPA 100
MAPEActual 100, 120, 80; model 90, 126, 84Per week |actual - model| / actual, then the mean10%, 5%, 5%; MAPE 6.67%

Row four, in short, shows the key distinction. Search has the highest average return, yet its next dollar earns less than Video's. When you actually shift money, marginal returns change along the way. Therefore the tool works from the curves, and its result can drift a little from this first order estimate.

Meridian vs Robyn vs this tool

The three options answer the same question at different depth. Which one fits depends on your team's skills and on how big the decision is.

FeatureMeridianRobynThis tool
Source and designGoogle, open source, BayesianMeta Marketing Science, open source, experimentalLightweight model in your browser
Needs code?Yes (Python)Yes (R)No
EstimationBayesian causal inferenceRidge regression, Prophet, NevergradNNLS, light ridge, grid search
Experiment calibrationExperiment results enter as priorsCalibrates with geo and lift style ground truthNone; you validate the result
Best forLarge budgets, data science teamTeams that work in RA fast first look and direction

The table follows the official descriptions of all three; check the source links for detail.

What is marketing mix modeling, and what does this tool do?

Marketing mix modeling (MMM) compares your weekly spend with your weekly results and estimates, with statistics, how much each channel contributed. In practice, it needs no click-level or user-level records. Total spend and total revenue (or conversions) for each week are enough. This tool is a lightweight take on marketing mix modeling that runs the same logic without any code.

You paste the weekly data, and the tool returns these outputs:

  • Channel contribution and share: how much each channel added to the result.
  • ROI and marginal ROI: the average return and the return on the next unit of spend.
  • Carryover and saturation: how many weeks an effect lasts and how returns fade as spend grows.
  • Budget allocation: a better channel balance for the same total budget.

One warning up front: the results point a direction, they do not deliver a verdict. The tool does not replace a full Bayesian model, and you should validate its output with incrementality tests. When you want to turn the direction into campaign settings, our Google Ads management service picks up from there.

Why is marketing mix modeling back in a cookieless, privacy-first world?

As user-level tracking weakens, click-based measurement leaves gaps. As a result, browser restrictions, app tracking prompts and consent banner rejections all thin out attribution data. MMM attacks the problem from another side because it uses no personal data. It asks for a single aggregated weekly table.

The big platforms have moved the same way. Google opened its open source Meridian model to everyone on January 29, 2025. According to the announcement, Meridian uses Bayesian causal inference, accepts incrementality experiment results as priors and accounts for reach and frequency. Meta offers its open source Robyn package, which relies on ridge regression, Prophet and Nevergrad.

Both come with a price: they ask for code, setup and data science skills. If your team lacks those, the first look may never happen. So this tool fills exactly that gap. It gives you a quick first read, and then you decide whether a move to Meridian or Robyn pays off.

Keep the click-based side in view as well. Our attribution model comparison tool shows channel order, while MMM shows total contribution. We also explain attribution windows in our guide to Meta attribution settings.

How do carryover and saturation work in this marketing mix modeling tool?

Ad impact does not stop in the week you spend. For example, someone who watches a video ad today may buy two weeks later. The tool models this with geometric adstock: each week's effective spend equals that week's spend plus the carryover rate times last week's effective spend. It tries carryover rates from 0 to 0.7 in steps of 0.1. A value of 0 means the effect ends at once, while 0.7 means it lingers.

The second transform is the saturation curve. Doubling spend does not double revenue, because the first dollars work hardest. A Hill curve captures that fade through its half saturation point, the spend at which response reaches half its ceiling. We try 0.5, 1, 1.5 or 2.5 times the channel's average adstocked spend. Because the curve is always concave, each extra dollar returns a little less than the last. We skip S-shaped curves on purpose, since on weekly data they tend to fit noise. The Response curves chart then sweeps spend from 0 to twice today's level.

Here is how we find the coefficients:

  • Channel coefficients cannot go negative (NNLS). Baseline, trend, seasonality and control terms may still take a negative sign.
  • A light ridge penalty on channel coefficients only keeps them from running to extremes when channels move together.
  • The tool walks through the channels one at a time, keeps the carryover and saturation pair with the lowest error, and repeats that round up to four times.
  • With 40 or more weeks, the tool refits the model 8 times, each time leaving out one block of weeks. The spread of those runs feeds the ROI range and Stability columns, and the optimizer flags any budget increase for an uncertain channel.

This echoes Robyn's ridge regularization. However, there are no Bayesian priors or experiment calibration here, so read the output as a direction rather than a certainty.

How should you prepare weekly data, and how many weeks are enough?

Each row must be one week, and the first row must hold the headers. You need three groups of columns: the week start date, the weekly spend of every channel and the target. Choose Revenue when the target is money and Conversions when it is a count. Add promo weeks, discounts, price changes or stock problems as Control columns. Otherwise the tool credits those effects to advertising.

The rule for length is simple: at least 52 weeks, ideally two years. The tool runs from 12 weeks, but it warns you below 52. Meridian's documentation also ties the amount of data to the number of model parameters, and two years of weekly data gives 104 observations. More channels mean more parameters, so the data need grows with them.

  • First, leave no week out; type 0 when a channel had no spend.
  • Use one currency and one VAT treatment across all channels.
  • Enter spend as money, not as impressions or clicks.
  • Do not split channels too finely; merging small ones keeps the model stable.

For clean channel level data, tag your campaign links from the start. Our UTM builder does that in minutes.

How do you read ROI, marginal ROI and saturation?

ROI is the column people misread most often. ROI is an average: the channel's contribution divided by its total spend. Marginal ROI, however, is the return on the next unit. On a saturation curve the two split apart, because the first dollar and the last dollar do not earn the same. With a conversion target you see CPA instead of ROI and Marginal CPA instead of Marginal ROI, and CPA is spend divided by contribution.

Three reading patterns help:

  • High ROI, low marginal ROI: the channel is saturated, and extra budget will underperform.
  • Middling ROI, marginal ROI close to it: the channel still has room.
  • ROI below 1 on a revenue target: spend does not cover contribution. Still, never decide without looking at margin.

The Carryover (adstock) column shows the carryover rate, and the Saturation column labels each channel as room to grow, moderate or near saturation. To cross-check returns with your own numbers, use the ROAS calculator. If returns are falling, follow the diagnosis steps in our guide to ROAS drop causes.

How does the budget allocation work, and how far can you trust it?

In Budget allocation, the Weekly budget box starts with your current average. Also, you can enter another total and press Optimise split. The tool splits that total into small steps and gives each step to the channel that gains the most from it, so the marginal returns of the channels move close together. Shifting money from a low marginal channel to a high one raises total contribution, so the allocation stops once marginal returns level out.

While Limit each channel to ±50% is ticked, no channel drops below half or rises above one and a half times its current spend. That limit matters, because at spend levels the model has never seen, the curve is only a guess. If you untick the box and your data covers 2,000 to 10,000 a week, treat a result that proposes 50,000 with great suspicion.

The output puts current and recommended weekly spend side by side with the expected change. So read that change as a small percentage, not as a promise. Test one small shift in a single channel first, measure it, then continue. To size the total, the Google Ads budget calculator is a good companion. For planning logic, see how to set a Google Ads budget.

What can a lightweight marketing mix model not tell you?

Let us be honest: every MMM that runs on weekly data measures association, not causation. Three limits stand out.

  • Multicollinearity: When channels rise and fall together, for example all of them peak in a sale week, the model cannot separate who delivered the result. The tool flags a correlation of 0.85 or higher between two channels under Warnings.
  • Too little data: Below 52 weeks, coefficients stay shaky. A channel whose spend never changes does not enter the model at all.
  • Missing drivers: A competitor move, press coverage or the weather can end up credited to advertising.

The fix, then, is validation. Run a geo or time-based lift test in the channel the model flags, and measure the incremental effect. Meta's brand lift test is one example of such an experiment. For the statistics, an A/B test calculator helps. The same honesty applies to click-based measurement: no attribution model proves incrementality, so read any attribution comparison together with a lift test.

Meridian, Robyn or this tool: which one fits?

The choice depends on your team's skills and the size of the decision. With a large budget and a data science team, you want a Bayesian model with experiment calibration, and Meridian offers that path. Also, a team that works in R can try Robyn. If your goal is to see direction, show the team a first picture and learn which channel has saturated, a lightweight tool is enough.

Here is a practical path:

  • Step one: take the first look with this tool and note the warnings.
  • Step two: test the finding with a lift experiment.
  • Step three: when the decision grows, move the same weekly data into Meridian or Robyn.

The same table works in all three, so your first effort is not wasted. Finally, the table below puts them side by side.

Common marketing mix modeling mistakes

  • MistakeFitting a model on too little dataDo this insteadUse at least 52 weeks, ideally two years. On short data, seasonality and channel effects blur together.
  • MistakeExpecting answers from a channel with flat spendDo this insteadA channel whose spend never moves has no separable effect. The tool leaves such a channel out and warns you, so merge it into another one.
  • MistakeLeaving promo and sale weeks out of ControlDo this insteadSales lifted by a discount week end up credited to a channel. So add those weeks as a Control column.
  • MistakeMoving all money to the channel with the best average ROIDo this insteadCheck marginal ROI first. The next dollar in a saturated channel returns little.
  • MistakeTreating the output as a verdictDo this insteadRead the result as a hypothesis and confirm it with a lift test.
  • MistakeTrusting spend levels the model never sawDo this insteadKeep Limit each channel to ±50% ticked. Outside the range you have tested, the curve is only a guess.

Frequently Asked Questions

Let's rebalance your budget with a model and a test.

An MMM result is a hypothesis. We combine measurement setup, incrementality tests and Google Ads management to move budget towards real contribution.

Google Ads Management

Related Tools

All Tools (86)
Attribution Model ComparisonPaste GA4 conversion paths to compare last click, first click, linear, time decay, position-based and Markov chain credit side by side, plus assist ratios.
ROAS CalculatorCalculate ROAS, ACOS, break-even ROAS and net profit; plan budget by target.
Google Ads Budget CalculatorWork out the monthly and daily Google Ads budget you need from CPC, conversion rate and your goal, with CPA and ROAS.
Google Ads Audit ToolAudit your keyword and campaign reports with 14 checks: wasted spend, Quality Score, duplicates, budget and rank limits, plus a health score and a monthly waste estimate.
Search Term N-Gram AnalyzerBreak your Google Ads search terms report into 1, 2 and 3 word phrases, total clicks, cost and conversions for each, and turn the wasteful ones into a negative keyword list.
Responsive Search Ad BuilderWrite the 15 headlines and 4 descriptions of a responsive search ad with live character limits, preview how the ad shows on Google mobile and desktop, and export it.