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. Для корректного расчета:

Пример расчета 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-аналитики?

Напишите нам, и мы поможем настроить интеграцию под ваш сервис

support@instantbase.online Telegram