A practical, no-fluff guide for performance teams and agencies.
Every team that reports AppsFlyer data in Google Sheets runs some version of the same manual loop. Written down honestly, it's eleven micro-steps — and seeing them itemized is usually what makes a team finally fix it. This guide is that itemization: the loop, where the time goes, the error taxonomy, and what to fix first even if you stay manual.
Timed across teams we've audited, the loop runs 45–90 minutes per app per week — more with reconciliation, double with both OSes.
None of these announce themselves. Most are discovered by a client.
These cost an hour once and remove the worst recurring errors.
The whole loop becomes: schema re-validated → Master API pull for spend/installs → Raw Data Pull API for event-level conversions, deduplicated per user → filters applied as stored (geo, prefix, event, re-engagement excluded) → previewed append into the detected anchor → summary posted. Same report, ~4 minutes, identical logic every week.
| Week | Spend | Installs | Purchases | CPI | CAC |
|---|---|---|---|---|---|
| Jun 8–14 | $22,400 | 11,480 | 1,610 | $1.95 | $13.91 |
The interesting part isn't the row — it's that the purchases count is deduplicated, scoped to US_ campaigns and geo = US, and computed the same way it was in March.
One app, one geo, no event-counter KPIs, and a fortnightly cadence — the loop is 20 minutes and automation is over-engineering. The moment you add markets, prefixes or weekly cadence, the math flips.
This exact workflow — both APIs, the filters, the dedup, the anchored append — is AppsFlyer reporting automation.
"Update this week's report with installs, CPI and CAC by country from AppsFlyer."
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.
Grab the free template — installs, events, CAC, CPI, ROAS and reconciliation columns — then let Opera keep it current.