Illustrative scenario

How a multi-market app cut weekly reporting from 6 hours to 15 minutes

An AppsFlyer-heavy multi-market app reporting across markets automated its weekly acquisition report end to end.

An illustrative scenario — a composite of the market-reporting workflows Opera is built for, with realistic numbers.

The setup

A multi-market app running paid acquisition across eight markets — including the US, Germany, France and the UK — on Meta, Google, TikTok and Snapchat, with AppsFlyer as the MMP. Each market has its own weekly tab: spend, installs, purchases, cost per purchase, stacked in monthly sections. The weekly build took one analyst most of Monday: ~45 minutes per market × 8, plus the reconciliation nobody had time for.

What was set up

  • Per-market mappings — each tab's structure, anchors and formula regions learned once
  • The definitions block — purchase = the purchase event, deduplicated per user, re-engagement excluded; markets scoped by prefix (US_, UK_, FR_…) and country_code
  • The pulls — Master API for spend/installs; Raw Data Pull API for the event counts; platform APIs with pinned settings for the reconciliation columns
  • The schedule — Monday 7am app-time per market, previewed appends, summaries to per-market Slack channels with cost-per-purchase flags at +15%

The numbers

Before After
Weekly build time ~6 hours ~15 min (review of 8 diffs)
Reconciliation quarterly, manual every run, flagged
Wrong-week incidents ~1 per quarter 0 (duplicate guard)
Time-to-report Monday 4pm Monday 7:05am

What changed operationally

The Monday meeting moved from assembling to deciding: which market's CAC moved and why. A TikTok postback break in one market was caught by a variance jump the week it happened — previously a quarter-end discovery. The analyst's recovered day went to market-level creative analysis, which is the work that was always supposed to happen.

What stayed human

The commentary on each market's summary, the budget reallocation calls, and the definitions themselves — reviewed quarterly, changed twice, both times as announced definition changes rather than silent drift.

Frequently asked questions

Is this a real customer?
It's an illustrative composite of the market-reporting workflow Opera is built for, labeled as such — the structure, mechanics and failure modes are real; the company is not named because it is not a named client.
Why per-market schedules instead of one big run?
Isolation and timing: each market resolves 'last week' in its own app timezone, posts to its own channel, and can pause independently during a restructure.

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.