phone
8(800)775-87-45
Москва, Цветной бульвар, дом 2
Санкт-Петербург, Парашютная ул., дом 6
Надёжный подрядчик
ОГРНИП Нам 16 лет!
info@dfaktor.ru
Обсудим задачу
прямо сейчас?
Страница находится в разработке.
Вы можете прямо сейчас заказать эту услугу заполнив форму в шапке сайта.
Настройки cookies
Мы используем файлы cookie для обеспечения наилучшего взаимодействия с сайтом.
Настройки cookies
Настройки Settings
Файлы cookie, необходимые для корректной работы сайта, всегда включены.
Другие файлы cookie настраиваются.
Обязательные файлы cookie
Всегда включен. Эти файлы cookie необходимы для того, чтобы вы могли пользоваться веб-сайтом и его функциями. Их нельзя отключить. Они устанавливаются в ответ на ваши запросы, такие как настройка ваших настроек конфиденциальности, вход в систему или заполнение форм.
Аналитические файлы cookie
Disabled
Эти файлы cookie собирают информацию, чтобы помочь нам понять, как используются наши веб-сайты или насколько эффективны наши маркетинговые кампании, или чтобы помочь нам настроить наши веб-сайты под вас. Смотрите список аналитических файлов cookie, которые мы используем, здесь.
Рекламные файлы cookie
Disabled
Эти файлы cookie предоставляют рекламным компаниям информацию о вашей онлайн-активности, чтобы помочь им предоставлять вам более релевантную онлайн-рекламу или ограничить количество просмотров рекламы. Эта информация может быть передана другим рекламным компаниям. Смотрите список рекламных файлов cookie, которые мы используем, здесь.

Как определить источник клиента в Telegram-боте при помощи UTM метки?

SEO-специалист Дмитрий Клещевников - автор статьи "UTM Telegram: отслеживание utm-меток и источника в Telegram-боте"
Автор: Дмитрий Клещевников
Основатель DFAKTOR
Стаж в SEO 16 лет
Время на прочтение: 6 минут
Дата публикации: 27.01.2026
Изображение автора статьи UTM Telegram: отслеживание utm-меток и источника в Telegram-боте с текстом на картинке Как определить источник клиентов в Telegram боте
Одна из типовых проблем в маркетинге — потеря источника обращения, когда пользователь уходит с сайта в Telegram.

Клик был, диалог есть, а какая реклама сработала — непонятно.

Это классическая ситуация, когда utm telegram фактически «обрываются» при уходе пользователя с сайта в мессенджер.

Мы решили эту задачу простым и надёжным способом, без серверов и сложной инфраструктуры.

В чём была задача

Нам было важно:

  • передавать UTM-метки из рекламы
  • сохранять utm source telegram при переходе в Telegram-бот
  • использовать эти данные в CRM
  • не усложнять техническую часть
  • реализовать решение без отдельного бэкенда

Ключевая цель — сохранить utm метки telegram на всём пути пользователя: от рекламы → сайта → Telegram-бота.
Решение должно было работать на любом сайте и не требовать отдельного бэкенда.

Какое решение мы используем

Мы добавили на сайт небольшой JavaScript-код.
Который:

  1. Считывает UTM-метки из URL страницы
  2. Находит ссылки на Telegram-бота
  3. Добавляет к ним параметр start
  4. Передает источник в бот при первом запуске

Для пользователя процесс выглядит как обычный переход в Telegram.
Вся логика остаётся на стороне сайта.
Как это работает технически
Когда пользователь заходит на сайт, например, по ссылке:
site.ru/?utm_source=telegram&utm_medium=yandex&utm_campaign=seo-dfaktor

Скрипт автоматически формирует ссылку на бота вида:
https://t.me/имя_бота?start=s_telegram-m_yandex-c_seo-dfaktor

При первом нажатии кнопки «Start» в боте Telegram передает в бот команду:
/start s_telegram-m_yandex-c_seo-dfaktor

Этот текст бот получает в явном виде. Например в битрикс24 он выглядит так:
Таким образом:

  • utm telegram передаются в явном виде
  • источник можно сохранить в базе данных
  • utm source telegram корректно фиксируется в CRM (например, Bitrix24)
  • данные можно использовать для аналитики и оценки эффективности рекламы

⚠️ Важно: параметр start передается только при первом запуске бота.
Повторные открытия без нового /start не перезаписывают utm метки telegram — это корректное и ожидаемое поведение Telegram.

Что нужно сделать на сайте

Достаточно:

  • вставить JavaScript-код на страницу (который я дам в конце материала)
  • оставить обычную ссылку на Telegram-бота в формате
  • https://t.me/имя_бота

Скрипт автоматически:

  • найдет все ссылки на бота
  • добавит utm метки telegram
передаст utm source telegram при старте диалога

Код можно разместить:

  • в <head>
  • перед </body>
  • в кастомный HTML/JS-блок (Tilda, WordPress, Webflow, самописные сайты)

При каких условиях решение работает корректно

Решение работает, если:

  • пользователь приходит на сайт с UTM-метками
  • на странице есть ссылка на Telegram-бота
  • бот поддерживает параметр /start
  • используются допустимые символы и длина параметра (учтено в генерации ссылки)
  • требуется корректная передача utm source telegram без серверной логики

Код адаптирован под сайты с динамической версткой — ссылки обновляются даже при перерисовке страницы.

Итог и практическая польза

В результате мы получаем:

  • зафиксированный источник обращения в Telegram
  • корректную передачу utm меток telegram
  • возможность связывать рекламу и диалоги
  • более точную аналитику эффективности кампаний
  • основу для корректных управленческих решений

Принцип работы простой:

UTM-метки с сайта упаковываются в параметр start, Telegram передаёт его в команду /start, а мы сохраняем источник обращения.
Для агентства это базовый уровень контроля маркетинга.
Без него любая оптимизация превращается в догадки.

Вот сам код, неизменно вставляйте его и наслаждайтесь еще более точными данными в аналитике.

Этот скрипт сам найдет все ссылки на телеграм бота и добавит к ним данные из UTM меток
  • в <head>
  • перед </body>
  • в кастомный HTML/JS-блок (Tilda, WordPress, Webflow, самописные сайты)
<script>
(function () {
  const params = new URLSearchParams(location.search);

  const src = params.get('utm_source') || '';
  const med = params.get('utm_medium') || '';
  const cmp = params.get('utm_campaign') || '';

  if (!src && !med && !cmp) return;

  const clean = (v, max) =>
    v.toString()
     .trim()
     .replace(/\s+/g,'-')
     .replace(/[^A-Za-z0-9_-]/g,'')
     .slice(0, max);

  const payload = (
    `s_${clean(src,12)}-m_${clean(med,12)}-c_${clean(cmp,24)}`
  ).slice(0,64).replace(/-$/,'');

  const buildHref = (href) => {
    try {
      const url = new URL(href);
      if (!/^(t\.me|telegram\.me)$/.test(url.hostname)) return null;

      const parts = url.pathname.split('/').filter(Boolean);
      if (!parts[0]) return null;

      return `https://t.me/${parts[0]}?start=${payload}`;
    } catch {
      return null;
    }
  };

  const updateLinks = () => {
    document.querySelectorAll('a[href*="t.me/"], a[href*="telegram.me/"]').forEach(a => {
      const newHref = buildHref(a.href);
      if (newHref && a.href !== newHref) {
        a.href = newHref;
      }
    });
  };

  updateLinks();

  const observer = new MutationObserver(updateLinks);
  observer.observe(document.body, {
    childList: true,
    subtree: true,
    attributes: true
  });
})();
</script>
И бонус для всех кто дочитал до конца - онлайн генератор UTM меток для Telegram

Первый в мире, аналогов нет. Доступен полностью бесплатно, уже сейчас https://utm.dfaktor.ru 

Дайте пожалуйста обратную связь по скрипту, на каких CMS ставили, все ли хорошо работает и расскажите какой способ оценки эффективности рекламу для Telegram ботов вы используете? 

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