Mobile App ROAS, CAC and LTV: How to Calculate Them Per Campaign
CPI tells you what an install cost. It says nothing about whether that install ever paid you. Here is the chain of formulas that does, and where it usually breaks.
Try the numbers yourself with the free ROAS and CAC calculator. Every figure below is a hypothetical example, not a benchmark.
The chain: spend to revenue
A subscription app turns ad spend into revenue through four conversions:
- Install (what CPI measures)
- Trial start or first purchase intent, after onboarding and the paywall
- Paid conversion, when the trial ends
- Retained paid months, which sets lifetime value
Core formulas
CPI = spend ÷ installs · CAC = spend ÷ paying users · LTV = revenue per paid month × average paid months · ROAS = (paying users × LTV) ÷ spend · Payback = CAC ÷ revenue per paid month
Example: $1,000 spend, 500 installs, 12% trial, 35% trial-to-paid, $6.50 net/month, 8 months. 21 paying users, CAC ≈ $48, LTV = $52, ROAS ≈ 109%.
Note the example: a $2 CPI looks cheap, yet ROAS barely clears break-even. CPI hides a 12% × 35% = 4.2% install-to-paid rate.
Use net revenue
App stores keep 15 to 30%. Use the revenue you actually receive, or ROAS is overstated by up to a third. Billing data from RevenueCat, Stripe or Paddle is better than the list price.
Why blended numbers mislead
Two campaigns can share a CPI and differ several times over in CAC, because they bring different users. A campaign that attracts people who abandon onboarding looks identical to a good one until you follow users past the install. Always compute per campaign, ad group or keyword.
! Note
Attribution is what makes per-campaign numbers possible. Apple Search Ads and Google Play have click-level signals; other networks are often only spend by campaign. Be explicit about which of your channels you can measure down to the user. See install attribution: Apple vs Google.
The middle of the funnel decides payback
The multiplier you control fastest is not the bid. It is the install-to-trial rate. Raising it from 12% to 15% lowers CAC by 20% with the same spend. Find where paid users leave with an onboarding funnel, segmented by campaign, then fix that step first. The conversion tracking guide covers which events to send.
Payback and cash
ROAS over a lifetime can look fine while cash is tight. If CAC is $48 and a subscriber pays $6.50 a month, payback is about 7.4 months. Spend at a pace your runway supports, and use observed retention rather than assumed months. See retention benchmarks for how to read retention curves.
A per-campaign checklist
- Spend imported per campaign and day
- Installs and trial starts joined to the campaign that drove them
- Paid conversions and renewals joined to the same user
- Net revenue after store fees
- Onboarding step drop-off per campaign
- A rule for pausing: for example, ROAS under 100% after a full trial-plus-first-renewal window
OnRamp joins ad spend, onboarding funnels and RevenueCat revenue so these numbers per campaign come from one place. Start a 30-day free trial or run the calculator first.
