Why Day-1 ROAS Lies and Day-30 ROAS Tells the Truth
Day-1 ROAS ranks your campaigns by who spends fastest, not by who's worth the most. Day-30 ROAS ranks them by who actually pays back. Those are different questions, and they routinely produce opposite answers. If you scale on the Day-1 leaderboard, you'll pour budget into the cohort that impulse-bought on install and then vanished, while starving the campaign that was quietly building a base of people who'd still be around in month three.
I've watched this exact inversion happen on a real spend chart, and it's the kind of thing that makes a CFO squint. So let me show you the mechanism, then hand you a projection method you can paste into a spreadsheet and defend in a budget meeting.
What a ROAS curve actually is
Return on ad spend isn't a single number. It's a curve that climbs over the life of a cohort as those installed users keep spending. You measure it at fixed checkpoints from the install date: D1, D3, D7, D30, D90. The "D" is days-since-install for that specific group of users, not calendar days.
The shape of that climb is the whole story. Two cohorts can hit the same D30 ROAS by two completely different paths. One front-loads: big D1, then a nearly flat line as the fast spenders churn. The other back-loads: a modest D1 that keeps compounding as retained users convert, resubscribe, and come back for more. Early on, the front-loader looks like the obvious winner. By D30 they've often swapped places.
This is the same reason retention shape matters more than a single retention percentage. A cohort whose curve flattens into a stable plateau is worth far more than one that started higher and kept decaying. If curve shapes are new to you, the way retention curves smile, flatten, or decay is the visual companion to everything here.
The inversion, with numbers
Here's a stripped-down version of a case I've seen play out. Two campaigns, same app, same week, measured at D3 and again at D30.
| Campaign | D3 ROAS | D30 ROAS | D3 rank | D30 rank |
|---|---|---|---|---|
| A: broad video, incentivized-ish | 18% | 34% | 1st | 2nd |
| B: interest-targeted, higher CPI | 9% | 41% | 2nd | 1st |
At D3, Campaign A is winning by a mile: 18% versus 9%, double the early return. Every dashboard glowing green says pour money into A. But A's curve is already tired. It captured people who installed, made a quick purchase, and left. Its multiplier from D3 to D30 is under 2x.
Campaign B looked mediocre at D3 because its users take longer to warm up. They browse, they come back, some of them subscribe on day 9. B's curve keeps climbing, and by D30 it's the better campaign. Rank inverted.
This isn't a made-up quirk. adjoe's UA KPI guide describes the same pattern at the channel level: one source can show a strong early D7 ROAS but not reach breakeven until D60, while another shows a weak D7 and gets to breakeven by D30. Different traffic, different maturation speeds. Campaignswell's writeup on ROAS prediction puts it bluntly. Early ROAS rewards fast-churning impulse buyers, and they saw a cohort that looked worst on early numbers go on to deliver the highest LTV over six months.
So the uncomfortable truth: the earlier the checkpoint, the more your ranking measures spending speed rather than user value. And you can't scale on speed.
Why you can't just wait 30 days
The obvious retort is "fine, I'll wait for D30." You can't, not fully. By the time a cohort is 30 days old, you've already spent 30 more days of budget on newer cohorts you can't yet judge. Waiting for mature data means always steering with a month-old map.
On iOS it's worse. SKAN gives you a signal built mostly from the first 24 hours after install, and then it's delayed on top of that. Singular's writeup on SKAN performance stages makes the point that a 24-hour-ish window is simply too short to know whether a campaign brought good users or bad ones. You're being asked to make scaling decisions on data that, by design, can't see D30.
That's the bind. Immature ROAS is available but misleading. Mature ROAS is honest but late. The way out isn't to pick one. It's to project the late number from the early one.
The D3-to-D30 multiplier method
The method is old, unglamorous, and it works: multiply an early checkpoint by a historical ratio to estimate the mature one. The whole thing is one formula.
Projected D30 ROAS = measured D3 ROAS × maturation multiplier
where maturation multiplier = historical D30 ROAS ÷ historical D3 ROAS
(for the same channel × geo × cohort type)
You build the multiplier from your own past cohorts that have already fully aged to D30. Take a batch of old campaigns on the same channel and geo, pull their actual D3 and D30 ROAS, and divide. That ratio is your multiplier for new, immature cohorts on that same slice.
Worked example. Say your last quarter of TikTok/US cohorts averaged 10% at D3 and 38% at D30. Your multiplier is 3.8. A fresh TikTok/US campaign sitting at 11% on D3 today projects to roughly 42% at D30 (11% × 3.8). Now you can rank it against a fresh Meta campaign using each channel's own multiplier, instead of comparing raw D3 numbers that mature at different speeds.
Here's the same two campaigns from earlier, but ranked by projected D30 instead of measured D3:
| Campaign | D3 ROAS | Channel multiplier | Projected D30 | Decision |
|---|---|---|---|---|
| A: broad video | 18% | 1.8 | 32% | Hold spend |
| B: interest-targeted | 9% | 4.5 | 41% | Scale |
Same early data, opposite decision, because the multiplier encodes what you already know about how each channel's curve behaves. B gets the budget. That's the call the raw D3 leaderboard would have gotten wrong.
A note on rigor: a flat multiplier assumes the curve shape is stable across cohorts. For a quick weekly read that's fine. If you want to do it properly, fit a curve (a power or logarithmic function on ROAS-by-day) and read D30 off the fitted line rather than using a single ratio. The multiplier is the napkin version; the fitted curve is the version you show the board. For SKAN specifically, where you can't even see a real D3, you lean on predictive models seeded from Day-0 signals — turning day-0 SKAN signals into pLTV buckets is that harder cousin of this method.
The assumptions, in a box
Every projection is a bundle of assumptions wearing a confident number. Here are mine for the method above. Disagree with any of them and your multiplier changes.
- Curve shape is stable within a channel × geo × cohort slice. If your creative strategy or audience shifts hard, last quarter's multiplier is stale. Re-fit monthly.
- The historical cohorts you built the multiplier from actually reached D30. If you only kept the campaigns that survived to D30, your multiplier is survivorship-biased upward, and the dead campaigns that never matured aren't in the average, so you'll over-project. This one bites people constantly.
- Seasonality isn't spiking. A Black Friday cohort matures on a different schedule than a February one. Don't apply a Q4 multiplier to a Q1 cohort.
- D3 is measured cleanly — same attribution window, same event definitions, no partial-day cohorts sneaking in.
That survivorship point deserves its own sentence. If your "historical D30 data" quietly excludes the campaigns you killed at D5, you're computing a multiplier only from winners, and it'll flatter every new campaign you run.
Benchmarks are a compass, not a target
People want a magic D30 number to hit. The benchmarks exist, and they're worth knowing as orientation. Liftoff's 2026 app-marketer guide puts casual-game D30 ROAS around 47% on iOS and about 15% on Android, and calls a D30 above 40% on iOS solid for most genres, above 60% excellent. Airbridge notes that subscription teams often treat D30 as the primary read while a D30 below 1.0 can still be fine if renewals recover CAC by month three to six.
Use those to sanity-check, not to set your goal. Your actual target comes from your unit economics: what you can pay to acquire a user and still hit your payback window and your LTV-to-CAC ratio. A 3:1 LTV:CAC is the usual "healthy" line; 1:1 is breakeven and only defensible as a deliberate land-grab. If you haven't built that math yet, our unit-economics dashboard template lays out the cells and formulas, and it's what should sit under any ROAS target you commit to.
The reason I'm allergic to published benchmarks as targets: most are survivorship-biased. The studios who report their D30 ROAS are disproportionately the ones doing well. The ones who quietly shut down don't file benchmark data. So the "average" you're comparing against is already skewed high. Aim at your own break-even, not someone else's highlight reel.
Where the tooling fits
The math above needs cohort-level ROAS by channel and geo, aged out to D30, which means your attribution and your revenue data have to live in the same cohort view. That's the actual product requirement, and it's where an MMP or attribution platform earns its keep. AppsFlyer and Adjust are the incumbents here, with deep cohort ROAS reporting and predictive modules, and they price like incumbents, worth it at scale, heavy for a small app. Kixo sits in this space too, with mobile attribution, deep links, and cohort analytics wrapped in a chat-first interface where you ask for the curve in plain language instead of building the report by hand; the trade-off is it's a younger platform than the two giants. Singular and others cover the aggregation angle. There's no single right answer. Pick the one whose cohort model and pricing match how you actually run UA. For the privacy-era mechanics underneath all of them, the SKAN pLTV approach is the piece to read next.
Whatever you use, the non-negotiable is that D3 and D30 for the same cohort are queryable side by side. If your tool can only show you a campaign's ROAS as a single blended number, you can't build a multiplier, and you're back to ranking by spending speed.
A short checklist before your next scaling decision
- Are you ranking campaigns by projected D30, or by raw early ROAS? If it's the latter, stop.
- Do you have a per-channel multiplier built from cohorts that actually reached D30 — including the ones you killed?
- Have you re-fit that multiplier in the last month?
- Does your D30 target come from your own payback math, or from a benchmark blog?
If you can answer those four honestly, you're already ahead of most teams I've sat across the table from. The day-1 number will keep glowing green and begging for budget. Let it. The decision belongs to the curve, and the curve doesn't finish talking until D30.
FAQ
Can I project D30 ROAS from D1 instead of D3? You can, but D1 is noisier — a single day captures mostly install-moment purchases and almost none of the retained-user behavior that separates good cohorts from bad. D3 already includes a couple of return sessions, which is why it's a steadier base for the multiplier. If SKAN forces you to Day-0, use a proper predictive model rather than a flat ratio.
How often should I recompute the multiplier? Monthly at minimum, or whenever creative, targeting, or seasonality shifts noticeably. A multiplier is a snapshot of curve shape, and curve shape drifts.
What if a channel doesn't have enough historical D30 cohorts yet? Then you don't have a trustworthy multiplier, and you should say so out loud. Cap spend on that channel until you've aged a few cohorts to D30, or borrow a conservative multiplier from a similar channel and mark the projection as low-confidence.
Is a D30 ROAS under 100% a failure? Not by itself. Plenty of healthy IAP and subscription apps don't cross breakeven until D90 or later, recovering CAC through renewals and repeat purchases. What matters is whether the full projected curve clears your payback window, not whether D30 alone is above 1.0.