Перейти к основному содержимому

Vitals — ключевые метрики

Страница Vitals собирает ключевые метрики роста и удержания одного бота: активных пользователей, новых пользователей, удержание и отток.

На дашборде временной диапазон выбираете вы. Vitals работает иначе: все метрики активности считаются за полные календарные периоды. Благодаря этому числа сопоставимы с отчётностью и не меняются в течение дня.


Кто считается активным пользователем

Активный пользователь — это человек, который сам что-то сделал: написал сообщение, нажал кнопку, проголосовал в опросе, поставил реакцию.

Что в счёт не входит:

  • Сообщения, отправленные самим ботом. Рассылка не делает получателя активным — иначе достаточно было бы разослать сообщение всей базе, чтобы «активных» стало столько же, сколько подписчиков. По той же причине рассылка не создаёт и новых пользователей.
  • Сам бот и технические записи без определимого автора.
  • Чат вместо человека. В группе считается каждый писавший участник, а не группа целиком.
Events считает иначе — и это намеренно

Метрика Events считает события, а исходящее сообщение бота — это тоже событие. Поэтому число событий может расти от рассылки, а число активных пользователей — нет. Если нужен охват рассылки, постройте виджет с фильтром по $tg.direction = outbound.


Полные календарные периоды

DAU, WAU и MAU считаются за последний завершённый календарный период, а не за последние 24 часа, 7 или 30 дней.

МетрикаПериодПример на 28 июля 2026
DAUпоследние полные сутки27 июля 2026 г.
WAUпоследняя полная неделя (пн – вс)20–26 июля 2026 г.
MAUпоследний полный календарный месяциюнь 2026 г.

Текущий, ещё не закрытый период в расчёт не входит.

Почему не «последние 30 дней»

Скользящее окно, которое заканчивается «сейчас», склеивает два неполных дня: хвост вчерашнего и начало сегодняшнего. Число настоящее, но это не число ни одного периода, который можно назвать, — его нельзя сверить ни с отчётом, ни со счётом, ни с чужой таблицей. Вдобавок оно меняется при каждом обновлении страницы.

У завершённого периода поведение другое: как только период закрылся, значение зафиксировано навсегда. Именно так считают MAU для тарификации (Auth0, Firebase, Segment) и так же публикуют MAU в финансовой отчётности.

Период указан на карточке

Подпись под каждым числом прямо называет период — например, июнь 2026 г. (UTC) · к предыдущему месяцу. Метрика, у которой период не назван, непроверяема.


Часовой пояс и начало недели

  • Границы всех периодов считаются в UTC.
  • Неделя начинается в понедельник (ISO 8601).

Это не произвольный выбор. Когорты виджета Retention группируются на сервере по UTC и по неделям с понедельника. Если бы Vitals считал периоды в местном часовом поясе, MAU и когорты удержания на одной странице расходились бы по построению.

Что это значит на практике

Если вы в UTC+3, «сутки» в DAU — это интервал с 03:00 до 03:00 по вашему времени, а не с 00:00 до 00:00. Настройка часового пояса проекта — планируемая возможность; пока единый UTC гарантирует, что метрики согласованы между собой.


Сравнение с предыдущим периодом

Бейджи на карточке показывают изменение к предыдущему такому же календарному периоду.

МетрикаСравнивается с
DAUсутками накануне
WAUпредыдущей неделей
MAUпредыдущим календарным месяцем

Периоды идут подряд — без разрывов и без наложений, поэтому ни один пользователь не попадает в оба сразу.

Месяцы разной длины

Февраль (28 дней) сравнивается с январём (31 день) — это сравнение календаря с календарём, а не сдвиг на фиксированные 30 дней. Часть изменения MAU между такими месяцами объясняется просто их длиной. Нормализации нет намеренно: «MAU за 30,4 дня» не сверить ни с чем.


Задержка данных

У завершённого периода есть неизбежная цена — задержка:

  • DAU отстаёт не более чем на сутки.
  • WAU — до 7 дней: в воскресенье вы ещё видите позапрошлую неделю.
  • MAU — до 31 дня: 31 июля MAU по-прежнему показывает июнь.

Это свойство метрики, а не ошибка. Если нужна активность за текущий, ещё не закрытый период, соберите на дашборде KPI-виджет с метрикой Users и нужным диапазоном — см. Метрики.


Новые пользователи

Карточки Новые пользователи · день / неделя / месяц считают уникальных пользователей, у которых первое в истории действие попало в соответствующий завершённый период.

Раньше здесь было написано «отправивших /start» — это описывало более раннюю реализацию и было неточно: пользователь считался новым заново при каждом повторном /start, а тот, кто никогда его не отправлял, не попадал в счёт вовсе. Сейчас метрика смотрит на первое действие любого вида.

Периоды намеренно совпадают с DAU, WAU и MAU: две карточки рядом с одинаковой подписью периода должны означать одно и то же.


Retention и Churn

Retention 7D — доля пользователей, вернувшихся хотя бы раз в течение 7 дней после появления. Не «ровно на 7-й день»: пользователь, вернувшийся на 3-й день и больше не заходивший, в эту долю попадает. Так же считаются 1D и 30D.

Churn 30D = 1 − Retention 30D: оценочная доля тех, кто не вернулся ни разу в течение 30 дней.

Обе метрики усредняются по когортам за скользящее окно 90 дней, взвешенно по размеру когорты. Это окно наблюдения за когортами, а не отчётный период, поэтому оно не привязано к календарю.

Незрелые когорты исключаются

Когорта, появившаяся вчера, не может иметь 30-дневного показателя — 30 дней ещё не прошло. Такие когорты в среднее не входят: их ноль означает «измерение не закончено», а не «никто не вернулся». Если ни одна когорта ещё не набрала нужный срок, карточка показывает n/a, а не заниженное число.

Отличие от таблицы Retention

В виджете Retention каждый столбец — один период: Day 7 значит «вернулся на 7-й день». На Vitals показатели накопительные — «вернулся в течение N дней». Поэтому Retention 7D на Vitals всегда не меньше, чем ячейка Day 7 в таблице, и это не расхождение данных.


Что дальше?