Guide

How to automate CAC reporting

The formula, the data sources, the pitfalls — and how to keep CAC current across platforms without rebuilding it every week.

What counts as a "customer" is yours to define — a purchase, a paying subscriber, a first-time purchaser, a purchase. CAC is only meaningful once that activation event is pinned down.

CAC at a glance
FormulaCAC = total ad spend ÷ new customers acquired
Inputs fromSpend from each ad platform; new customers from your MMP in-app events or back end.
Report atchannel, market and cohort grain

Why CAC reports go stale

CAC pulls from multiple platforms, each with its own definition and refresh lag. The moment you finish the report it's out of date — so it gets rebuilt next week. The fix is to automate the inputs and the write-back, not just the chart on top.

How to compute CAC across platforms

  1. Pull the inputs — spend from each ad platform; new customers from your mmp in-app events or back end.
  2. Apply your customer acquisition cost definition at the grain you report on (channel, market, cohort)
  3. Append the result to your existing report — formulas preserved, append-only
  4. Schedule the refresh and route a summary to Slack or email, flagging anything off target

A worked example

Illustrative. Spend $48,000 across Meta + Google in a week; 3,200 purchases attributed in AppsFlyer → CAC = 48,000 ÷ 3,200 = $15.00. Split it out: Meta $32k ÷ 2,300 = $13.91, Google $16k ÷ 900 = $17.78 — the blended number hid a 28% gap between channels.

The pitfall to avoid

Watch out

Dividing spend by *installs* instead of activated customers flatters CAC, and a single blended CAC hides which channels actually work. Report blended and per-channel.

How Opera automates it

Opera pulls the inputs across AppsFlyer and your ad platforms, applies your customer acquisition cost definition, reconciles the sources, and appends the result to your existing report — append-only, formulas preserved — then schedules it and posts a summary.

"Refresh the CAC report with this week's numbers by channel, and flag anything off target."

Related: ROAS · CPI · LTV

QA before you trust it

CAC QA checklist
Tie out spend against each platform's UI for the same range (expect small FX/timezone deltas, not surprises)
Recompute one row by hand — the formula on real inputs, matched to the sheet's output
Check the date boundary — the period starts and ends exactly where the report says it does
Confirm the denominator definition — the event or conversion being counted is the one your team means

When not to automate it

Skip automation while the customer acquisition cost definition is still being argued about, while the report's structure changes weekly, or for one-off analyses. Automation pays on stable, recurring reports — lock the definition first, then put it on a schedule.

Keeping it trustworthy

Opera is built to touch production reports and live ad accounts without breaking anything:

  • No destructive writes. Updates are append-only by default — your existing data and formulas are never overwritten.
  • Preview before execution. You see exactly what Opera will change before a single cell is written.
  • Campaigns paused by default. New campaigns are created paused, with approvals required before any spend.
  • Full audit logs and client-level isolation. Every action is logged, and each client's data and rules stay separate.

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.

Frequently asked questions

What's the CAC formula?
CAC = total ad spend ÷ new customers acquired. Opera applies your exact definition, not a generic one.
What's the most common CAC mistake?
Dividing spend by installs instead of activated customers flatters CAC, and a single blended CAC hides which channels actually work. Report blended and per-channel.
Which platforms does it cover?
AppsFlyer, Adjust, Google Ads, Meta Ads, TikTok Ads, Snapchat Ads and Apple Search Ads.
Will it overwrite my report?
No — updates are append-only and formulas are preserved.

Put a number on the reporting tax.

Estimate the hours and fully-loaded labor cost your team spends on recurring reports — and what Opera gives back.