User Acquisition

ROAS (Return On Ad Spend)

Also known asReturn on Ad SpendAd ROI

Campaign revenue divided by campaign cost over a defined time window — the core profitability ratio for paid user acquisition.

Key takeaways

  1. 01ROAS = revenue ÷ ad spend, always stated with a time horizon (D7 ROAS, D30 ROAS, D180 ROAS) — revenue accrues over time.
  2. 021.0 ROAS = break-even on that window. 1.5 ROAS = 50% margin. Subscription apps usually target D30 ROAS > 50-70%.
  3. 03F2P games often aim D7 ROAS 15-25% (implying D90-D180 full payback). Subscription apps target longer windows.
  4. 04ROAS bidding (Meta, TikTok, Google) requires accurate conversion events back to the platform — post-ATT iOS makes this harder.

ROAS (return on ad spend) is the core profitability ratio for paid user acquisition: campaign revenue divided by campaign cost over a defined time window. A 1.0 ROAS means you broke even on that window — every dollar spent generated a dollar of revenue. A 1.5 ROAS means 50% margin. ROAS is always stated with a time horizon: Day-7 ROAS, Day-30 ROAS, Day-180 ROAS. The same campaign can run negative D7 ROAS and very positive D180 ROAS because subscription and IAP revenue accrues over time.

ROAS targets by app category (rough 2026 anchors):

The exact ROAS bar depends on cost of capital (WACC), fixed-cost base, and how much confidence you have in long-tail LTV modeling.

ROAS bidding in modern ad platforms (Meta App Campaigns, TikTok Spark Ads, Google Ads UAC) uses a prediction model: the platform estimates which users will drive the highest ROAS and biases impression allocation toward them. To make ROAS bidding work, you have to send the platform accurate post-install revenue events — every IAP, every subscription start, every trial conversion. The platform uses those events to learn which user types drive value, then bids accordingly.

Post-ATT iOS measurement reality: SKAdNetwork (Apple's privacy-preserving attribution framework) delivers delayed, aggregated, conversion-value-capped signals back to ad networks. The result: iOS ROAS measurement is noisier and slower than Android. Workarounds include conversion-value mapping (encoding revenue into the 6-bit SKAN CV), MMP-driven post-install probabilistic attribution, and second-touch measurement via in-app first-party signal. None fully replaces deterministic attribution.

Common pitfall: confusing ROAS with ROI. ROAS is gross — revenue divided by ad spend. ROI is net — profit (after platform commission, COGS, overhead) divided by total investment. A 1.5× ROAS often translates to slightly-above-break-even net ROI after Apple / Google's 30% commission, hosting / serving costs, and operational overhead. Use ROAS for tactical campaign decisions; use net ROI for strategic capital allocation.

Quick answers

What is ROAS in mobile app marketing?

**ROAS (return on ad spend)** is campaign revenue divided by campaign cost over a defined time window. A 1.0 ROAS means you broke even; 1.5 means 50% margin. Always stated with a time horizon — D7, D30, D180 ROAS — because subscription and IAP revenue accrues over weeks or months. The core profitability ratio for paid UA.

What is a good ROAS for a mobile app?

Depends on category and time window. Subscription apps usually target D30 ROAS 50-70% with D180 above 120-150%. F2P games often aim D7 ROAS 15-25%, expecting full payback at D90-D180. High-ARPU finance / fintech targets D30 ROAS 30-50%. The exact bar depends on cost of capital, fixed-cost base, and confidence in long-tail LTV modeling.

What is the difference between ROAS and ROI?

**ROAS** is gross: revenue ÷ ad spend. Doesn't account for COGS, platform commission, overhead. **ROI** is net: profit ÷ total investment. A 1.5× ROAS often translates to barely positive net ROI after Apple / Google's 30% commission, infrastructure costs, and operational overhead. Use ROAS for tactical campaign-level decisions; use net ROI for strategic capital allocation.

Why is iOS ROAS harder to measure post-ATT?

Apple's SKAdNetwork (SKAN) delivers attribution signals back to ad networks in a delayed, aggregated, and conversion-value-capped form. The network can't easily tell "this $0.01 cohort came from user X" anymore — it sees aggregated, hashed, time-delayed conversion-value postbacks. ROAS bidding still works, but the optimization signal is noisier and slower than on Android. Workarounds: smart conversion-value schema, MMP probabilistic attribution, in-app first-party engagement signal.

Back to glossary