TL;DR: Compare subscription cohorts by splitting realized revenue from projected LTV, judging cohorts only at equal ages, and writing down what could still change the ranking before you move creative spend.
Creative spend is a ranking problem. You have three ads producing subscribers, and the budget can only follow one of them. The catch: the cohort that looks best this week mostly shows projected value, not earned value. To find subscription cohorts worth creative spend, you need a subscription cohort analysis that treats young numbers as evidence with confidence limits — not as a verdict.
This playbook is for lifecycle, product, and subscription operations leads who sign off on where the next creative dollar goes. It assumes a mobile or web subscription app with monthly and annual plans, and it works whether your subscription LTV data lives in RevenueCat, Adapty, or a warehouse built on billing events.
Why young subscription cohorts mislead spend decisions
A subscription cohort's LTV is a curve, not a number you look up. Group subscribers by acquisition week and source, then track how much net revenue each group has actually produced and how much a model expects it to produce. Early in a cohort's life, almost everything on that curve is expectation.
Three things make immature cohorts dangerous for spend calls:
- Trials are not revenue. Trial starts are a proxy. Your real acquisition cost is cost per paid subscription, and gaps in trial-to-paid rate between campaigns are often larger than gaps in cost per trial — the same reason RevenueCat recommends tracking realized LTV per paying customer instead of hypothetical totals.
- Cancellation takes time to observe. A cohort can post strong week-one revenue and still churn hard at the first renewal. The signal simply has not arrived yet.
- Payback is a cash-flow clock. Every dollar of ad spend sits locked in the cohort until cumulative net revenue passes acquisition cost — the same payback logic used for business process automation ROI. A cohort can look profitable at D180 and still starve your budget at D60.
The fix is not to wait a year. It is to compare cohorts honestly at the age they actually are.
Realized vs predicted LTV: keep observed and projected apart
The first discipline in cohort LTV analysis: never let a single number blend what happened with what a model hopes will happen. RevenueCat's Prediction Explorer formalizes this as two distinct terms: realized LTV is revenue already generated for a cohort, while predicted LTV is that realized revenue plus predicted future revenue inside a defined horizon. A cohort can only carry predicted revenue while it is younger than the lifetime you are measuring.
Use the same split in your own reporting, whatever the tool:
- Observed (realized): net revenue booked to date — after store fees, payment costs, and refunds. This is the money you can actually reinvest.
- Projected: expected revenue from a survival curve or forecast model, capped at a horizon your mature cohorts actually support.
On the projection side, know what your model leans on. RevenueCat predicts up to 24-month LTV from per-product survival curves — with fallback dimensions such as store and product duration — trained on a dataset of more than 50k apps, 450M subscriptions, and over $4B in tracked revenue; auto-renew status is the primary per-subscription signal it uses. Adapty takes a similar shape: it releases predicted metrics only after a cohort passes a "baseline day," defined as the first day on which 90% of a cohort's initial revenue has typically been received.
Whichever model you use, count with net revenue — after store fees, payment costs, and refunds — and cap the projection horizon at what your own data supports. Once a cohort matures, the question changes shape entirely; that is when you rank it like any other segment by realized economics, as in the LTV CAC ratio by customer segment playbook. Until then, keep the two columns physically separate in every report and every spend proposal.
Compare cohorts at equivalent ages
Comparing cohorts means comparing identical slices of their lives. A D30 snapshot of one creative against a D90 snapshot of another tells you almost nothing — the older cohort has simply had more renewals.
Set three rules and do not bend them:
- Same-age checkpoints. Judge every cohort at D30, D60, D90 — not "whatever age it is today." If a new creative is only at day 14, compare its day-14 numbers to the incumbents' day-14 numbers, or wait.
- A minimum maturity gate: 7-14 days before you rank. That is RevenueCat's own recommendation — wait until a cohort is at least 7-14 days old before comparing its predicted LTV with other cohorts, because cancellation rates take time to be observed. Adapty's baseline-day rule plays the same role. Below the gate, you record data; you do not rank.
- One cohort definition. RevenueCat itself supports three different cohort definitions — first-seen customers, initial conversions, and first-purchase customers — and warns they are not interchangeable. Pick one (usually first paid subscription) and hold it constant across creatives, channels, and reports.
Mind the trial mix while you do this. Trial-to-paid conversion varies by billing platform and offer, which is exactly why trial to paid conversion rates deserve their own mature-cohort view before you read meaning into a young cohort's trial count.
The cohort maturity decision table
Here is the asset that makes the method stick: a cohort maturity decision table. Every spend-shift proposal fills one row per cohort before anyone touches a budget. It forces the three separations — observed vs. projected, same-age comparison, explicit uncertainty — into a single artifact.
| Column | What goes in it |
|---|---|
| Cohort | Creative + acquisition week (e.g., "feature-demo, wk 32") |
| Age at measurement | Days since cohort start; must match across rows |
| Paying subscribers | Paid conversions, not trials |
| Realized net revenue | Observed revenue after store fees and refunds |
| Projected net revenue | Realized + model forecast, horizon-capped |
| % realized | Realized ÷ projected — how much of the claim is evidence |
| Uncertainty statement | What could still move the ranking |
| Decision | Scale / hold / kill, and the trigger that changes it |
Worked example (synthetic)
Synthetic inputs, reproducible arithmetic — not a client result. Assume a subscription app at $15/month (net ~$10.50 after store fees) plus an annual plan at $120 (net ~$84 upfront). Renewal survival model taken from the app's mature cohorts: months 2-6 retain 0.80, 0.75, 0.70, 0.65, 0.60 of paying subscribers — an expected $36.75 net per monthly payer across months 2-6. Each creative received $3,000 of spend, and every cohort is measured at D30.
| Cohort | Paying subs | Realized net | Projected D180 | % realized | Uncertainty | Decision |
|---|---|---|---|---|---|---|
| founder-story | 58 (50 mo + 8 yr) | $1,197 | $3,035 | 39% | Annual mix unproven at renewal | Hold — recheck at D60 |
| price-anchor | 51 (45 mo + 6 yr) | $977 | $2,630 | 37% | Promo trials may churn at renewal 1 | Kill — projection below spend |
| feature-demo | 66 (55 mo + 11 yr) | $1,502 | $3,523 | 43% | n=66; zero renewals observed yet | Scale +25%, capped |
The arithmetic for feature-demo: realized = 55 × $10.50 + 11 × $84 = $1,502. Projected = $1,502 + 55 × $36.75 = $3,523, which clears the $3,000 spend inside the horizon. price-anchor attracted cheap trials ($10/trial vs $21-43 elsewhere) but converted only 17% to paid and projects below spend — a cheap-trial trap, not a bargain.
Two things to notice. First, the same fleet-average survival curve was applied to all three cohorts; that is an assumption, not a measurement, and the table says so. Second, feature-demo earned a capped scale, not a blank check — its uncertainty field records that not one renewal has been observed yet.
State uncertainty before changing spend
A projected ranking is a hypothesis with a deadline. Before any budget moves, the row's uncertainty statement has to say what would prove it wrong: a renewal rate below the survival curve, an annual-plan mix that does not repeat, a refund spike on one creative.
Practical guardrails that hold up in operation:
- Kill fast, scale slowly. Eric Seufert's creative-testing rule on RevenueCat's Sub Club: losers prove out quickly, winners take time — so kill obvious losers and let apparent winners age while tracking cohort ROAS at checkpoints like day 20, 30, and 50. If you want to see what slow judgment costs, run your numbers through the ROAS leak calculator.
- Cap the projection horizon. Forecast only as far out as your mature cohorts actually reach. No D365 arithmetic on 90 days of history.
- Size the move to the evidence. A cohort at 40% realized earns a 20-30% budget step, not a doubling. Recheck after the first renewal event lands.
- Recalibrate the model. Retention shifts with every product update and audience change; rebuild the survival curve at least quarterly.
- Report the gap, not just the ratio. Track realized vs projected per cohort on your marketing unit economics dashboard so the whole team sees how much of each claim is still forecast.
Payback math belongs in the same view: how many months of net revenue until cumulative contribution passes the cohort's acquisition cost. The ROI calculator handles the arithmetic; the decision table handles the honesty.
Wire the events that make cohorts trustworthy
None of this works if the cohort's revenue stream is wrong. Two plumbing details decide whether your subscription app LTV cohorts are real:
- Billing lifecycle events. RevenueCat webhooks emit
INITIAL_PURCHASE,RENEWAL,CANCELLATION,UNCANCELLATION,NON_RENEWING_PURCHASE,SUBSCRIPTION_PAUSED,EXPIRATION, andBILLING_ISSUE. If your realized column only counts initial purchases, refunds and billing failures will quietly inflate it. Wire every event type into the cohort ledger. - Acquisition-source tagging. AppsFlyer's Unified Deep Linking returns only deferred deep-link parameters for new users —
deep_link_valueanddeep_link_sub1-10;media_sourceandcampaigncome back null unless deferred handling is implemented. A cohort with no source attached is a cohort you cannot fund. The full identity-join pattern is covered in web to app attribution for subscription apps.
Check both monthly: one broken webhook or one unattributed campaign silently rewrites your rankings.
FAQ
What is cohort LTV?
Cohort LTV is the lifetime value of a group of subscribers who share a start point — usually the week or campaign that acquired them — measured as a curve over time. Unlike a single blended subscription LTV number, it shows which acquisition sources produced subscribers who keep paying.
How do you calculate LTV for a subscription app?
Build a retention curve from mature cohorts: the share of subscribers still paying after each renewal, multiplied by net revenue per period (after store fees, payment costs, refunds), summed to a horizon your data supports. For young cohorts, report realized revenue and projected revenue separately rather than one blended figure.
Can I compare cohorts when some subscribers came through a web funnel?
Yes, but only if acquisition source survived the web-to-app jump. Deferred deep-linking paths can return null campaign fields for new users, leaving those subscribers untagged — fix attribution first, or the web-sourced cohort silently contaminates the comparison.
Answer clarity notes
- Dates: vendor documentation reflects behavior as documented at access time (November 2026); RevenueCat's 7-14 day minimum-cohort-age guidance and Adapty's baseline-day definition may change — check current docs before hard-coding thresholds.
- Scope: written for subscription apps (mobile and web) with mixed monthly/annual plans selling to consumers; US-market store-fee assumptions. Enterprise SaaS and usage-based pricing need different models.
- Evidence: vendor mechanics (realized vs predicted LTV, survival curves, webhook events, deep-link parameters) come from the public sources linked in text. The decision-table worked example uses explicitly synthetic inputs and assumptions — it is a reproducible calculation template, not a measured customer result or benchmark.
- Not guarantees: survival factors, conversion rates, revenue figures, and the scale/hold/kill calls in the example are planning guidance. Your cohorts, fees, and margins will differ; not guarantees of outcome.
Sources
- RevenueCat — Prediction Explorer
- RevenueCat — Webhook event types and fields
- Adapty — Predicted metrics
- RevenueCat — Sub Club with Eric Seufert
- RevenueCat — Metrics for scaling paid ads
- Adsplicit — LTV, CAC and payback for subscription apps
- AppsFlyer — Deep linking workflow
- Contentmation — Advertising strategy for subscription models
Cohort rankings are only as honest as the ledger behind them. If you want a second pair of eyes on your cohort pipeline and spend rules, a That'sGonnaHelp automation audit reviews exactly this workflow.