Why this matters
Product Analysts use monetization cohorts to understand how different user groups generate revenue over time. This guides pricing, paywall changes, promotions, and product prioritization.
- Real tasks you will face: quantify payback period after pricing change; compare LTV across acquisition channels; separate GMV from revenue in marketplaces; identify monetization lift from a new feature.
- Outcome: a clear, trustworthy cohort table that shows revenue per cohort by months since start, plus ARPU, LTV, revenue retention, and payback.
Concept explained simply
A monetization cohort groups users by a shared start event (commonly acquisition or first purchase month) and tracks their revenue over subsequent months.
- Cohort key: Acquisition month or First Purchase month.
- Time axis: Months since cohort start (0, 1, 2, ...).
- Metrics per cell: Revenue generated in that month by that cohort.
- Rollups: ARPU, ARPPU, LTV (cumulative ARPU), revenue retention, payback.
Mental model
Think of each cohort as a bucket of users. Each month, money flows in from that bucket (repeat purchases, renewals, upsell). Your job is to measure the height of that flow each month (revenue per month) and the total water collected (cumulative revenue), normalized by bucket size (per-user metrics).
Key metrics and quick formulas
- Revenue (per cohort, per month): sum of recognized revenue for that cohort in that month.
- ARPU: Revenue in period / Cohort users.
- ARPPU: Revenue in period / Paying users in period.
- Payer rate: Paying users in period / Cohort users.
- LTV (to month N): Sum of ARPU from month 0 to N.
- Revenue retention (month t): Revenue at month t / Revenue at month 0.
- AOV: Revenue in period / Number of orders.
- Purchase frequency: Orders in period / Active users in period.
- CAC payback: First month t when cumulative ARPU ≥ CAC.
- Marketplace note: GMV × Take rate = Revenue. Do not mix GMV and Revenue in one metric.
Worked examples
Example 1 — Subscription app (acquisition cohort)
Cohort: Jan 2025; Users: 1,000
- Month 0 revenue: $2,000
- Month 1 revenue: $1,200
- Month 2 revenue: $900
- Month 3 revenue: $700
ARPU by month: M0 $2.00; M1 $1.20; M2 $0.90; M3 $0.70.
Cumulative revenue: $4,800; LTV (to M3): $4.80.
Revenue retention: M1 60%, M2 45%, M3 35% (each vs M0).
Example 2 — Marketplace (first-purchase cohort)
Cohort: 500 buyers; Take rate: 12%; Returns deducted before revenue.
- Month 0 GMV: $50,000; Returns 5% → Net GMV $47,500 → Revenue $5,700
- Month 1 GMV: $30,000; Returns 3% → Net GMV $29,100 → Revenue $3,492
Cumulative revenue: $9,192. ARPU M0 $11.40; M1 $6.98; LTV to M1 $18.38.
If CAC = $8 per acquired buyer, payback achieved in Month 0.
Example 3 — Freemium game (payer penetration)
Cohort: 10,000 installs.
- Month 0: 2% payers; ARPPU $10 → Revenue $2,000; ARPU $0.20
- Month 1: +1% new payers; 30% of M0 payers repurchase; ARPPU $12
Month 1 revenue ≈ (100 new payers × $12) + (60 repeat payers × $12) = $1,920; ARPU $0.192. LTV to M1 ≈ $0.392.
How to build a monetization cohort table
- Choose cohort definition: acquisition month or first purchase month (be consistent).
- Define revenue: gross vs net (refunds, taxes, discounts). Document the choice.
- Set time buckets: months since cohort start (0,1,2,...). Avoid calendar months for the columns.
- Create the matrix: rows = cohorts, columns = months since start, values = revenue.
- Add normalizations: ARPU per month, cumulative LTV.
- Add diagnostics: revenue retention vs month 0, payer rate, ARPPU.
- Add payback: compare cumulative ARPU to CAC.
- QA: check totals match your source facts, verify no double counting across cohorts.
Sample SQL sketch (generic)
-- Inputs: events (user_id, event_date, revenue, is_refund), users (user_id, acquisition_date), calendar of months
WITH user_cohort AS (
SELECT
u.user_id,
DATE_TRUNC('month', u.acquisition_date) AS cohort_month
FROM users u
), revenue_clean AS (
SELECT
e.user_id,
DATE_TRUNC('month', e.event_date) AS rev_month,
SUM(CASE WHEN e.is_refund THEN -ABS(e.revenue) ELSE e.revenue END) AS revenue
FROM events e
GROUP BY 1,2
), joined AS (
SELECT
c.cohort_month,
r.rev_month,
DATE_PART('month', AGE(r.rev_month, c.cohort_month))::int AS month_number,
r.revenue
FROM user_cohort c
JOIN revenue_clean r USING (user_id)
WHERE r.rev_month >= c.cohort_month
)
SELECT
cohort_month,
month_number,
SUM(revenue) AS revenue
FROM joined
GROUP BY 1,2
ORDER BY 1,2;Then join cohort sizes to compute ARPU (revenue / cohort_users) and cumulative sums.
Common mistakes and self-checks
- Mixing cohort keys: using acquisition for some users and first purchase for others. Self-check: confirm a single cohort rule in code or sheet.
- Using calendar months as columns. Fix: use months since cohort start (0,1,2...).
- Mixing GMV and revenue. Fix: choose one; for marketplaces, compute revenue = GMV × take rate after returns.
- Ignoring refunds and taxes. Fix: define gross vs net and stick to it.
- No normalization by cohort size. Fix: compute ARPU and LTV.
- Comparing cohorts at different maturity. Fix: compare up to the minimum common month (e.g., LTV to Month 3).
- Currency mix in multi-country data. Fix: convert to a single currency and state the rate/date if needed.
- Small cohorts overinterpreted. Fix: add minimum cohort size threshold and show confidence bands if available.
Exercises
These exercises mirror the tasks below. Do them in a spreadsheet or notebook.
Exercise 1 (ex1): Two cohorts, ARPU, retention, payback
Data:
Cohort Feb: users=800; CAC per user=$5 Month 0: payers=120, revenue=$3,600 Month 1: payers=70, revenue=$1,400 Month 2: payers=50, revenue=$900 Cohort Mar: users=1,200; CAC per user=$3.5 Month 0: payers=150, revenue=$3,000 Month 1: payers=110, revenue=$2,400 Month 2: payers=80, revenue=$1,200
- Tasks: For each cohort, compute ARPPU by month, ARPU by month, LTV to Month 2, revenue retention (M1 and M2 vs M0), and the earliest payback month.
Checklist before you submit
- Did you normalize by cohort users for ARPU and LTV?
- Did you compare M1 and M2 revenue against M0 for retention?
- Did you use cumulative ARPU vs CAC for payback?
Practical projects
- Spreadsheet cohort dashboard: Build a cohort matrix with revenue, ARPU, LTV, retention, and conditional formatting highlighting payback month per cohort.
- Pricing change analysis: Compare LTV to Month 3 for cohorts before vs after a price update; hold marketing levels steady during the comparison window.
- Marketplace lens: Start from GMV, subtract returns, apply take rate, and produce a net-revenue cohort table. Show both GMV and revenue on separate tabs to avoid mixing.
Who this is for
- Product Analysts and Data Analysts who need to quantify monetization over time.
- PMs looking for clear LTV and payback signals.
- Growth/Monetization teams evaluating pricing, paywalls, or promos.
Prerequisites
- Basic cohort analysis (grouping by start event, months since start).
- Comfort with spreadsheets or SQL for aggregations.
- Clarity on your revenue definition (gross vs net).
Learning path
- Refresh cohort fundamentals (cohort key, time axis).
- Define monetization metrics (ARPU, ARPPU, payer rate, LTV, retention).
- Build a first monetization cohort table and validate totals.
- Add CAC and mark payback month.
- Segment by channel, country, or pricing to find drivers.
Mini challenge
Cohort: 2,000 users; CAC=$4. Month 0 revenue $3,000; Month 1 revenue $1,200; Month 2 revenue $1,000.
- Question: What is LTV to Month 2, revenue retention at Month 2, and payback month?
Show answer
ARPU by month: M0 $1.50, M1 $0.60, M2 $0.50. LTV to M2: $2.60. Retention M2 vs M0: $1,000 / $3,000 = 33.3%. Payback: CAC=$4, cumulative ARPU=$2.60 by M2 — not paid back by Month 2.
Next steps
- Implement the monetization cohort table using your data.
- Add CAC by channel and compute channel-specific payback.
- Share a 1-page readout with one insight per cohort (what to scale, what to fix).
Save progress and test yourself
The quick test is available to everyone. If you log in, your progress and test results will be saved.