Реалізація аналітики підписок (MRR, Churn Rate, ARPU) у мобільних додатках
Модель бізнесу підписки найлегше испортити неправильною аналітикою. MRR $50K звучить добре — до моменту, коли виявляється, що 15% місячний churn rate означає втрату половини доходу за 4 місяці. Правильно налаштована subscription analytics дозволяє бачити ці сигнали заздалегідь.
Джерела даних про підписки
Найважливіше завдання — отримати надійні події про життєвий цикл підписки. На мобільних платформах це нетривіально.
iOS StoreKit 2. Transaction.updates — async потік всіх транзакцій (нові, renewals, revocations). Product.SubscriptionInfo.status — поточний статус підписки. Server-to-Server notifications (App Store Server Notifications V2) — єдиний надійний спосіб отримати renewal события на бекенд, оскільки клієнт може бути offline під час renewal.
Android Google Play Billing 6. PurchasesUpdatedListener для real-time подій, queryPurchasesAsync при запуску додатку для синхронізації. Real-time Developer Notifications через Pub/Sub — аналог Apple S2S notifications.
RevenueCat як middleware — усуває складність роботи з обома платформами. Один webhook з нормалізованими подіями: initial_purchase, renewal, cancellation, billing_issue, product_change, refund. Webhooks доставляються на бекенд з автоматичними повторами. Для більшості проектів RevenueCat — правильний вибір: SDK на клієнті + webhook на сервері.
Ключові метрики та як їх розраховувати
MRR (Monthly Recurring Revenue)
MRR = сума нормалізованого місячного доходу від усіх активних підписок. Річні підписки діляться на 12 (не суммуються повністю за місяць платежу).
SELECT
SUM(
CASE plan_interval
WHEN 'monthly' THEN price_usd
WHEN 'yearly' THEN price_usd / 12.0
END
) as mrr
FROM subscriptions
WHERE status = 'active' AND DATE_TRUNC('month', NOW())
BETWEEN started_at AND COALESCE(ended_at, 'infinity')
Розкладіть MRR за рухом: New MRR (нові підписники), Expansion MRR (оновлення), Contraction MRR (понижень), Churned MRR (скасування), Reactivation MRR. Загальна зміна = Net New MRR. Ці цифри показують, звідки росте дохід і куди він витікає.
Churn Rate
Два варіанти — не плутайте їх:
Revenue Churn = Churned MRR / MRR на початок періоду. Показує втрату доходу.
User Churn = Скасовані підписки / Активні підписки на початок періоду. Показує втрату користувачів.
Revenue Churn важливіший для SaaS. Якщо upsell працює добре, User Churn може бути 5%, а Revenue Churn — негативним (Negative Churn) через розширення.
ARPU (Average Revenue Per User)
ARPU = MRR / Активні підписники. Рахуйте за когортами, не глобально: ARPU когорти січня 2025 vs ARPU когорти січня 2024 показує, чи поліпшилася якість залучення.
Trial Conversion Rate
(Користувачі, які перейшли з trial на платну) / (Користувачі, які почали trial). Рахуємо за когортою — trial почався в період X, перевіримо conversion після 7/14/30 днів. Важливо: RevenueCat надає готовий trial_conversion event.
Dashboard та сховище даних
Сирі события підписок → ETL в аналітичне сховище (BigQuery, ClickHouse, Redshift). Агреговані метрики перераховуються пакетом (щодня або щогодини для свіжих даних) і кешуються у PostgreSQL або Redis для API.
Мобільний dashboard (admin) відображає: MRR з трендом (sparkline за 90 днів), Active Subscribers, Churn Rate, ARPU, Trial Conversion. Cohort retention chart — класична трикутна таблиця, де рядки = когорти за місяцем старту, стовпці = місяці після старту, комірки = % залишилося.
На Flutter: fl_chart для лінійних графіків та DataTable для когортної матриці. На iOS: Swift Charts + UICollectionView з compositional layout.
Проблеми з біллінгом як причина невільного оттоку
20–40% churn у додатках підписки — невільний: карта просрочена, недостатньо коштів. App Store/Google Play автоматично повторюють кілька днів, але якщо conversion не вийшло — підписка скасовується.
Dunning flow на клієнті: при отриманні billing_issue события показуємо in-app повідомлення з CTA «Оновити спосіб платежу». На iOS — прямий link до налаштувань підписки через ManagedSettingsStore або deep link itms-apps://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions. На Android — BillingClient.launchBillingFlow з PRODUCT_DETAILS для оновлення платежу.
Правильно налаштований dunning може повернути 15–25% невільних churners.
Процес роботи
Аудит поточного event tracking → інтеграція RevenueCat або нативних S2S notifications → побудова ETL pipeline → реалізація аналітичних запитів → розробка dashboard → налаштування dunning flow → A/B тестування ціноутворення на основі ARPU-даних.
Часові оцінки
RevenueCat інтеграція + базові метрики MRR/Churn/ARPU у dashboard — 1 тиждень. Повна система з cohort retention, декомпозицією MRR, dunning flow та прогнозуванням churn — 4–6 тижнів. Ціна розраховується індивідуально після аналізу вимог.
| Метрика | Формула | Частота перерахунку |
|---|---|---|
| MRR | Σ нормалізованого доходу активних підписок | Щодня |
| User Churn Rate | Скасування / Активні на початок періоду | Щомісячно |
| Revenue Churn Rate | Churned MRR / MRR на початок періоду | Щомісячно |
| ARPU | MRR / Активні підписники | Щодня |
| Trial Conversion | Конвертовані trial / Почали trial | За когортою після N днів |
| LTV | ARPU / Revenue Churn Rate | Щомісячно |







