Saturation Curves in MMM: Why Doubling Your Spend Won't Double Your Sales

By Kiran Akkineni · · 10 min read

If you spend $10,000 on Meta this week and sales go up by $30,000, the natural conclusion is that Meta has a 3x ROAS and you should pour more money into it. So you spend $20,000 next week. Sales go up by $50,000.

That's a 2.5x ROAS on the marginal spend, not 3x. The next $10,000 was less productive than the first. If you keep doubling, you'll eventually hit a point where additional spend produces almost no additional sales — and a point past that where it might actually hurt because you're hitting audiences that don't want your product.

This is saturation. Every marketing channel exhibits it, every serious MMM models it explicitly, and any tool that doesn't is going to give you absurd budget recommendations. Here's how saturation works, why it matters, and how to think about it.

The diminishing returns problem

The economic principle is older than marketing. Pour fertilizer on a field, and you'll grow more crops — until you've saturated the soil and additional fertilizer does nothing or starts harming yield. Hire engineers, and you'll ship more software — until coordination costs swamp the productivity gains. Marketing works the same way.

The mechanism is intuitive. Each channel has a finite reachable audience. As you spend more, you reach more of that audience, but the people you reach later are progressively less qualified — they're cold prospects rather than warm ones, they've already declined the offer, or they're outside your real target. The first dollar of spend buys access to your highest-intent audience. The thousandth dollar buys access to whoever happens to scroll past.

If your MMM treats spend as linearly producing sales, it can't see any of this. It assumes that if $10K of Meta produced $30K of sales, $1M of Meta would produce $3M. That's wrong by orders of magnitude. And it's the source of the most embarrassing failure mode of naive MMM tools: they recommend you put your entire budget into the channel that happens to have the highest fitted coefficient, with no upper limit.

Why a linear model can't optimize budget

Budget optimization in MMM is the answer to "where should I shift my next dollar?" If you have a model that captures saturation correctly, this question has a real answer: shift to the channel with the highest marginal ROAS at current spend levels. As you shift, marginal ROAS shifts too — the channel you're moving away from gets more efficient, and the channel you're moving toward gets less. Eventually the marginal ROAS of every channel equalizes, and that's the optimum.

A linear model has no concept of marginal ROAS. The "ROAS" of a channel is a single number that doesn't change with spend level. If Meta's ROAS is 4x and Google's is 3x, the linear model recommends putting everything in Meta — even though in the real world that would saturate Meta at trivial efficiency and starve Google of budget where it was actually working.

This isn't a theoretical objection. It's the practical reason saturation curves exist in MMM. Without them, the model can't give you actionable budget guidance.

The Hill function

The most common saturation form in MMM is the Hill function, borrowed from biochemistry where it was originally developed to model how molecules bind to receptors. The marketing analogy turns out to be exact: a finite pool of "receptors" (your potential audience), a quantity of "molecule" (your spend), and a binding curve that starts steep, hits an inflection point, and asymptotes.

Written one way, the Hill function looks like:

saturated_spend = spend^alpha / (spend^alpha + gamma^alpha)

Two parameters control the shape:

  • Alpha controls steepness. Higher alpha means a sharper curve — efficient at low spend, then a quick drop-off into saturation. Lower alpha means a gentler curve — never very efficient, never very saturated.
  • Gamma controls where the inflection happens — the spend level at which you've used up roughly half the channel's capacity. A high gamma means the channel has lots of headroom before saturating. A low gamma means it saturates fast.

The output of the Hill function is bounded between 0 and 1 — it's the fraction of the channel's maximum effect that you've achieved at this spend level. Combined with a coefficient that scales the maximum effect into actual sales, you get a curve that captures both the productivity of the channel and how quickly that productivity falls off.

Other saturation shapes

Hill isn't the only option. A few alternatives show up in practice:

Logarithmic saturation treats the relationship between spend and sales as effect = coefficient × log(1 + spend / scale). This is the simplest saturation form — one parameter, monotonically diminishing returns. It captures the basic shape but can't model the S-curve behavior (the slow start at very low spend) that real channels often exhibit.

Negative exponential saturation uses effect = max_effect × (1 - exp(-spend / scale)). Like logarithmic, it's a one-parameter form, but it has an asymptote at max_effect — a hard ceiling — which can be useful when you have strong priors about the maximum a channel can deliver.

Adbudg is a four-parameter form that allows for both an S-curve startup and a hard ceiling. It's the most expressive of the standard options, and the most data-hungry.

For most MMM problems, Hill is the right default. It captures the important behavior with two parameters per channel and has decades of empirical validation behind it.

Why both parameters matter

It's tempting to think you can pick a saturation function and just learn one number per channel. The Hill function's two parameters often confuse people new to MMM, but both matter and they capture genuinely different things.

Alpha is about the channel's behavior at the extremes. A channel with high alpha (steep curve) can be extremely productive at low spend but flatlines fast. Think of a niche podcast where the right audience converts hard but the audience is small. A channel with low alpha (gentle curve) is never amazing but stays useful even at high spend. Think of broad social platforms with deep audience pools.

Gamma is about the spend level where the channel matters. It tells you whether you're operating near the inflection point or far from it. If gamma is much larger than your current spend, you're in the early-efficient part of the curve and have headroom. If gamma is smaller than your current spend, you're past the inflection point and any additional spend is buying you mostly noise.

The combination is what gives you actionable insight. A channel with high alpha and low gamma is one where you should spend less than you currently are. A channel with high alpha and high gamma is one you should spend much more on. A channel with low alpha at any gamma is one to be skeptical of regardless of what your platform's reported ROAS says.

Validating the curve

The output of any saturation fit should be sanity-checked. The two best diagnostics are:

Plot the curve. For each channel, plot effect-vs-spend over a range from zero to several times your historical maximum spend. Does the shape look reasonable? Does it asymptote where you'd expect? Is the inflection point near where you've actually been spending? A curve that asymptotes way above your historical spend means the model thinks you have huge headroom — exciting if true, suspicious if you've been running this channel for years.

Compare implied marginal ROAS to your intuition. At your current spend level, what does the model think the next dollar of spend would return? Compare this to your platform-reported marginal ROAS, your incrementality test results if you have any, and your own gut feel. They won't match exactly, but they should be in the same ballpark.

If a saturation curve produces marginal ROAS that's 10x your platform-reported number, something is wrong — usually a control variable or seasonal effect getting attributed to the channel. If it produces a marginal ROAS that's negative, the model is telling you you're past the channel's useful range; that may be true, but verify it before pulling all the spend.

Common mistakes

Skipping saturation entirely. Same problem as skipping adstock. Without saturation, your "MMM" is a linear regression and can't optimize budget meaningfully.

Hard-coding saturation parameters. Picking alpha and gamma by hand defeats the purpose. The whole point is to let the data tell you what the curve looks like for each channel.

Estimating saturation parameters with too little data. With only 12 weeks of data and four channels, you don't have the degrees of freedom to estimate eight saturation parameters reliably. In thin-data regimes, you need either fewer channels, simpler saturation forms (one parameter instead of two), or strong priors.

Confusing saturation with adstock. Both are nonlinear transformations and both involve the channel's behavior over time. But adstock is about when the effect happens (carryover), and saturation is about how much effect a given spend produces (diminishing returns). They're complements, not substitutes — you need both, applied in the right order (adstock first, then saturation on the adstocked values).

Trusting saturation curves outside your historical range. The model is fitting to the spend levels you've actually used. If you've spent between $5K and $20K per week on a channel, the curve in that range is informed by data. Beyond it, the curve is extrapolation, and extrapolating saturation curves is one of the more dangerous things you can do with an MMM.

What to look for in a tool

If you're choosing rather than building, look for tools that:

  • Apply per-channel saturation (not a global function)
  • Estimate saturation parameters from data with sensible priors
  • Can produce response curves and budget optimization output
  • Report saturation parameters in the output so you can verify the shape

CheapMMM uses Hill-function saturation with per-channel parameters, estimated jointly with adstock, and surfaces the implied response curves so you can validate them. But again — the more important thing is that any MMM you trust with money should be doing this. Tools that hide their saturation methodology, or don't have saturation at all, will eventually give you a recommendation that bankrupts you.

For the practical follow-up on what to do with the model output, see our guide on how to interpret MMM results.

Try CheapMMM free — no login required