Illustrative scenario

How a UA team reconciled spend across 5 ad platforms automatically

A user-acquisition team unified spend and installs across five platforms into one automated, reconciled report.

An illustrative scenario — a composite of UA reconciliation setups, with realistic numbers.

The setup

An in-house UA team spending ~$400k/month across Meta, Google, TikTok, Snapchat and Apple Search Ads, AppsFlyer as referee. Platform-claimed conversions exceeded MMP-attributed by 30–80% depending on channel — normal physics, but unexamined: reconciliation was a quarterly spreadsheet exercise, and one quarter it surfaced a TikTok postback gap that had quietly mispriced a channel for six weeks.

What was set up

  • The reconciliation view — per channel, per week: spend, platform-claimed, AppsFlyer-attributed, variance % — appended into the team's existing report
  • Pinned pulls — Meta at 7-day-click/1-day-view stated in the header; Google conversions trailing-window re-pulled; Snap swipe vs view labeled; SKAN in its own columns
  • Baselines + thresholds — four weeks of history per channel, then flags on variance movement beyond each channel's band
  • The schedule — weekly with the main report; flags into the UA channel

The numbers

Channel Typical variance Alert band
Meta +35% ±10pts
Google +20% ±8pts
TikTok +45% ±12pts
Snap +38% ±12pts

Reconciliation time went from a quarterly half-day to zero marginal effort; detection latency for tracking breaks went from weeks to the same run.

What changed operationally

Variance became a monitored series instead of a quarterly argument. A changed attribution setting on one platform tripped the band within a week and was reverted before it contaminated a month of CAC. Budget meetings switched denominators: MMP-attributed for decisions, platform-claimed labeled as the platforms' own optimization signal.

What stayed human

Deciding what each variance jump meant — the flags name the cell, the team names the cause.

Frequently asked questions

Is this a real customer?
An illustrative composite of the reconciliation monitoring pattern, labeled as such — the variance ranges are realistic for the channel mix described, not a named client's data.
Why alert on movement instead of absolute variance?
Because the level is physics (windows, mix, iOS share) and differs per channel. Movement against a channel's own baseline is the signal that something broke.

Watch Opera run a real workflow, end to end.

Three minutes: a plain-language request, a Sheet schema read, an AppsFlyer pull, a previewed append, a Slack summary — then a paused campaign launch.