← Все статьи

UTM-метки в Telegram-боте: считаем источники через /start

«С какой рекламы пришёл этот человек?» — вопрос, на который Telegram сам не отвечает. Но есть приём: зашить метку в ссылку на бота и прочитать её в первом /start. Дальше — дело техники. Покажу формат, ограничения и как не запутаться в десятке кампаний.

Фокус простой. Обычная ссылка на бота — https://t.me/your_bot. Добавляем параметр start:

https://t.me/your_bot?start=vk_jan_promo

Когда человек переходит и нажимает «Начать», Telegram отправляет боту не просто /start, а /start vk_jan_promo. Эту нагрузку (payload) бот читает в первом же сообщении — и знает, откуда пришёл пользователь. Никакой магии, обычная фича Bot API.

Ограничения, о которые все спотыкаются

То есть полноценную UTM-строку utm_source=vk&utm_campaign=Январь впихнуть не выйдет. Два рабочих подхода: либо короткие коды-ярлыки (vk_jan, ig_bio), которые вы сами расшифровываете, либо base64url от компактной строки. Чаще достаточно первого — читается глазами и не упирается в лимит.

Как прочитать в коде

async def start(message):
    text = message.text or ""
    payload = text.partition(" ")[2].strip()   # всё после "/start "
    source = payload or "direct"               # пусто = прямой заход
    save_source(message.from_user.id, source)

Пустой payload — человек открыл бота напрямую, без вашей метки. Это тоже полезная категория: «прямые заходы».

Генерируем ссылки под кампании

Заведите таблицу соответствий заранее, иначе через месяц забудете, что значит x7. Пример осмысленной схемы:

СсылкаКанал
?start=vk_post_janпост ВК, январская акция
?start=ig_bioссылка в шапке профиля
?start=ya_searchконтекст в Яндексе
?start=qr_flyerQR с офлайн-листовки

Как это считает MaxBotStat

Если бот ходит через наш прокси, payload из /start разбирается автоматически — отдельный код писать не нужно. В кабинете появляется разрез «Источники»: сколько контактов привёл каждый ярлык, кто из них остался активным, какие источники докручивают до цели. Дальше по источнику можно собрать сегмент и отправить ему рассылку. Подробнее — в разделе про источники.

Считайте не клики, а удержание. Источник, который привёл 1000 человек, из которых назавтра вернулись трое, — хуже источника на 100 человек с половиной активных. Почему так — разбираем в статье про метрики бота.

Используете deep-ссылки? MaxBotStat разложит источники сам. Подключите бота бесплатно.

Открыть кабинет →