Приветствую хабравчане. Хочу рассказать о том, как мы прикручивали Google Analytics к телеграмм-боту, с какими столкнулись проблемами, и что в итоге пока не получилось настроить.
По старинке Google Analytics устанавливается на сайт с доменом или в приложение с SDK. Погуглив тему, стало понятно, что примеров нет, поэтому решили сделать сами. В нашем случае не было сайта или мобильного приложения, но было желание отслеживать события в Телеграм боте. И частично это получилось сделать.
Боты физически находятся по адресу t.me/benice_tools_bot. Это похоже на обычный сайт, но без прямого доступа к корневым файлам, для установки кода счетчика, и настройки событий.
Фронтенд в этом случает является сам Телеграм, к которому у нас нет доступа.
Наш бот работает с API Binance и API Телеграма, и соответственно есть бекэнд, через который стало возможно маневрировать c настройками аналитики.
В Google Analytics создали счетчик «для сайта», и прописали события с параметрами “Action, Label, Category”. Подробные настройки описываются на десятках сайтов. И после этого появилась первая проблема.
Стандартными гугловскими методами не получалось разместить цели в боте, не было доступа к фронту.
На помощь пришла библиотека, которая позволила передавать и обрабатывать с бекэнда параметры событий.
После настройки, начали тестировать работоспособность метода, и получили первый успех. Выполненные события стали отображаться в Google Analytics, в режиме “реального времени” было видно, сколько людей онлайн в боте, и остальные данные.
После самостоятельных тестов, и юзеров с рекламного трафика, стало понятно, что нужная нам информация достоверна на 100%. Стало видно сколько людей онлайн, и какие конкретно события выполняются.
Но некоторые ошибки все равно были. Например не правильно определялся тип устройства, отображался “Настольный компьютер”, даже если использовать Телеграм с мобильного устройства. Геоположение указывало только на Грецию, потому что сервер с ботом находился в этой стране. Демография, интересы, браузеры и ОС, отображались как "(not set)".
Мы создавали промо-ссылки, которые при активации давали доступ к платным функциям на 7 дней. И переходы по этим ссылкам нужно было связать с Google Analytics, что бы анализировать рекламные кампании.
По умолчанию Google Analytics сам генерирует id пользователя или оставляет без этого параметра. Однако, можно самостоятельно создавать custom id, и отправлять это в Гугл.
Этим методом мы и воспользовались. Создали учет пользователей через зашифрованный userId нашей системы.
Телеграм передаёт мета-данные при старте бота. Это работает также, как и привычные utm метки.
В ссылку, для рекламной кампании, вставляется метка после start.
Например:
При старте бота мы парсим параметры для старта, и принимаем их за конкретную кампанию.
На бэкенде, в профиле пользователя, будет информация о том, что он пришёл по конкретной кампании campaign_habrahabr.
Оставалось конктретизировать нашего посетителя(visitor) в коде:
Если пользователь пришёл сам, без рекламной кампании, то этот источник распознается как «organic».
Таким образом, получилось анализировать срабатывание целей от конкретного пользователя, пришедшего с рекламной кампании.
Все звонки в Google Analytics заканчивались недоумением со стороны поддержки. При первых звонках, когда ещё ничего не работало, никаких подсказок не удавалось получить. А когда события уже передавались в аналитикс, то поддержка брала 15 минутный перерыв “уточнить детали” вопроса, и возвратившись, сами начинали задавать вопросы: “Как вы это сделали?”.
По старинке Google Analytics устанавливается на сайт с доменом или в приложение с SDK. Погуглив тему, стало понятно, что примеров нет, поэтому решили сделать сами. В нашем случае не было сайта или мобильного приложения, но было желание отслеживать события в Телеграм боте. И частично это получилось сделать.
Проблема №1
Боты физически находятся по адресу t.me/benice_tools_bot. Это похоже на обычный сайт, но без прямого доступа к корневым файлам, для установки кода счетчика, и настройки событий.
Фронтенд в этом случает является сам Телеграм, к которому у нас нет доступа.
Наш бот работает с API Binance и API Телеграма, и соответственно есть бекэнд, через который стало возможно маневрировать c настройками аналитики.
В Google Analytics создали счетчик «для сайта», и прописали события с параметрами “Action, Label, Category”. Подробные настройки описываются на десятках сайтов. И после этого появилась первая проблема.
Стандартными гугловскими методами не получалось разместить цели в боте, не было доступа к фронту.
На помощь пришла библиотека, которая позволила передавать и обрабатывать с бекэнда параметры событий.
После настройки, начали тестировать работоспособность метода, и получили первый успех. Выполненные события стали отображаться в Google Analytics, в режиме “реального времени” было видно, сколько людей онлайн в боте, и остальные данные.
После самостоятельных тестов, и юзеров с рекламного трафика, стало понятно, что нужная нам информация достоверна на 100%. Стало видно сколько людей онлайн, и какие конкретно события выполняются.
Но некоторые ошибки все равно были. Например не правильно определялся тип устройства, отображался “Настольный компьютер”, даже если использовать Телеграм с мобильного устройства. Геоположение указывало только на Грецию, потому что сервер с ботом находился в этой стране. Демография, интересы, браузеры и ОС, отображались как "(not set)".
Проблема №2
Мы создавали промо-ссылки, которые при активации давали доступ к платным функциям на 7 дней. И переходы по этим ссылкам нужно было связать с Google Analytics, что бы анализировать рекламные кампании.
По умолчанию Google Analytics сам генерирует id пользователя или оставляет без этого параметра. Однако, можно самостоятельно создавать custom id, и отправлять это в Гугл.
Этим методом мы и воспользовались. Создали учет пользователей через зашифрованный userId нашей системы.
Телеграм передаёт мета-данные при старте бота. Это работает также, как и привычные utm метки.
В ссылку, для рекламной кампании, вставляется метка после start.
Например:
http://t.me/benice_tools_bot?start=habrahabr
При старте бота мы парсим параметры для старта, и принимаем их за конкретную кампанию.
На бэкенде, в профиле пользователя, будет информация о том, что он пришёл по конкретной кампании campaign_habrahabr.
Оставалось конктретизировать нашего посетителя(visitor) в коде:
if (!code) code = "organic";
const visitor = ua(googleAnalyticsProjectId, `token:${code};CLIENTID:${saltUserId}`, { strictCidFormat: false });
visitor.event(category, action, label).send();
Если пользователь пришёл сам, без рекламной кампании, то этот источник распознается как «organic».
Таким образом, получилось анализировать срабатывание целей от конкретного пользователя, пришедшего с рекламной кампании.
P.S.
Все звонки в Google Analytics заканчивались недоумением со стороны поддержки. При первых звонках, когда ещё ничего не работало, никаких подсказок не удавалось получить. А когда события уже передавались в аналитикс, то поддержка брала 15 минутный перерыв “уточнить детали” вопроса, и возвратившись, сами начинали задавать вопросы: “Как вы это сделали?”.
Graf54r
Круто!
Онлайн — это активность в данный момент(+-time)?
sergy_ay Автор
Благодарю за отзыв.
Да, это активность в данный момент.
Задержка где-то 5-10 секунд. т.е когда зашел в бота или выполнил событие, то в аналитикс отобразится через такое количество секунд.