Cross-channel advertising budget optimization: AI, MMM, and incrementality

Advertising budgets are often allocated based on the previous period rather than the actual contribution of channels. We develop a unified cross-channel planning model end to end: from data reconciliation to a process for regular recalculations. The client receives a transparent allocation and a rationale for each share.
Frequently Asked Questions

Why ad budget optimization breaks on end-to-end analytics

The classic failure starts at the junction of systems: the ad platform credits the conversion to itself, the CRM — to the manager's call, web analytics — to the last click.

One purchase is counted three times, duplicated conversions inflate the total for each channel, and the discrepancy in channel attribution produces a difference of multiples between reports that are all believed at the same time.

The attribution windows and models differ between systems, so even the total sum of orders for a period doesn't reconcile.

Ad budget optimization in such a scheme turns into manually shuffling investments: exports are merged into a spreadsheet, matched by dates, and eyeballed to decide who gets more and who gets cut.

By the time the decision reaches the ad account, a week has passed — the auction and bids have already changed, and the signal is stale.

This is how the allocation error gets locked in: the channel that intercepts ready demand looks like the best one and gets more, while the channel that creates demand gets cut.

Cross-channel reporting in this form doesn't answer the main question — what would have happened without this investment.

Let's break down how this gets closed: we bring channels into a single coordinate system, separate interception from demand creation, and verify contribution by measurement rather than attribution — and only after that do we reallocate the budget.

The effect of a unified cross-channel planning model

After a unified planning model is implemented, what changes is not the report but the way decisions are made.

A model based on Marketing Mix Modeling, calibrated with incrementality tests, sees audience overlap and demand shifting between channels — so the effect of reallocating channels is calculated before launch, not explained afterwards.

The share of incremental conversions becomes the primary metric, and the speed of rebuilding the plan drops from several days of manual reconciliation to several hours: a new scenario is run on the same data and compared with the baseline.

What disappears from reporting

A whole class of double-counting errors goes away: the same conversion stops landing simultaneously in platform statistics, in attribution, and in the lower-funnel report.

Horizon errors go away too — comparing channels over different conversion windows without adjusting for the lag between contact and action.

The extrapolation error also gets closed: weight is shifted to where the return has been measured on sufficient volume, not to where there is simply more data.

How we measure the effect without tying it to money

We count behavior, not cost: the share of incremental conversions by geo tests, the share of impressions the model classifies as clearly inefficient, and the stability of a channel's estimate across runs.

A separate metric is the speed of rebuilding the plan: how much time passes from a new input to a ready scenario with a recalculated allocation.

If a channel's estimate diverges between runs beyond a set threshold, the model is not allowed to reallocate — that too is a verifiable result, not a promise.

Comparing approaches: rules, models, and field tests

No approach is "right" on its own — the choice is determined by the volume of accumulated data, the speed of change in the channel, and the cost of an error. Below are the working alternatives that real decisions are made between when allocating investments.

Option When it fits Limitations
Heuristic allocation rules Few channels, short history, shares reviewed weekly They don't see saturation: the share grows, the return falls, and the rule keeps giving to the same channel
Marketing mix model There is a long series of weekly data across all channels, and each one's contribution needs to be estimated Sensitive to external factors, confuses correlation with causation, overfits when messaging changes
Incrementality field test A large channel, a high cost of error, causality needs verification Runs for weeks, narrows reach during the test, scales poorly to dozens of small channels

When heuristic rules are enough

If investments are modest, channels are stable, and decisions are reviewed often, rules with limits and stop conditions are enough. Their strength is transparency: you can see why a channel's share changed, and the rule is easy to roll back.

The weak spot is saturation: the rule doesn't notice that the next step into the same channel delivers less return.

When field tests are indispensable

Where the model shows contribution but it's unknown whether the result would have happened without the investment, verification is needed by switching off part of the audience or geography.

A test provides a causal estimate and calibrates the model: the gap between forecast and actual shows which channels it overestimates. In practice, approaches are combined — rules as the framework, the model for priorities, the test for validating major decisions.

How we implement the allocation model: stages of work

The work goes from data to model, and then to a recalculation procedure: until a comparable stream of events is assembled, optimization turns into fitting to a report. That's why the stages follow a strict order, with acceptance at each one.

Data and source audit

  1. Inventory of sources: exports from ad accounts, web analytics counters, CRM, calls, offline sales. We check where costs and target actions exist, and where data only arrives as daily aggregates.
  2. Event collection schema: a unified user identifier, stitching sessions across devices, deduplication of leads, correct time zones. Without this, the share of comparable conversions drops by multiples, and the model learns on noise.
  3. Reconciliation and labeling: we match events with costs by day, restore gaps, and mark periods of tests and campaign downtime — otherwise they distort training.

Validation on historical data

  • Model setup: features (channel, creative, day of week, seasonality), the lag between impression and purchase, channel saturation, and recalculation cadence.
  • Backtest: the model trains on the past, and the forecast is compared with actuals for each channel. We look not at the average deviation but at the error during periods when budgets changed.
  • Calibration with incrementality tests: we set up control groups and adjust channel contributions by the actual uplift, not by the last click.
  • Handover to operations: recalculation schedule, thresholds for alerts on data anomalies, a dashboard with channel contributions, and the procedure by which the team changes the allocation itself.

What we hand over: artifacts, schemas, and procedures

We deliver the work not as a presentation but as a working loop: after launch, your team recalculates the model, connects new channels, and tests hypotheses on its own. Below is what exactly remains in your repository, in storage, and in the documentation.

Model artifacts

  • Configured connectors to ad accounts, web analytics, and internal accounting — data arrives on schedule, with no manual exports.
  • A data flow schema: for each metric you can see the source, the cleaning stage, and the layer at which it enters the model.
  • Rules for recalculating metrics: how discrepancies between ad accounts and accounting are reconciled, and which version of a number is treated as the truth.
  • Training and recalculation code in the repository with a description of parameters and reference runs.
  • A loop for validating channel contributions: geo tests and control groups, plus a measurement plan several periods ahead.
  • A dashboard with a breakdown of channel contributions and a budget reallocation report.

Documentation and procedures

  • Model documentation: assumptions, limitations, sensitivity to input data, and typical causes of discrepancies.
  • A regular review procedure: triggers (bid changes, a new channel, a seasonal shift) and the course of action for each.
  • A decision log: what changed in the model, when, and on what basis.
  • Knowledge transfer to the team: joint walkthroughs, granted access, and short instructions for launching and rolling back a version.

Case study: eliminating duplicated conversions across two channels

A retailer with two active acquisition channels — search and social — faced the fact that budget decisions were being made from reports that contradicted each other. We broke down the attribution chain and separated the conversions that were being counted.

What it was before

Each channel counted the same purchase as its own: the client-side counter on the site and the server-side event from the app were summed rather than matched.

In reporting, the share of inflated conversions reached 34%, and estimates of the channels' contribution to the same sales diverged by ±40%.

To bring the numbers into a single picture, the marketer manually exported data from AppsFlyer and the ad accounts — reconciliation took up to two working days a week.

What it became after

We put a unified user identifier at the entry point and removed double counting at the attribution model level: an event arrives once, and the channel gets a "first" or "confirming" flag.

The share of inflated conversions dropped to 4%, the divergence in estimates between channels narrowed to ±7%, and manual reconciliation took 40 minutes instead of two days.

The budget is now reallocated based on data, not on whose report is more convincing. Incrementality tests confirmed that part of the upper-funnel spend was working on already warmed-up users — after re-labeling, those funds went to channels with confirmed sales uplift.

Attribution and the marketing mix model disagree: whom to trust?

Last-click attribution and the marketing mix model answer different questions, so a discrepancy between them is the norm, not a failure.

Attribution divides credit among the counted touchpoints and overstates lower-funnel channels: search and retargeting get credit for demand created by reach placements. The marketing mix model works on aggregated data and sees demand that attribution doesn't account for.

The problem starts when a budget decision is made from the discrepancy: one estimate suggests cutting upper-funnel channels, the other suggests growing them.

We treat the estimate confirmed by an experiment as the reference — switching off a channel or a geo test with a control group of regions: only measurement separates uplift from correlation.

Source of the estimate What question it answers Where the limitation is
Last-click attribution Who was in the chain of touchpoints Doesn't see external demand, overstates lower-funnel channels
Marketing mix model The contribution of channels to sales Relies on correlation, sensitive to data
Geo test with a control group How many sales would disappear without the channel Long preparation, few parallel checks

We reconcile this through calibration: measurement results become the reference point for the marketing mix model.

Open implementations such as Meridian provide a Bayesian estimate of channel contributions, but we also validate that with an experiment rather than taking it on faith.

We keep attribution for day-to-day management within a channel, and reallocate the budget based on the calibrated model — by intervals, not by point numbers.

Common technical concerns about data and the model

Data from ad accounts and analytics systems rarely arrives at the model ready to use: somewhere the series is shorter than needed, somewhere the export lags by several days, and campaign structure changes faster than history accumulates.

Below are the concerns most often raised during model handover, and how we close them at the level of data preparation and setup.

What should be done about incomplete history and gaps in the data?

A short or patchy series can't support a complex model: we limit the number of parameters, merge closely related channels into groups, and fill gaps with interpolation plus a separate confidence flag.

If the history is below the baseline minimum, we take the channel out of the model and estimate its contribution with separate tests.

How should the lag in exports from ad accounts be handled?

Statistics arrive with a lag, and part of attribution is completed later. We train the model on settled slices, mark recent days as preliminary, and after the data stabilizes replace them with actuals and recalculate the forecast.

Won't the model confuse seasonality with the effect of advertising?

Seasonality, holidays, and promos enter the model as separate features — calendar, sales events, weather factors. A holiday spike is not attributed to the budget, and the contribution of advertising is estimated honestly. We restore an unlabeled promo calendar from spikes and agree on it with you before training.

The ad accounts change campaign structure — will the model fall apart?

Binding is not to a campaign but to stable slices: channel, placement type, geo, audience segment. When campaigns are merged or renamed, the series is rebuilt using a mapping table, and the history is preserved. We mark major restructurings as breakpoints and train the model separately before and after them.

How often should the model be retrained?

The base cycle is a scheduled recalculation of coefficients and a full model review once a quarter, plus ongoing monitoring of the gap between forecast and actuals.

If the error goes beyond the acceptable corridor for several periods in a row, we run an unscheduled retraining so the model reacts to shifts but doesn't overfit to noise.

Let's discuss your task: what's needed to start

To make the first meeting productive, it helps to gather the inputs in advance — not a report, but what already exists in your working systems. The more context you provide up front, the more accurate the estimate and the fewer follow-up rounds afterwards.

  • Statement of the task: which goal we're closing — growing share, lowering acquisition cost, reallocating between channels — and which metric you use to judge the result.
  • List of sources: ad accounts, web and product analytics, CRM, exports for orders and revenue; and over what period the history has been retained.
  • Data access: read-only accounts, access to storage or regular exports, and a contact person who confirms those rights.
  • The current logic of attribution and budget allocation — the baseline from which we measure improvement.
  • Constraints: mandatory platforms, brand campaigns, seasonal peaks, and the boundaries for experiments.
  • Decision-making cadence: weekly or monthly — this determines the recalculation frequency and the reporting format.

After that, we come back with an estimate and a work plan: the composition of the stages, who is needed on the client side, and the timeline to the first verifiable results.

If some data is missing, we'll say so right away, propose a replacement, and show how that will affect the design of the incrementality check.

AI Development Areas

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1393
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1368
  • B2B Advance company logo design
    B2B Advance company logo design
    815
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1139
  • AIDER company logo development
    AIDER company logo development
    1057
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1152