Как отслеживать источники пользователей в Telegram-ботах и Mini App.
Самая полная статья про UTM метки в телеграм ботах и Mini App. Я описал как отслеживать источники трафика, переносить метки в бот про модели атрибуции, трекинг запуска App и т.д. Полезные лайфхаки и сопутствующие вещи.
Привет! Меня зовут Дима, я сделал graspil.com – сервис аналитики для Telegram-ботов и Mini App. Уже давно я объясняю людям, зачем нужны UTM-метки в ботах и почему они важны (нужно же мне как-то продавать свой сервис 🤷♂ )
В этой статье я постарался ответить на все вопросы о UTM метках в ботах и кажется описал все что знаю про них. С какими проблемами вы столкнётесь и как их решить.
Кратенько, что такое UTM-метки
UTM-метки – это такие параметры в ссылках, которые помогают понять, откуда пришел пользователь. Их используют в вебе везде, где надо трекать трафик.
Пример ссылки с метками:
Эта ссылка подскажет, что пользователь пришёл из VC, со статьи про UTM, в рамках кампании “utm для чайников”.
Зачем всё это? Чтобы потом не сидеть и не гадать, в какую именно дыру слили бюджет на рекламу.
Например, я потратил несколько часов на написание этой статьи (или допустим 10к руб), по меткам я смогу понять сколько из вас перешло по ссылкам, зарегистрировалось, оплатило сервис. Это даст мне понимание окупились ли мои труды или нет 🤔.
Тут я не буду вдаваться в подробности, как работают UTM-метки – гугл вам в помощь или добро пожаловать в комменты.
Давайте к ботам.
Зачем UTM-метки в Telegram-боте?
Очевидно что затем же самым. Боты не продвигают сами себя, а значит, 100% вы будете их рекламировать. Без меток это делать, мягко скажем странно.
ЗакУпите трафика, вам нальют ботов и вы будете радоваться что теперь у вас 100500 пользователей, только вот почему-то дальше команды /start они ничего не делают 🤷
Или закупили вы посевы, как будете считать конверсию с этих посевов без меток?
Как передать метки в Telegram-бот?
Единственный способ передать данные в бот - это параметр start (https://t.me/bot?start=данные).
Но тут Telegram говорит: “Подожди-ка, дружочек, у тебя всего 64 символа”
В целом, 64 символа чаcто достаточно. Но start все еще один. Если вы еще не поняли почему это проблема, то я объясню. UTM-меткИ, не меткА… их много. В вебе используют до 5 меток одновременно. Это прям проблема…
Из-за этих ограничений приходится выдумывать разные велосипеды. У нас их целый велопарк 🚴♀
Если вы привысите лимит в 64 символа, то бот просто не запустится по такой ссылке.
---
Что делать и кто виноват?
Сейчас будет чуть сложно понять, но я в вас верю. Чтобы подружить несколько utm параметров и start нужен альтернативный подход 😏
Давайте посмотрим на обычную ссылку с utm метками в вебе:
Параметры делит & амперсанд, а название параметра от его значения делит символ = равно
Стандартизированно, удобно, легко запомнить. Но телеграм решил, что это не путь джедаев… Амперсанд и равно нельзя использовать в параметре start, поэтому придумаем что-то другое.
Вместо символов равно и амперсанда мы будем использовать какие-то другие символы. Graspil по умолчанию предлагает использовать символы:
- вместо =
_ вместо &
Вообще, в graspil можно задавать свои, любые символы. Можно какие-то параметры исключать или учитывать только определенные. И еще есть упрощенный режим, если вам ничего не нужно разделять
---
А давайте на примере
Допустим мы хотим передать 3 метки: utmSource, utmMedium, utmTerm (названия могут быть любыми). И еще какой-то свой параметр param
У нас получается вот такая строка:
Когда пользователь перейдет по этой ссылке и запустит бот эти данные можно будет получить и обработать.
Как получить значение параметра start в коде бота?
---
Результат
Теперь можно присвоить эти метки пользователю и построить вот такой utm отчет:
Вы только посмотрите на этот отчет, тут вам и поведенческие параметры, кол-во запусков/перезапусков/уходов отдельно по боту и mini App, конверсии, вложенные метки и все это работает со скоростью света… ляпота :)
А еще мы начали работать над определением спам аккаунтов, и уже тоже добавили этот параметр в отчет
❗Кстати, очень рекомендую продумать схему ваших меток еще на этапе создания бота, чтобы потом меньше страдать от их разной структуры.
Как публиковать такие длинные и страшные ссылки в ТГ?
Уверен, что когда вы видите ту ссылку с метками, ничего кроме отвращения вы не чувствуете. Она длинная, не понятная и пугающая. Публиковать такую ссылку где-то в посте паблика - не дело…
К счастью есть выход, вы можете как обычно в посте написать название бота @graspil_bot, так никаких меток конечно не появиться. Но, если выделить текст @graspil_bot, кликнуть правой кнопкой мыши и сделать обычный линк с той самой ссылкой, то все будет работать как вы привыкли только с метками.
Если интересно, можно посмотреть как это выглядит прямо в телеграм
Посадочные страницы или как передавать UTM-метки с сайта в бот?
У вас может возникнуть ситуация, когда вы ведете пользователей на какую-то посадочную страницу, на который есть ссылка на бот, вы хотите сквозную аналитику и вам нужно передать ваши метки дальше в бот.
Такое есть у нас. Мы сделали простой js скрипт который вы можете добавить на вашу страницу и метки магическим образом будут передаваться прямо в graspil. И попутно он еще и определит геолокацию этих пользователей. Подробней можно почитать в этой статье
Что если нужны большие и толстые параметры? 😏
Как я уже писал, для start есть ограничение в 64 символа. Тут не разгуляешься, вы легко можете перевалить за это ограничение. Что делать если у вас много параметров с длинными значениями?
У граспил есть специально обученные ссылки, которые перенесут все параметры в бот.
Работает оч. просто.
Берем вот такую ссылку https://tlin.cc/graspil_bot Добавляем к ней сколько угодно параметров:
При переходе по такой ссылке graspil:
- Сохраняет все параметры и передает их в граспил (UTM-отчет)
- Определяет геолокацию пользователя
- Переадресовывает пользователя в бота
Перенос utm-меток из канала в бот
У большинства ботов есть свой телеграм канал. Куда лучше лить трафик? Сразу в бот или в канал? У меня нет ответа на этот вопрос, думаю, что зависит от конкретного кейса. (будет интересно узнать ваше мнение в комментах).
Если вы ведете пользователей в канал, то вы можете отследить с какого канала, сколько пришло человек. Но, сколько из них перешло в бот и совершило “покупку”?
Окей, мы можем ко всем ссылкам в канале добавить utm-метки, тогда мы поймем сколько человек перешло из канала, но откуда они попали в канал?
Подключив graspil к боту и каналу, настроив метки у вас получится это посчитать. А бонусом вы еще получите дополнительную статистику по источникам вашего канала.
Мы можем связать метки канала с метками бота и посчитать конверсии уже по источникам канала. Настоящая сквозная аналитика 👉👈
Сейчас эта фича в стадии тестирования, если хотите получить такую сквозную аналитику, подключайте граспил и пишите в поддержку, поможем все настроить 😉
Модели атрибуции
Если нужно считать конверсии, то без моделей атрибуции никак. Представим ситуацию, один и тот же пользователь запускает ваш бот по двум разным utm ссылкам. Например, он запускает бот с вашего сайта, а спустя какое-то время видит рекламу в TG ADS запускает бот повторно и совершает покупку.
Какому каналу нужно присвоить эту продажу? Сайту, так как пользователь впервые запустил бот из этого источника или TG ADS, так как именно после него он соверши продажу?
Мы сделали три модели атрибуции:
- Первый запуск - если пользователь запустил бот впервые
- Последний запуск - даже если это повторный запуск, он попадет в эту категорию
- Последний значимый запуск - сюда попадут первый запуск и возврат пользователя (если заблокировал, но запустил бот повторно)
Graspil может считать конверсию в рамках этих трех правил. В зависимости от того какой вариант лучше подходит вам. Если ничего не понятно, то вот тут подробней :)
Что по Mini Apps?
С Mini Apps всё аналогично, только параметр называется startapp, а не start.
Мы сделали единую систему для ботов и mini App. А еще мы добавили одну очень простую, но кайфовую вещь:
Определение кнопки запуска Mini App
Вы задавались вопросом, с какой кнопки запускают App? С кнопки меню в боте, или со стартового сообщения, или с кнопки в профиле бота? А после рассылки пользователям сколько раз запустили App по кнопке в этой рассылке? (кстати рассылки у нас тоже есть)
Для этого мы сделали одну простую вещь. Добавьте один параметр в ссылку, которая ведет на ваш App, и трекайте эти данные. У нас это реализовано на сессиях, по умолчанию они показывают запускался ваш App из бота или из каналов/чатов. Но, если вы добавите параметр gs_source, то будете видеть данные по этому параметру.
В отчете видно данные по кнопкам gs_source=bot-button, gs_source=main, gs_source=menu_button а так же прочие запуски из канала и бота.
Это не то же самое что UTM метки. Подробней у нас это расписано в документации.
С какими ботами это все работает?
Все что описано в статье можно реализовать для любого телеграм бота. Если говорить о конструкторах ботов, то нужно смотреть как это реализовано в вашем конструкторе. Если бот самописный, то тут как душа программиста пожелала.
Если говорить про graspil, то наша система работает со всеми самописными ботами и с многими конструкторами. А если ваш конструктор не поддерживается, то напишите им об этом в поддержку, подключение элементарное.
Когда я создавал граспил, моя основная цель была сделать систему на подключение которой уходило бы минимум времени. Так и получилось, даже школьники подключают своих ботов за несколько минут. Реально, есть такой отзыв от школы 😅
Подключайте graspil.com, уверен у программистов хватает работы и без этих меток 😉
Вывода нет
После такой гениальной и подробной статьи врядли у вас остались вопросы, но если вдруг есть, то я постараюсь на них ответить в комментариях, а в graspil самая дружелюбная поддержка в мире (если на нас не матерится).