Setup·Model·Results·SEO·Next Steps

MARKETING MIX MODELING (MMM)

V1 RESULTS & DECISION SCENARIOS — DE

Focus: budget efficiency, uncertainty, and practical next steps

Thomas Moran · Gemma Analytics
July 2026

Setup·Model·Results·SEO·Next Steps

SETUP

WHAT GOES INTO THE MODEL

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

WHAT THE MODEL USES

TARGET

  • Revenue (log-space modeling)
  • Weekly grain, ~75 weeks
  • Germany, two brands
  • Google Performance (Search + Shopping merged)
  • Meta Paid Social
  • Influencer

CONTROLS

  • Black Week flag
  • Christmas flag
  • Promo / campaign-calendar flag
  • SEO spend proxy (control only)

Data grain: weekly · ~75 weeks · DE · two brands

Note: Channel set is deliberately minimal for v1 decisioning — excluded sparse channels (e.g. Bing, CRM) to avoid unstable ROAS estimates.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

CHANNEL SCOPE DECISIONS (V1)

Channel Status Rationale
Google Performance Included Sufficient spend history, merged Search + Shopping for stability
Meta Paid Social Included Consistent weekly spend, clear signal
Influencer Included Meaningful spend, interesting funnel role
Bing Search Excluded Sparse spend, unstable ROAS
Bing Shopping Excluded Dead channel
CRM Excluded Sparse / only late history
SEO Control only Monthly proxy distributed to weeks — not optimized as channel yet

Why only three channels? More channels ≠ better model. Sparse data leads to unstable estimates that look precise but aren't. Better to be honest about three channels than overconfident about six.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

MODEL

HOW MMM TURNS SPEND INTO IMPACT

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

HOW MMM TURNS SPEND INTO IMPACT

ADSTOCK = CARRYOVER

Spend today can drive conversions later. The model captures how quickly each channel's impact fades over time.

Example: an influencer campaign in week 1 may still drive purchases in weeks 2–3.

SATURATION = DIMINISHING RETURNS

Each additional € typically yields less. The model captures where spending more stops paying off.

Example: doubling Google spend doesn't double revenue — at some point, you've reached everyone who's searching.

⚠️ Weekly grain caveat: sub-week effects (e.g. day-of-week patterns) are not visible at this resolution.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

ADSTOCK ASSUMPTIONS (BY FUNNEL ROLE)

Channel Funnel Role Decay Speed Half-Life (approx.) Prior
Google Performance Harvester Faster ~1 week Beta (shorter carryover)
Meta Paid Social Generator Slower ~2–3 weeks Beta (longer carryover)
Influencer Generator Slower ~2–4 weeks Beta (longer carryover)
CRM (if added later) Harvester Faster ~1 week Beta (shorter carryover)

INTUITION

Think of it as funnel position: harvesters (Google) capture demand that already exists — fast decay. Generators (Meta, Influencer) create new demand — slower decay, because awareness takes time to convert.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SATURATION ASSUMPTIONS (WHY PRIORS MATTER)

GOOGLE + META

More saturating prior — these channels have enough spend history that we expect diminishing returns to kick in.

INFLUENCER

Near-linear prior in the observed spend range — prevents saturation from collapsing the amplitude estimate when data is limited.

WHY DO PRIORS MATTER?

At weekly grain, saturation evidence is inherently weak — the data alone can't reliably distinguish "linear but small" from "saturated." Priors stabilize the estimation and encode what we know about channel behavior from domain expertise. The model updates these priors with the observed data — so the final estimates reflect both.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

RESULTS

WHAT THE MODEL TELLS US TODAY

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

TODAY'S EFFICIENCY SNAPSHOT — BRAND A

Operating point = last 12 weeks average spend

Channel iROAS (historical) mROAS (marginal) P(mROAS > 1) Core Range (50%)
Google Performance [value] [value] [value] [lo – hi]
Meta Paid Social [value] [value] [value] [lo – hi]
Influencer [value] [value] [value] [lo – hi]
Likely above breakeven — P(mROAS>1) is high
Uncertain — model can't confidently say above or below
Likely below breakeven — at current spend level, incremental € probably loses money
Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

TODAY'S EFFICIENCY SNAPSHOT — BRAND B

Operating point = last 12 weeks average spend

Channel iROAS (historical) mROAS (marginal) P(mROAS > 1) Core Range (50%)
Google Performance [value] [value] [value] [lo – hi]
Meta Paid Social [value] [value] [value] [lo – hi]
Influencer [value] [value] [value] [lo – hi]
Likely above breakeven — P(mROAS>1) is high
Uncertain — model can't confidently say above or below
Likely below breakeven — at current spend level, incremental € probably loses money
Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

OUTPUT CONTRIBUTIONS — BRAND A

Natural Elements — output contributions

Decomposition of revenue into channel contributions + baseline + controls

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

OUTPUT CONTRIBUTIONS — BRAND B

Nature Love — output contributions

Decomposition of revenue into channel contributions + baseline + controls

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

IF WE REALLOCATED TODAY (TOTAL BUDGET FIXED)

Scenario: small, operationally plausible budget shifts — total spend unchanged

Scenario Google Meta Influencer Δ Weekly Revenue (median) Core Range (50%)
Current 100% 100% 100%
Shift A [%] [%] [%] [€ value] [lo – hi]
Shift B [%] [%] [%] [€ value] [lo – hi]

How to read this: "If we moved X% of Google budget to Influencer, the model predicts a median increase of €Y per week, with the true effect most likely between €lo and €hi."

Directionally recommended; magnitude uncertain. The model shows where the opportunity is — not the exact euro amount.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SENSITIVITY: CHANNEL RESPONSE — BRAND A

Natural Elements — channel sensitivity

Δ weekly revenue vs. spend change (shaded band = core range). Look for where gains flatten.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SENSITIVITY: CHANNEL RESPONSE — BRAND B

Nature Love — channel sensitivity

Δ weekly revenue vs. spend change (shaded band = core range). Look for where gains flatten.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SHOULD WE SPEND MORE? — BRAND A

Natural Elements — budget efficiency curve

Key takeaway: At current mix, incremental budget beyond [X]% is likely below breakeven.

Scenario assumes only modeled paid channels; SEO excluded / held fixed.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SHOULD WE SPEND MORE? — BRAND B

Nature Love — budget efficiency curve

Key takeaway: At current mix, incremental budget beyond [X]% is likely below breakeven.

Scenario assumes only modeled paid channels; SEO excluded / held fixed.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SEO

WHAT WE CAN SAY TODAY (AND WHAT WE CAN'T)

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

SEO IN V1 (CONTROL VARIABLE)

WHAT THE MODEL SHOWS

  • SEO coefficient: near-zero / slightly negative
  • Wide uncertainty interval
  • Not statistically meaningful at this stage

WHY THIS IS NOT A JUDGEMENT ON SEO

  • Spend proxy is monthly estimate distributed to weeks → low variance
  • Effects are likely lagged; weekly contemporaneous coefficient is unreliable
  • Model can't isolate SEO incrementality with current proxy

INTERPRETATION

"With the current proxy, the model cannot distinguish SEO's impact from noise. This says more about data quality than about SEO effectiveness."

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

HOW TO INTERPRET UNCERTAINTY

CORE RANGE

(Statistical: 50% credible interval)

"We think the true value sits somewhere in here — this is where we'd bet."

PLAUSIBLE RANGE

(Statistical: 90% credible interval)

"It could be anywhere in here, but most of the probability is in the core range."

THE DECISION-FRIENDLY STATISTIC

P(mROAS > 1) = "What's the probability that the next euro of spend on this channel is profitable?"

This is the number to focus on when making budget decisions.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

NEXT STEPS

WHAT WE IMPROVE NEXT (AND WHY)

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

V2 MILESTONE ROADMAP

1

ATTRIBUTION / TIME-DECAY WORKSTREAM

Extract touchpoint timing distributions → refine adstock priors with evidence. Position attribution as a bridge for marketers, not a competing truth.

2

CAMPAIGN CALENDAR / PROMO INDEX

Validate and systematize campaign flag pipeline. Upgrade from binary flags to richer intensity indices where feasible.

3

ORGANIC TRAFFIC INDEX (SEO)

Pull Search Console and/or GA4 organic signals (weekly). Build branded vs. non-branded series. Add to MMM as a meaningful organic driver — and future budget lever.

4

EXPAND MODEL SCOPE

Reintroduce CRM when enough history exists. Add other constrained channels (TV/OOH) when data supports it.

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

OPEN QUESTIONS FOR TODAY'S WORKSHOP

Does the funnel credit split (harvester vs. generator) match your intuition?

Which budget shift scenario should we operationalize as a small test?

What is the best available organic dataset (Search Console vs. GA4) and who owns access?

How do we want attribution and MMM to coexist in reporting?

Gemma Analytics & Natsana | MMM v1 — DE
Setup·Model·Results·SEO·Next Steps

THANKS!

QUESTIONS & DISCUSSION

MMM complements attribution by estimating incremental impact at channel level. Today we'll walk through the v1 results for Germany, look at what the model tells us about budget efficiency, and discuss practical next steps — especially around SEO and the attribution workstream.

Let's start with what the model uses and why we made the channel choices we did.

The model uses weekly revenue in log-space as the target, covering about 75 weeks of history for the German market. We included three paid channels — Google Performance, Meta, and Influencer — plus seasonality controls and an SEO spend proxy. The channel set is deliberately small: we excluded channels with sparse data to keep the ROAS estimates stable and actionable.

Here's the full picture of what's in and what's out. The guiding principle: more channels doesn't mean a better model. When spend data is sparse, the ROAS estimates become unstable — they might look precise, but they aren't. We'd rather give you solid estimates for three channels than shaky ones for six.

Now let me explain the two core mechanisms the model uses — in plain terms, no equations.

Two core mechanisms. Adstock, or carryover: when you spend money on a channel, the impact doesn't happen instantly and disappear — it carries over into future weeks. How fast it fades depends on the channel. Saturation, or diminishing returns: each additional euro typically yields less than the previous one. At some point, you've reached everyone who's looking. The model estimates both of these for each channel.

We set adstock priors based on each channel's role in the funnel. Harvesters like Google capture existing demand — people who are already searching. Their impact fades quickly. Generators like Meta and Influencer create new awareness — their impact takes longer to materialise and fades more slowly. The half-life numbers are approximate, but they give you the intuition.

Saturation is harder to estimate than adstock, especially at weekly grain. For Google and Meta, where we have more spend variation, we set priors that expect diminishing returns. For Influencer, we keep the prior closer to linear in the observed range — this prevents the model from artificially compressing the influencer effect. The key point: priors aren't assumptions we refuse to change — they're starting beliefs that the model updates with the data.

Now the interesting part — what does the model actually say about channel efficiency and budget allocation?

[FILL VALUES FROM MODEL OUTPUT] This table shows where each channel stands today, at the current average spend level. iROAS is the historical average return. mROAS is the marginal return — what the next euro gets you. P(mROAS>1) is the probability that the marginal euro is profitable. The core range shows where we think the true value sits, with 50% confidence.

[FILL VALUES FROM MODEL OUTPUT] Same view for Nature Love. Note the differences — the two brands may have quite different channel dynamics even in the same market.

This chart breaks down weekly revenue into its components: how much is attributable to each paid channel, how much to baseline demand, and how much to seasonal controls like Black Week. The baseline is the revenue you'd expect even with zero marketing spend.

Same decomposition for Nature Love. Compare the relative size of channel contributions and baseline between brands.

[FILL FROM SCENARIO ANALYSIS] These are small, realistic budget shifts — not dramatic reallocations. The model shows direction and rough magnitude. Think of it as: "the evidence says this direction is likely beneficial" rather than "do exactly this."

This shows what happens when you move one channel's spend up or down while holding total budget fixed. The shaded band is the 50% uncertainty interval. Where the curve flattens, additional spend stops paying off.

Same view for Nature Love. Compare the shape of the response curves — different brands may have different saturation points.

[FILL X% FROM MODEL OUTPUT] This chart shows two things: the top panel is expected revenue vs. total weekly budget — the more you spend, the more you get, but the curve flattens. The bottom panel shows the marginal return factor — how much additional revenue each additional euro of spend generates. When it crosses below 1, you're losing money on the marginal euro.

[FILL X% FROM MODEL OUTPUT] Same budget efficiency view for Nature Love. The breakeven point may differ between brands.

Now let's talk about SEO — this is an important part of the conversation because the current model has real limitations here.

Important context for the SEO expert in the room. The model shows a near-zero coefficient for SEO — but this is NOT a statement about whether SEO works. The issue is the input data: we're using a monthly spend estimate distributed evenly to weeks, which gives very low variance. The model can't distinguish signal from noise when the input barely varies. We need better data, not a different conclusion.

Quick framing on how to read the uncertainty in these results. We use two ranges: the core range is where we'd bet — the true value is most likely in here. The plausible range is wider — it could be anywhere in there, but most of the probability mass is in the core range. For decision-making, focus on P(mROAS>1): the probability that spending one more euro on a channel is profitable.

So where do we go from here? Four milestones for v2.

Four milestones. First: the attribution workstream — we'll extract touchpoint timing data and use it to refine our adstock priors. This also gives marketers a bridge between attribution and MMM. Second: upgrading our campaign calendar from binary flags to richer intensity measures. Third — and this is the big one for SEO: we need weekly organic traffic signals from Search Console or GA4, split by branded vs. non-branded. This is what enables SEO to become a real channel in the model. Fourth: expanding scope to include CRM and potentially TV/OOH as data permits.

Four questions to shape the discussion. First: does the harvester/generator framing match how you think about your channels? Second: should we run one of the budget shift scenarios as a real test? Third — and this is an action item: who can get us Search Console or GA4 organic data on a weekly basis? Fourth: how should attribution reports and MMM results coexist without confusing stakeholders?

Open floor for discussion. Let's dig into the scenarios and next steps.