SaaS-сервис
Полное руководство по аналитике для подписочных сервисов: отслеживание подписок, MRR, churn rate, LTV и воронка активации
🎯 Что вы получите
- Полную картину воронки от регистрации до платящего клиента
- Расчет MRR (Monthly Recurring Revenue) и его динамику
- Анализ оттока (churn rate) и удержания клиентов
- Прогнозирование LTV (Lifetime Value)
- Сегментацию клиентов по тарифам и поведению
Ключевые метрики SaaS
MRR
₽ 156 000
Ежемесячный повторяющийся доход. Вырос на 12% за месяц
Churn Rate
2.4%
Ежемесячный отток клиентов. Целевой уровень < 3%
LTV
₽ 45 000
Пожизненная ценность клиента. Окупаемость CAC 8 месяцев
Активация
67%
Процент новых клиентов, достигших ключевого действия
Типовая воронка SaaS
📝
Регистрация
signup
→
📧
Активация
activation
→
💳
Триал
trial_start
→
💰
Платёж
subscription_payment
Какие события отправлять
| Событие | Описание | Обязательность | Ключевые свойства |
|---|---|---|---|
signup |
Регистрация нового пользователя | Обязательно | method, source |
email_confirmed |
Подтверждение email | Рекомендуется | — |
activation |
Ключевое действие (создан проект, загружены данные) | Обязательно для воронки | feature, value |
trial_start |
Начало триального периода | Обязательно | plan, trial_days |
subscription_created |
Создание подписки (переход на платный тариф) | Обязательно | plan, amount, billing_period |
subscription_payment |
Успешный ежемесячный платеж | Обязательно | amount, plan |
subscription_cancelled |
Отмена подписки | Обязательно | reason, plan |
subscription_upgraded |
Апгрейд тарифа | Опционально | old_plan, new_plan |
Метаданные для SaaS
// Регистрация (активация)
{
"event": "signup",
"user_id": "user_123",
"properties": {
"method": "email",
"source": "google_ads"
},
"attributes": {
"email": "user@example.com",
"name": "Иван Петров",
"company": "ООО Ромашка"
},
"_metadata": {
"is_activation": true,
"event_display_name": "Регистрация",
"event_color": "#28a745"
}
}
// Начало триала
{
"event": "trial_start",
"user_id": "user_123",
"properties": {
"plan": "pro",
"trial_days": 14,
"trial_ends_at": "2026-04-02"
},
"_metadata": {
"funnel_sales_step": 2,
"funnel_sales_name": "Начало триала",
"event_display_name": "Начало триала"
}
}
// Создание подписки (первый платёж)
{
"event": "subscription_created",
"user_id": "user_123",
"properties": {
"plan": "pro",
"amount": 9900,
"billing_period": "month",
"interval": 1
},
"_metadata": {
"funnel_sales_step": 3,
"funnel_sales_name": "Платная подписка",
"is_order": true,
"order_revenue_field": "amount",
"event_display_name": "Покупка подписки",
"event_color": "#2A6DF4"
}
}
// Ежемесячный платёж
{
"event": "subscription_payment",
"user_id": "user_123",
"properties": {
"plan": "pro",
"amount": 9900,
"payment_date": "2026-04-01",
"invoice_id": "INV-001"
},
"_metadata": {
"is_order": true,
"order_revenue_field": "amount",
"event_display_name": "Ежемесячный платёж"
}
}
// Отмена подписки
{
"event": "subscription_cancelled",
"user_id": "user_123",
"properties": {
"plan": "pro",
"reason": "too_expensive",
"cancelled_at": "2026-05-01",
"effective_date": "2026-06-01"
},
"_metadata": {
"event_display_name": "Отмена подписки",
"event_color": "#dc3545"
}
}
Атрибуты клиентов для SaaS
json
{
"event": "company_data",
"user_id": "user_123",
"attributes": {
"email": "user@example.com",
"company_name": "ООО Ромашка",
"company_size": 45,
"industry": "retail",
"plan": "enterprise",
"plan_started_at": "2026-01-15",
"trial_ends_at": "2026-01-29",
"subscription_status": "active",
"mrr": 45000,
"ltv": 450000,
"total_paid": 135000,
"payment_method": "invoice",
"account_manager": "Иван Петров",
"churn_risk": "low",
"_metadata": {
"company_name": {
"attribute_display_name": "Компания",
"attribute_category": "Основное"
},
"plan": {
"attribute_display_name": "Тариф",
"attribute_category": "Подписка",
"attribute_format": "string",
"attribute_color": "#2A6DF4"
},
"mrr": {
"attribute_display_name": "MRR",
"attribute_category": "Финансы",
"attribute_format": "currency"
},
"ltv": {
"attribute_display_name": "LTV",
"attribute_category": "Финансы",
"attribute_format": "currency"
},
"churn_risk": {
"attribute_display_name": "Риск оттока",
"attribute_category": "Аналитика",
"attribute_format": "string",
"attribute_color": "#fd7e14"
}
}
}
}
Расчет MRR (Monthly Recurring Revenue)
MRR рассчитывается автоматически на основе событий с метаданными is_order. Для корректного расчета:
- Для новых подписок отправляйте событие
subscription_createdс суммой - Для ежемесячных платежей отправляйте
subscription_paymentс той же суммой - Для апгрейдов отправляйте событие с новой суммой
- Для отмен подписка перестает учитываться в MRR
Пример расчета MRR
| Клиент | Тариф | Сумма | Статус |
|---|---|---|---|
| Клиент 1 | Pro | 9 900 ₽ | Активен |
| Клиент 2 | Enterprise | 45 000 ₽ | Активен |
| Клиент 3 | Basic | 3 490 ₽ | Отменен (не учитывается) |
| Итого MRR | 54 900 ₽ |
Анализ оттока (Churn Rate)
Churn rate рассчитывается как отношение отменивших подписку клиентов к общему числу активных:
Churn Rate = (Клиенты, отменившие подписку за месяц) / (Всего активных клиентов) × 100%
Пример расчета churn
| Период | Активных на начало | Новых | Отменило | Активных на конец | Churn Rate |
|---|---|---|---|---|---|
| Январь | 1000 | 150 | 20 | 1130 | 2.0% |
| Февраль | 1130 | 120 | 28 | 1222 | 2.5% |
| Март | 1222 | 180 | 42 | 1360 | 3.4% |
Когортный анализ для SaaS
Когортный анализ показывает, как меняется удержание клиентов в зависимости от времени их регистрации:
Когорта
Month 1
Month 2
Month 3
Month 4
Month 5
Month 6
Январь 2026
100%
85%
78%
72%
68%
65%
Февраль 2026
100%
87%
80%
75%
71%
—
Март 2026
100%
89%
83%
—
—
—
Расчет LTV (Lifetime Value)
LTV рассчитывается по формуле:
LTV = (Средний чек × Частота покупок) / Churn Rate
Или на основе когорт:
LTV = Сумма выручки от когорты / Размер когорты
Пример расчета LTV
| Параметр | Значение |
|---|---|
| Средний чек (ARPU) | 5 500 ₽ |
| Churn Rate | 2.5% в месяц |
| Средняя продолжительность жизни | 40 месяцев |
| LTV | 220 000 ₽ |
Интеграция с платежными системами
Stripe (вебхуки)
javascript
app.post('/webhooks/stripe', async (req, res) => {
const event = req.body;
const tracker = new SaaSSubscriptionTracker(process.env.INSTANTBASE_API_KEY);
switch (event.type) {
case 'customer.subscription.created':
await tracker.trackSubscriptionCreated(
event.data.object.customer,
event.data.object.items.data[0].price.nickname,
event.data.object.items.data[0].price.unit_amount / 100
);
break;
case 'invoice.payment_succeeded':
await tracker.trackSubscriptionPayment(
event.data.object.customer,
event.data.object.lines.data[0].price?.nickname || 'unknown',
event.data.object.amount_paid / 100,
event.data.object.id
);
break;
case 'customer.subscription.deleted':
await tracker.trackSubscriptionCancelled(
event.data.object.customer,
event.data.object.items.data[0].price.nickname,
'cancelled'
);
break;
}
res.status(200).send('OK');
});
YooKassa
javascript
app.post('/webhooks/yookassa', async (req, res) => {
const event = req.body;
const tracker = new SaaSSubscriptionTracker(process.env.INSTANTBASE_API_KEY);
if (event.event === 'payment.succeeded') {
await tracker.trackSubscriptionPayment(
event.object.metadata.user_id,
event.object.metadata.plan || 'unknown',
event.object.amount.value,
event.object.id
);
}
res.status(200).send('OK');
});
Рекомендации
- Всегда передавайте план клиента — это позволит сегментировать аналитику
- Отслеживайте ключевые действия — найдите "момент активации" для вашего продукта
- Анализируйте отток — собирайте причины отмены через properties
- Считайте LTV по когортам — это точнее, чем среднее по больнице
- Мониторьте использование функций — это ранний индикатор оттока
- Настраивайте вебхуки для платежей — для автоматического учета MRR
Нужна помощь с настройкой SaaS-аналитики?
Напишите нам, и мы поможем настроить интеграцию под ваш сервис