Как считать аналитику Telegram-бота: метрики и инструменты
Практика3 минРедакция Innovialabs
Коротко
Записывайте каждое действие пользователя как событие на своем сервере, источник трафика передавайте через параметр start в ссылке на бота, а затем считайте старты, активацию, удержание, конверсию по шагам воронки и долю блокировок — в своей базе или в системе продуктовой аналитики.
Короткий ответ
У бота нет готовой подробной аналитики «из коробки», как у сайта со счетчиком. Ее собирают сами:
- Сервер бота записывает события: старт, нажатие кнопки, шаг сценария, заказ, оплата, блокировка.
- Источник трафика передается в ссылке на бота через параметр start.
- Из событий считаются метрики: старты, активация, удержание, воронка, блокировки.
- Данные смотрят в своей базе с дашбордом или в системе продуктовой аналитики.
Ключевые метрики
| Метрика | Что показывает | Как считать |
|---|---|---|
| Старты | Сколько новых людей пришло | Первые /start по уникальным пользователям за период |
| Активация | Дошел ли человек до первой ценности | Доля стартовавших, совершивших ключевое действие |
| Удержание | Возвращаются ли пользователи | Доля пользователей, активных через 1, 7, 30 дней после старта |
| Воронка | Где теряются люди | Конверсия между шагами сценария |
| Блокировки | Насколько бот раздражает | Доля пользователей, заблокировавших бота, особенно после рассылок |
| Источники | Какой канал приводит лучших | Старты, активация и покупки в разрезе параметра start |
Ключевое действие определите сами: для магазина — заказ, для записи — подтвержденный визит, для поддержки — решенный вопрос.
Воронка по шагам
Разбейте главный сценарий на шаги и логируйте каждый:
- старт → выбор категории → карточка товара → корзина → контакт → оплата;
- старт → выбор услуги → выбор времени → подтверждение записи.
Смотрите не только на итоговую конверсию, но и на самый большой провал между соседними шагами. Именно там обычно непонятная кнопка, лишний вопрос или неудобный ввод.
Как отследить блокировки
Когда пользователь блокирует бота, Telegram присылает обновление my_chat_member со статусом kicked. Если человек разблокирует бота, статус меняется обратно. Кроме того, попытка отправить сообщение заблокировавшему пользователю возвращает ошибку доступа.
Записывайте оба сигнала как события. Рост блокировок сразу после рассылки — явный знак, что сообщения слишком частые или нерелевантные.
Источники трафика через параметр start
Ссылка вида https://t.me/your_bot?start=ads_spring передает боту команду /start ads_spring. Параметр может содержать до 64 символов: латинские буквы, цифры, _ и -. Для Mini App есть аналогичный параметр startapp.
Так выглядит обработка на aiogram 3:
from aiogram import Router
from aiogram.filters import CommandStart, CommandObject
from aiogram.types import Message
router = Router()
@router.message(CommandStart())
async def on_start(message: Message, command: CommandObject):
source = command.args or "direct"
await track_event(message.from_user.id, "bot_start", source=source) # ваша функция записи события
await message.answer("Здравствуйте!")
Практические правила:
- Заведите схему имен:
канал_кампания_вариант, напримерtgads_spring_a,site_footer,qr_store1. - Сохраняйте первый источник пользователя отдельно, а повторные старты — как отдельные события.
- Не кладите в параметр персональные данные: он виден в ссылке.
Инструменты
- Своя база + дашборд. Таблица событий в PostgreSQL или аналитической СУБД и BI-инструмент для графиков. Полный контроль и никаких ограничений по данным.
- Системы продуктовой аналитики. Сервер отправляет события через их API или SDK, а воронки, когорты и удержание строятся готовыми отчетами.
- Веб-аналитика в Mini App. Mini App — это веб-страница, поэтому в нее можно встроить привычный счетчик посещений.
- Специализированные сервисы аналитики ботов — быстрый старт, но меньше гибкости.
Минимальный набор полей события: ID пользователя, название события, время, источник, параметры (сумма, товар, шаг). Отправляя данные во внешние сервисы, передавайте внутренний ID, а не телефон или имя.
Частые ошибки
- Считать «пользователями» всех, кто когда-либо нажал старт, не учитывая блокировки.
- Логировать только итоговые заказы без промежуточных шагов.
- Одна ссылка на бота для всех рекламных кампаний.
- Менять названия событий без документации — графики перестают сходиться.