Opera reads your report's structure — tabs, sections, columns, formulas — pulls filtered data from AppsFlyer and every ad platform, previews the exact write, and appends. The report you built, maintained automatically.
The hard part of reporting automation was never pulling the data — connectors have done that for a decade. The hard part is the report itself: a living Google Sheet with monthly sections, weekly blocks, client-specific KPI columns and formulas someone spent months tuning. Opera is built to understand that artifact and maintain it.
The recurring reports performance teams actually run:
US_, only US_)Every run starts with schema detection — never with a write:
If the structure drifted — a colleague added a column, a client renamed a tab — Opera halts and flags it instead of writing into the wrong place. That single behavior is the difference between automation you babysit and automation you trust.
Each source has real mechanics that decide whether your numbers are correct:
Filters travel with every pull: date range in the app's timezone, geo, campaign prefix, event names, media-source includes and excludes, re-engagement removed.
Opera applies this client's definitions, stored once and reused on every run:
Blended and per-channel versions are computed in the same pass, so a flattering blended number can't hide a channel that's off.
What one weekly append looks like (illustrative):
| Week | Spend | Installs | Purchases | CAC | CPI | ROAS |
|---|---|---|---|---|---|---|
| Jun 1–7 | $22,400 | 11,480 | 1,610 | $13.91 | $1.95 | 1.8 |
| Jun 8–14 | $24,150 | 12,030 | 1,742 | $13.86 | $2.01 | 1.9 |
Mapping a report is a conversation, not a project. You share the Sheet (view access is enough); Opera reads it and shows you what it found — "Weekly tab, monthly sections starting row 4, current section June 2026, append anchor row 31, formula columns F–H (CAC, CPI, ROAS), summary block A1:D2" — and the definitions it inferred from your headers. You correct anything wrong once. From then on, that mapping is the contract every run re-validates. Most reports map in well under an hour, including the argument about what counts as a customer — which is usually the most valuable hour the report has ever received.
Every run leaves a reconstructable trail:
Run #214 · Mon Jun 8, 07:00 GST · schedule: weekly Schema: validated (matches mapping v3) · Period: Wk 24 (Jun 1–7) Pulls: AppsFlyer Master ✓ · AppsFlyer Raw Data ✓ (1,610 events → 1,584 unique) · Meta ✓ · Google ✓ Checks: duplicate period ✓ none · overwrite ✓ target empty · formulas ✓ extended F31:H31 Write: appended row 31 · Summary: posted #client-us · Triggered by: schedule (owner: M.)
When a client asks "where did this number come from?", the answer is a log entry, not an archaeology session.
Mapping a report requires view access to that file; maintaining it requires edit on that file — not your Drive, not your domain. Source platforms connect through their own OAuth with scopes limited to what you've enabled, and read-only reporting runs without any write scope on the ad side at all. Every connection is revocable at the source in one click, independently of Opera. The principle is least privilege made literal: the system can touch exactly the artifacts it maintains, and an auditor can verify that claim in your Google and platform admin consoles, not in our marketing copy.
Rosters that span AED, EUR, GBP and USD accounts break manual reports quietly: someone converts at Monday's rate, someone else at Friday's, and the blended CAC moves for currency reasons. Opera applies one FX policy per report — one named source, pull-time conversion, the policy stated in the definitions block — so a number's movement always means the market moved, not the spreadsheet. Original-currency columns can sit beside the converted ones for finance's benefit, clearly labeled.
Manual reporting fails in predictable ways — each one is specifically engineered out:
Opera is built to touch production reports and live ad accounts without breaking anything:
See this running on your own reports.A 45-minute workflow audit maps your current process and shows exactly what Opera automates — step by step.
A 45-minute teardown of how you report today: we map every step, mark what Opera automates, and send you the written spec — useful whether or not you buy.