Главная
Блог
Интеграция Яндекс Метрики с чат-ботами (Telegram и ВКонтакте) через Senler: как настроить отслеживание конверсий и аналитику

Интеграция Яндекс Метрики с чат-ботами (Telegram и ВКонтакте) через Senler: как настроить отслеживание конверсий и аналитику

Дата публикации:

Чат-боты давно перестали быть просто инструментом общения. Сегодня это полноценный канал продаж, который может приводить заявки, квалифицировать лидов и даже закрывать сделки. Но есть одна проблема: без аналитики этот канал остается “черным ящиком”.
Вы можете запускать рекламу, получать подписчиков в бота, видеть заявки, но при этом не понимать, откуда пришел пользователь, как он себя вел и что именно привело его к конверсии.
Именно поэтому интеграция Яндекс Метрики с чат-ботом – это не дополнительная настройка, а базовая необходимость, если вы хотите управлять маркетингом на основе данных, а не догадок. В этом материале разберем, как подключить Яндекс Метрику к чат-боту через Senler, сохранив корректную логику данных и не усложняя процесс разработкой.

Когда пользователь взаимодействует с сайтом, вы видите практически все: откуда он пришел, какие страницы посмотрел, где ушел и совершил ли целевое действие.
Но как только он переходит в чат-бот, эта прозрачность исчезает. С точки зрения аналитики пользователь как будто “пропадает”.
На практике это приводит к тому, что:
  • становится сложно оценить эффективность рекламы
  • невозможно точно определить источник заявок
  • искажается реальная конверсия
  • сложно понять, где именно воронка дает сбой
Интеграция Яндекс Метрики позволяет восстановить эту цепочку и “продолжить” путь пользователя уже внутри чат-бота. В результате вы получаете целостную картину – от первого клика до финального действия.

Чтобы понять, как все это работает, важно разобраться в базовом принципе. В отличие от сайта, где данные собираются через браузер, чат-бот не может напрямую использовать стандартный код Метрики.
Здесь на помощь приходит Measurement Protocol – механизм, который позволяет отправлять данные напрямую в Яндекс Метрику. Ранее мы уже разбирали работу Measurement Protocol и показывали, как интегрировать Яндекс Метрику в чат-бот при кастомной разработке (например, на Python). В этой статье пойдем дальше и рассмотрим более практичный сценарий — как реализовать ту же логику через конструктор Senler без написания кода.
По сути, вы сами “сообщаете” системе аналитики, что сделал пользователь. Например:
  • открыл чат-бот
  • перешел к следующему шагу
  • оставил заявку
Эти действия передаются как просмотры виртуальных страниц. И хотя пользователь физически не находится на сайте, Метрика воспринимает это как обычные визиты. За счет этого вы можете анализировать чат-бот так же, как и сайт – строить воронки, отслеживать шаги и оценивать конверсии.
Технически это выглядит как отправка виртуальных просмотров страниц. Вы сами задаете URL (например, /bot/start или /bot/lead), и Метрика воспринимает их как обычные визиты.

Если упростить всю интеграцию до одной мысли – она про правильную передачу ClientID. ClientID – это уникальный идентификатор пользователя в Яндекс Метрике. Именно он позволяет связать:
  • переход с рекламы
  • поведение на сайте
  • действия в чат-боте
Если этот идентификатор не передать в чат-бот, система не сможет “узнать” пользователя. В итоге данные не склеиваются, а аналитика становится фрагментированной. Именно поэтому передача ClientID – это основа всей интеграции.

Если у вас есть сайт, задача решается достаточно просто. ClientID уже хранится в cookie _ym_uid, и его нужно передать в ссылке, по которой пользователь переходит в чат-бот.
Для Telegram используется формат: https://t.me/ВАШ_БОТ?start=s=ID_ГРУППЫ-utm_term=CLIENT_ID
“ID_группы_подписчиков” – берется из интерфейса Senler 
На практике вручную это почти не делают. Обычно на сайт добавляют небольшой JavaScript, который автоматически подставляет значение ClientID во все ссылки на чат-бот. Это позволяет избежать ошибок и гарантирует, что данные передаются корректно, независимо от количества страниц и источников трафика.Чтобы добавить необходимые параметры в ссылки, ведущие на чат-бот, можно использовать следующие скрипты на сайте. Только обязательно после настройки проверьте, что параметр при переходе по ссылке не теряется.


(function() {
    function getCookie(name) {
        const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));
        return match ? decodeURIComponent(match[1]) : null;
    }
    function updateLinks() {
        const ymUid = getCookie('_ym_uid');
        if (!ymUid) return;
        const CONST_PART = 's=ID_ГРУППЫ-utm_term=';
        // выбираем все ссылки, ведущие на Telegram
        const links = document.querySelectorAll('a[href*="t.me"]');
        links.forEach(link => {
            // Берем ссылку без параметров
            const base = link.href.split('?')[0];
            // Собираем новую ссылку вручную, без URLSearchParams,
            // чтобы не было никакого авто-кодирования "="
            link.href = base + '?start=' + CONST_PART + ymUid;
        });
    }
    // запуск при готовом DOM
    document.addEventListener("DOMContentLoaded", updateLinks);
    // перезапуск каждые 500ms на случай появления динамических блоков
    setInterval(updateLinks, 500);
})();


(function() {
    function getCookie(name) {
        const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));
        return match ? decodeURIComponent(match[1]) : null;
    }
    function updateLinks() {
        const ymUid = getCookie('_ym_uid');
        if (!ymUid) return;
        const CONST_PART = 'ref_source=';
        // выбираем все ссылки, ведущие на VK
        const links = document.querySelectorAll('a[href*="vk.me"]');
        links.forEach(link => {
            // Берем ссылку без параметров
            const base = link.href.split('?')[0];
            // Собираем новую ссылку вручную, без URLSearchParams,
            // чтобы не было никакого авто-кодирования "="
            link.href = base + '?ref=landing&' + CONST_PART + ymUid;
        });
    }
    // запуск при готовом DOM
    document.addEventListener("DOMContentLoaded", updateLinks);
    // перезапуск каждые 500ms на случай появления динамических блоков
    setInterval(updateLinks, 500);
})();

Если чат-бот используется без лендинга, ситуация немного усложняется, но не становится критичной. В этом случае можно использовать внутренние идентификаторы платформы – например, %userid% в Senler с ID пользователя в Telegram и ВКонтакте.
Да, это не позволит связать пользователя с источником трафика, но вы все равно сможете:
  • считать уникальных пользователей
  • отслеживать шаги воронки
  • анализировать поведение
То есть базовая аналитика сохраняется.

Когда вопрос с ClientID решен, можно переходить к следующему этапу – настройке передачи данных. В Senler это реализовано через Webhook. Чтобы упростить процесс, можно воспользоваться готовым шаблоном (ссылка доступна авторизованным пользователям):http://senler.ru/cabinet/webhooktemplateshare/69b30acbd2caef6da309a0f4_2032f43ec200139f0162d92b6e84a311
После того как вы добавили шаблон в свой проект, вам необходимо внести в него правки.
  1. Указать номер счетчика Яндекс Метрики.
  1. Активировать Measurement Protocol в Яндекс Метрике. 
Для этого идем в “Настройки” > “Счетчик”
Далее “Дополнительные настройки” > “Безопасность и использование данных”
  1. Скопировать токен Measurement Protocol в шаблон Senler. Токен берется в настройках Метрики – в разделе безопасности. Без него данные просто не будут отправляться.
  1. Сохранить получившийся шаблон.

Внутри шаблона есть несколько параметров, которые важно понимать:
  • tid – номер счетчика Яндекс Метрики, в который отправляем данные, который необходимо изменить на ваш
  • cid – тот самый ClientID, оставляем без изменений
  • t – тип хита, в нашем случае передаем просмотры страниц
  • dl – переменная для URL, просмотр которого будет отправляться в Яндекс Метрику
  • dt – заголовок просмотренной страницы, который можно заменить на переменную, если необходимо отправлять уникальные значения
  • ms – подставляем токен вашего счетчика, без него данные не отправятся в Яндекс Метрику
Особую роль играет URL (параметр dl). Именно он определяет, как будет выглядеть структура данных в Метрике. Фактически вы сами создаете “страницы” внутри чат-бота, которые потом используете для анализа. Например, если вы передаете /bot/start, вы увидите в Метрике, сколько людей начали диалог. Если /bot/lead – сколько дошли до заявки.

Когда все подготовлено, остается встроить передачу данных в сам сценарий чат-бота. В Senler это делается через два последовательных действия.
Первое действие – это подготовка данных. Вы создаете переменные:
  • page_path – путь (например, /bot/start)
  • clientID – идентификатор
Значение ClientID зависит от источника:
  • %utm_term% – если это Telegram с сайта
  • %refs.ref_source% – если ВК
  • %userid% – если без сайта
Второе действие – это отправка Webhook на адрес с уже настроенным шаблоном: https://mc.yandex.ru/collect/ 
  • добавляем “Вебхук” - https://mc.yandex.ru/collect/
  • выбираем ранее настроенный шаблон
  • выбираем GET
Соединяем получившиеся действия.
Далее получившуюся связку можем копировать несколько раз, чтобы вставить в нужные места чат-бота. Для каждого места лучше задать уникальные значения page_path, отредактировав соответствующее действие, в остальном “Действия” править не надо.
После всех правок нажимаем “Опубликовать”

Здесь часто возникает вопрос: какие именно действия стоит передавать в Метрику?
Если говорить о базовом уровне, достаточно зафиксировать три ключевых этапа:
  • начало взаимодействия с ботом
  • промежуточные шаги
  • целевое действие (например, заявка)
Но на практике лучше идти чуть глубже и размечать основные точки воронки. Это позволит увидеть не только результат, но и процесс – где пользователи теряются и что можно улучшить.

Лучший способ – пройти сценарий чат-бота самостоятельно и посмотреть, появляются ли данные в Метрике. Обычно это занимает от 15 до 30 минут. Если данные в Яндекс Метрику не подтянулись, проверьте “Вебхук”.
Если код 200, но даже в течение 40 минут данные не появились в Яндекс Метрике – следует проверить фильтры счетчика, возможно он не пропускает данные из чат-бота. Если код отличный от 200, необходимо проверить, корректно ли указаны настройки в шаблоне “WebHook API” (номер счетчика или токен) и передается ли ClientID, т.к. если он пустой, то в Яндекс Метрику данные не поступят.

Когда интеграция настроена правильно, меняется сам подход к работе с чат-ботом. Он перестает быть отдельным инструментом и становится частью общей системы аналитики. Вы начинаете видеть не просто цифры, а поведение пользователей.
Это дает возможность:
  • точнее оценивать эффективность рекламы
  • находить слабые места воронки
  • повышать конверсию
  • принимать решения на основе данных
И именно это отличает системный маркетинг от “интуитивного”.

Интеграция Яндекс Метрики с чат-ботами через Senler – это не сложная техническая задача, а базовая настройка, без которой невозможно нормально работать с трафиком.
Если кратко, вся логика сводится к трем вещам:
  • передать ClientID
  • настроить отправку данных
  • правильно разметить шаги бота
Дальше уже начинается самое интересное – работа с аналитикой и рост эффективности. Важно понимать: даже корректно настроенная Яндекс Метрика – это только часть системы аналитики. На практике данные часто разрознены: часть находится в рекламных кабинетах, часть – в CRM, часть – в чат-ботах.
Именно поэтому следующим логичным шагом становится объединение всех источников в единую систему. В таких задачах удобно использовать решения вроде dataCraft – сервиса, который позволяет сводить данные из разных каналов в единую аналитику, строить сквозные отчеты и видеть реальную картину эффективности маркетинга.
Это особенно актуально, если у вас одновременно используются:
  • сайт
  • чат-боты (Telegram, ВКонтакте)
  • несколько рекламных источников
  • CRM-система
Вместо разрозненных цифр вы получаете цельную систему, где понятно, как именно пользователь проходит путь от первого касания до заявки или продажи.
Если вы хотите не просто “собирать данные”, а выстроить полноценную сквозную аналитику под бизнес-задачи, имеет смысл подключать специалистов. Команда агентства Adventum помогает внедрять такие решения, настраивать аналитику под конкретные воронки и находить точки роста, которые неочевидны без глубокой проработки данных. В итоге аналитика перестает быть набором отчетов и становится инструментом, который напрямую влияет на результат.
Автор: Сысоев Иван | Analytics Group Head | Adventum

Подпишитесь на полезные материалы, которые помогут вам

Оформляя подписку, вы разрешаете обработку персональных данных и соглашаетесь с  политикой конфиденциальности