Shape
Cohorts by age, in a table
Chart · Subscriptions
Subscription retention shows what share of paid subscriptions reach each later billing period. RevenueDot groups subscriptions by the date their first paid period started, then, for each period n, divides those that reached it by those that have had time to reach it. Period 0, the first paid period, is 100% by definition.
Formula
Retention at period n = subscriptions that reached paid period n ÷ subscriptions that have had time to reach it
Shape
Cohorts by age, in a table
API name
subscription_retention
Measures
Retention (Percent)
Filter and segment by
App, Store, Product, Product duration, Offering, Country, Platform, App version
Definition
RevenueDot cohorts paid subscriptions by their first paid date. A subscription that starts with a free trial goes into the cohort of the day it converts. The table has one row per cohort (month by default) and a column for each paid period. The first column is the cohort size. Period 0 is the first paid period, and period k is the paid period after k renewals. A subscription reaches period k when it has k + 1 paid periods.
Each cell divides by the subscriptions that have had time to reach that period, so a cohort that is too young for a period does not drag the number down. RevenueDot works out when a period would start from the product's duration, or from the length of the first paid period when no duration is known. A cell is marked incomplete while only part of the cohort has had time, and it is blank when none has. The table shows up to 24 periods.
This chart follows subscriptions, not customers. A customer who lets a subscription lapse and later comes back starts a new subscription, which goes into a newer cohort. Sandbox purchases, granted access and Family Sharing purchases are excluded. The retention_scale selector shows relative (percent) or absolute (count). You can filter by app, store, product, product duration, offering, country, platform and app version, but not segment.
Find it in the dashboard under Analytics > Charts, or call GET /v2/projects/{project_id}/charts/subscription_retention. The response is a cohort table in the same shape as RevenueCat's Charts API: each value has cohort, period, value and incomplete, and periods[0] is the cohort size.
Worked example
Illustrative numbers for one monthly cohort of 200 subscriptions that started in January.
| Period | Subscriptions that reached it | Retention |
|---|---|---|
| 0 (first paid month) | 200 | 100% |
| 1 (first renewal) | 140 | 70% |
| 2 | 112 | 56% |
| 3 | 98 | 49% |
Of the 200 subscriptions in the January cohort, 98 reached their fourth paid month, so retention at period 3 is 98 ÷ 200 = 49%.
Why it matters
Retention tells you how long a subscriber stays, which sets what a subscriber is worth. A table where each column drops slowly and then flattens describes a product people keep. A table where the second column falls steeply describes a product people try once.
Compare cohorts down a column to see whether a change helped. If the cohort after a new onboarding or price keeps more subscribers at period 3 than the cohort before it, the change worked. Compare plans of the same duration, and use the Churn chart for a single rate per period.
API
Same path and response shape as RevenueCat's Charts API, so existing scripts keep working.
curl "https://api.revenuedot.app/v2/projects/$PROJECT_ID/charts/subscription_retention?resolution=month" \
-H "Authorization: Bearer $SECRET_KEY" # sk_... with charts_metrics:charts:read Reference: Charts guide · REST API v2
FAQ
Group subscriptions by the date they became paid. For each later period, divide the subscriptions that reached it by the subscriptions that have had time to reach it. RevenueDot does this for every cohort and period.
Churn is the share of subscriptions that ended in one period, among those active at its start. Retention follows one cohort across many periods and shows the share still paying.
It depends on price, plan length and app category, so RevenueDot does not publish a benchmark. Compare your own cohorts over time and by plan of the same duration.
No. Retention starts at the first paid period. A subscription that starts with a trial joins the cohort of the day it converts.
Subscriptions. A customer who lapses and returns starts a new subscription, which joins a newer cohort.
Get started
Connect your app to RevenueDot Cloud, free up to $10,000 a month in tracked revenue, and all 43 charts fill from your store history after import.
Already have an account? Sign in · Prefer your own servers? Self-host free