Performance marketing has two measurement problems that look similar but are not. The first is feeding the ad networks the cleanest possible conversion signal so their bidding algorithms make good decisions with your money. The second is answering the business question of what share of revenue was caused by marketing and where next quarter's budget should go.

Different questions, different tools, different timescales. Telling them apart is the easy part. The work is in running both of them well.

Enhanced Conversions and CAPI are the tools for the first problem, and marketing mix modelling for the second. Neither replaces the other.

Two-layer measurement architecture. Top layer: signal layer feeding ad networks via Enhanced Conversions and CAPI in real time. Bottom layer: oversight layer running Bayesian MMM quarterly to produce channel contribution and budget scenarios. Warehouse sits between both as the shared data foundation. Two-layer measurement architecture. Top layer: signal layer feeding ad networks via Enhanced Conversions and CAPI in real time. Bottom layer: oversight layer running Bayesian MMM quarterly to produce channel contribution and budget scenarios. Warehouse sits between both as the shared data foundation.
Two-layer architecture. Signal layer feeds the networks in real time; oversight layer runs MMM on the same warehouse for budget decisions.

Two questions, two layers

The network signal layer is operational and runs in real time. It answers a tactical question: given the user who just clicked, what conversion followed, and how should the bidding algorithm respond? Smart-bidding quality rises with signal quality. On Meta, one measure is Event Match Quality (EMQ), a score out of 10 for how well the customer details sent with an event can be matched to Meta accounts. A CAPI feed at 9.5 gives the bidding more matched conversions to learn from than one at 6.

The oversight layer is strategic and runs quarterly. It answers a causal question: of the revenue we earned last quarter, what share was incremental to marketing spend, and where does the next pound produce the most return? I answer it with Bayesian MMM, because it quantifies uncertainty and doesn't depend on any single platform's identity graph.

NOTE

This article treats both layers as necessary. Some commentators argue that MMM alone is sufficient and platform signal is unimportant. That view underrates the cost of poor smart bidding on in-flight budgets. Others argue that platform attribution is enough and MMM is too slow and uncertain to act on. That view underrates how much revenue platform reports misattribute or double-count. My position is that both extremes leave money on the table.

What the networks actually need from you

The practicalities of Enhanced Conversions and CAPI implementation (what each recovers, where the ceiling sits, how to order the build) are covered in L/003. This piece assumes that work is in hand and focuses on the larger question of why a clean signal layer on its own is not sufficient.

Google Ads, Meta Ads, TikTok Ads, all the major platforms run their bidding on machine-learning models that predict conversion probability in each auction. Those predictions are only as good as the training signal. Starve the model of conversion data and it has less to learn from, which means broader targeting, higher CPAs, and over-investment in easy traffic that converts without much help.

The practical implication: Enhanced Conversions, Meta CAPI and similar platform integrations are how you make the networks spend your budget better.

Better signal, better bidding. Even if you never trust a platform's reports, its bidding still learns from the conversions you send it.

What the networks cannot tell you

Ad networks are also commercial entities with an interest in attributing revenue to themselves. Greedy attribution, where each platform claims credit for any conversion its ads touched inside its own attribution window, is a feature of the system. Add up what Google, Meta, TikTok and affiliates each report, and a sale that several of them touched is counted once by each. The more their audiences overlap and the longer their attribution windows, the further the combined total can run above actual revenue. No single platform's report shows the overlap.

The networks also cannot see what they did not touch. Organic search, direct traffic, word of mouth, PR, email, all contribute to revenue without appearing in paid platform reports. Smart bidding optimises against what the platform sees. Budgets set on platform reports do the same, over-investing in easy-to-measure channels and under-investing in channels the platforms cannot observe.

Better tracking won't fix this. It's the limit of asking the platforms to measure themselves.

The oversight layer

Marketing mix modelling is a statistical technique for estimating the causal contribution of each marketing channel to business outcomes, using time-series data that spans multiple channels and non-marketing drivers. Bayesian MMM, as implemented in Google's Meridian framework, quantifies uncertainty in those estimates, which matters because a point estimate without its credible interval (the range the model says the true value most likely sits in) looks more certain than it is, and invites a bigger budget move than the evidence supports.

The output of a well-built MMM is a channel-level contribution breakdown, saturation curves per channel, and budget scenarios for how much to spend as well as where. The model is fitted on weekly spend, impressions and sales, not on the conversions each platform claims, though platform ROAS is used as a plausibility check on some lower-funnel priors (L/005, step 3). Its estimates of what each channel caused hold only if the model controls for the things that move both spend and sales, such as underlying demand.

L/005 covers the MMM stack in detail. For this piece, the relevant point is that MMM answers the question platform reporting isn't built to answer, and experiments such as geo holdouts check it and feed the next fit.

How the layers work together in production

In practice, good measurement runs both layers continuously and uses them to cross-check each other.

The signal layer feeds the networks high-quality conversion data via Enhanced Conversions, CAPI, and server-side event pipelines. Smart bidding uses it to optimise in-flight. Platform reports remain directional, not definitive.

The oversight layer runs quarterly, with an interim refit when something significant changes. It produces channel contribution estimates, saturation curves, and budget scenarios. Its output feeds budget decisions, not in-flight bidding.

When the two layers disagree about a channel, the disagreement is itself the signal. If Google Ads reports strong ROAS but MMM shows low incremental contribution, and the model's range for that channel is narrow and has moved away from its prior, the channel is likely cannibalising organic or brand. If MMM shows strong contribution but platform attribution is weak, check the signal layer for leaks first. If it's clean and the channel is lower-funnel, check for demand the model can't see (L/005, step 2). An upper-funnel channel may work over a longer lag than the platform's attribution window, or its sales may land through another channel, as when video drives brand search.

In this setup, both layers share one dependency: a warehouse that can feed both of them. The signal layer needs reliable, timely conversion data to push to the networks. The oversight layer needs the same warehouse to produce the joined dataset MMM runs on.

The same warehouse feeds the networks every day and the model once a quarter.
When the two layers disagree about a channel's performance, the disagreement is itself the signal.

When a team runs only one layer well

The two layers need different skills, so a team built around one of them has a blind spot where the other should be.

When the work lives inside the ad manager UIs and Enhanced Conversions counts as done once it's implemented, platform-reported ROAS becomes the scoreboard. That hides brand/non-brand cannibalisation and pulls budget towards channels with clean attribution, whatever their actual contribution.

When a team built around analytics treats MMM as the answer, the signal layer is what slips. A contribution chart can't explain a 30% CPA drift that started when the conversion data sent to the networks degraded and the bidding had less to learn from.

Running both layers well means different people, or different mindsets, on the same team.

WATCH OUT

A team that shows strong platform ROAS and no MMM should check brand and retargeting spend first: those channels pick up demand that already exists, and platform attribution credits them for it. A team that shows strong MMM results and weak platform signal should start with the signal layer, because its bidding is learning from less data than it could, and that shows up as rising CPAs.

What good looks like

Good measurement looks like this.

Signal layer: CAPI above 8 of 10 on Meta's Event Match Quality and healthy Enhanced Conversions coverage in the Google Ads conversion diagnostics, both on the primary conversions and monitored monthly. Server-side event collection on critical pages. Platform-reported ROAS used as an operational metric, not a decision metric.

Oversight layer: MMM refitted quarterly on at least two years of weekly data (three for a national model), with an interim refit when something significant changes, Bayesian framework with uncertainty quantification, outputs presented as channel contribution with credible intervals and budget scenarios.

Governance: quarterly review comparing platform-attributed revenue against MMM-inferred contribution, divergences investigated, budget driven by MMM, not platform ROAS: moved where the model's ranges support it, tested first where they don't (L/005, step 8).

L/005 walks through the MMM build step by step: what Meridian does, how to structure the data, and what a credible output looks like. The two layers answer different questions, and both deserve proper answers. If you'd like a second opinion on either layer, get in touch.