Перейти к содержанию
Innovialabs

Как считать аналитику Telegram-бота: метрики и инструменты

Практика3 мин

Коротко

Записывайте каждое действие пользователя как событие на своем сервере, источник трафика передавайте через параметр start в ссылке на бота, а затем считайте старты, активацию, удержание, конверсию по шагам воронки и долю блокировок — в своей базе или в системе продуктовой аналитики.

Короткий ответ

У бота нет готовой подробной аналитики «из коробки», как у сайта со счетчиком. Ее собирают сами:

  1. Сервер бота записывает события: старт, нажатие кнопки, шаг сценария, заказ, оплата, блокировка.
  2. Источник трафика передается в ссылке на бота через параметр start.
  3. Из событий считаются метрики: старты, активация, удержание, воронка, блокировки.
  4. Данные смотрят в своей базе с дашбордом или в системе продуктовой аналитики.

Ключевые метрики

МетрикаЧто показываетКак считать
СтартыСколько новых людей пришлоПервые /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, а не телефон или имя.

Частые ошибки

  • Считать «пользователями» всех, кто когда-либо нажал старт, не учитывая блокировки.
  • Логировать только итоговые заказы без промежуточных шагов.
  • Одна ссылка на бота для всех рекламных кампаний.
  • Менять названия событий без документации — графики перестают сходиться.

Частые вопросы

Надежно — нет. Без параметра бот видит только сам факт старта. Поэтому каждому источнику нужна своя ссылка.

Поможем с этим

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

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.