YCLID нужно сохранять до того, как человек уйдет из браузера в Telegram. Сам Telegram не возвращает рекламный query из Яндекс Директа в событии подписки, поэтому прямой переход на t.me почти всегда оставляет маркетолога без надежной связки клика и вступления.

Практичный маршрут такой: Директ ведет на лендинг, лендинг сохраняет исходный query, Stat pixel переносит yclid в трекинговую ссылку, сервер записывает его в клик, а Telegram-подписка потом связывается с этим кликом. После этого событие можно использовать для отчета и офлайн-конверсии Метрики. Если yclid не дошел до записи клика, честно восстановить его задним числом нельзя.

Для кого

Кому нужно сохранить YCLID до Telegram

Telegram-канал на Директе

Покупаете трафик и хотите понимать, какие кампании дают подтвержденные вступления.

Маркетолог

Нужно вернуть в Метрику событие, которое связано с реальным кликом Директа.

Интегратор

Собираете маршрут лендинг, Stat, Telegram и хотите видеть, где теряется query.

Онлайн-школа

Ведете рекламу на вебинар, канал прогрева или закрытое комьюнити перед продажей.

Быстрый ответ

Если вопрос звучит как "как сохранить yclid при переходе в Telegram", главный ответ не в настройке бота. Главный ответ в маршруте до Telegram. Нужно иметь промежуточную точку, где URL еще доступен: лендинг, микролендинг или трекинговый переход. Там сохраняются yclid, UTM, дополнительные параметры и исходная строка query.

В Strelo Stat этот участок закрывает связка pixel плюс route /c/<token>. Pixel на странице берет query лендинга и переписывает Telegram-кнопки на Stat-ссылку. Route /c/<token> принимает переход, пишет yclid в отдельное поле клика, сохраняет UTM, прочие параметры и raw query, затем отправляет человека в Telegram. Когда Telegram подтверждает вступление, подписка связывается с сохраненным кликом.

Короткий ответ: yclid нужно поймать на лендинге или Stat-ссылке до Telegram, сохранить в записи клика и связать будущую подписку с этим кликом. Telegram сам не восстановит рекламный query.

Для кого это важно

Владельцу канала нужно понимать не только сколько людей кликнули объявление, но и сколько дошли до Telegram. Разница бывает неприятной: кампания может давать дешевые переходы, но слабую подписку. Без yclid рекламная система и отчетность видят верх воронки, а не реальный результат.

Маркетологу нужен ключ для обратной связи с Директом. UTM помогают читать кампанию, группу, креатив и площадку. YCLID нужен как технический идентификатор рекламного клика. Если сохранить только UTM, вы сможете построить отчет внутри Stat, но Метрике и Директу будет сложнее сопоставить офлайн-событие с исходным рекламным визитом.

Интегратору важно не перепутать две задачи: сохранить метку на переходе и отправить конверсию позже. Первая задача решается на лендинге и Stat-редиректе. Вторая задача решается через Метрику и цель. Если первый шаг слабый, второй уже не спасает данные.

Роли

Что получает каждая команда

Владелецне по клику
CPA по подписке

Видит, где реклама дает участников, а не только переходы.

Маркетологдля Метрики
чистый сигнал

Отдает в рекламную систему событие, связанное с исходным кликом.

Интеграторraw query
точка отладки

Понимает, на каком участке пропал yclid, UTM или invite-связка.

Где именно теряется yclid

Самый частый сбой - объявление ведет сразу на Telegram. Пользователь нажал рекламу, браузер открыл приложение, а рекламный query остался вне вашей системы. Telegram-событие подписки не содержит исходный URL объявления. В результате подписка есть, а yclid нет.

Второй сбой мягче, но встречается не реже: объявление ведет на лендинг, yclid есть в адресной строке, но кнопка "Перейти в Telegram" ведет напрямую на https://t.me/.... Пользователь уходит с лендинга, а query не переносится на следующий шаг. С точки зрения аналитики это почти то же самое, что прямой t.me.

Третий сбой - редирект есть, но он не пишет raw query и не выделяет yclid в отдельное поле. Потом в отчетах видно, что был переход, но нельзя доказать, какой рекламный клик привел к подписке. Четвертый сбой - человек вступил в канал без индивидуальной invite-связки: через поиск, пересланную ссылку или старый публичный адрес.

Диагностика

Где yclid чаще всего пропадает

Проблема почти всегда возникает до события подписки.

КритерийУчастокЧто происходитКак исправить
Объявление ведет на t.meПереход сразу открывает TelegramНекуда записать рекламный queryВести на лендинг или Stat-ссылку
Лендинг с прямой кнопкойYCLID остается в адресе страницыTelegram CTA не переносит queryПереписывать CTA через Stat pixel
Редирект без храненияКлик проходит через промежуточный маршрутПараметры не попадают в запись кликаСохранять yclid, UTM, params и raw query
Подписка без invite-связкиПользователь вступил другим путемНет надежного matched clickНе отправлять как рекламную конверсию
Если yclid не записан до Telegram, задним числом его честно не восстановить.

Правильная цепочка сохранения

Рабочая цепочка начинается с нормального Final URL в Директе. Это страница, которую видит пользователь и которую можно объяснить модерации: лендинг канала, вебинарная страница, промо закрытого клуба, страница лид-магнита. На нее добавляется Stat pixel.

Когда страница открывается с ?yclid=..., pixel не отправляет человека в Telegram сам по себе. Он переписывает Telegram-ссылки так, чтобы следующий клик пошел через Stat route. Если кнопка уже была Stat-ссылкой, pixel дополняет ее query лендинга. Если кнопка была обычной t.me-ссылкой, pixel делает ее трекинговой.

На route /c/<token> сервер фиксирует клик. В коде Stat yclid берется из query как отдельный идентификатор, UTM попадают в структурированное поле, остальные параметры сохраняются в params, а исходная query-строка остается в raw_query. Это важно для диагностики: можно увидеть не только итоговые поля, но и то, что пришло на вход.

Маршрут

Как yclid проходит до Telegram-подписки

  1. Клик из Директа

    В адресе лендинга появляется yclid и маркетинговые параметры.

  2. Лендинг

    Страница показывает оффер и загружает Stat pixel.

  3. Stat pixel

    Telegram-кнопка получает трекинговый маршрут с query лендинга.

  4. Запись клика

    Route сохраняет yclid, UTM, params и raw query.

  5. Telegram

    Пользователь вступает через invite или начинает сценарий.

  6. Matched subscription

    Событие подписки связывается с сохраненным кликом.

  7. Метрика

    Офлайн-событие можно отправить по yclid, если связь надежная.

Реальный экран Strelo Stat: клики и подписки нужно читать вместе, иначе реклама оптимизируется по верхнему действию.
Реальный экран Strelo Stat: клики и подписки нужно читать вместе, иначе реклама оптимизируется по верхнему действию.

Что хранить кроме yclid

YCLID нужен для сопоставления с рекламным кликом Директа. Но один yclid не заменяет нормальную маркетинговую разметку. Если вы хотите разбирать отчеты по кампаниям, объявлениям, креативам и аудиториям, рядом должны жить UTM и дополнительные параметры. В Stat это разные слои данных, и смешивать их не нужно.

UTM отвечают на человеческий вопрос: откуда пришел человек. YCLID отвечает на технический вопрос: какой рекламный клик должен получить офлайн-событие. Raw query нужен для расследований, когда маркетолог говорит "в объявлении метка была", а в отчете ее нет. Params нужны для всего, что не является UTM или выделенным click-id.

Данные

Что сохранять в клике

YCLID

Технический ключ рекламного клика Директа для офлайн-сопоставления.

UTM

Читаемая разметка источника, кампании, объявления и аудитории.

Raw query

Исходная строка параметров для расследования спорных случаев.

Params

Дополнительные параметры, которые не попали в UTM или отдельные click-id поля.

YM ClientID

Резервный идентификатор Метрики, если yclid отсутствует.

Consent

Согласия и ограничения обработки данных, если они применимы в вашем маршруте.

Чем yclid отличается от ClientID Метрики

YCLID - это идентификатор клика Директа в URL. ClientID Метрики - идентификатор посетителя в счетчике. Оба могут использоваться в офлайн-данных, но это разные привязки. Если у вас есть yclid, в рекламном Telegram-маршруте обычно лучше использовать его как более прямой ключ рекламного клика.

ClientID полезен как резерв, особенно если путь пользователя проходит через сайт, где Метрика стабильно работает и cookies не потерялись. Но Telegram добавляет разрыв: пользователь может уйти в приложение, вернуться позже, открыть ссылку на другом устройстве. Поэтому в статье про переход в Telegram фокус именно на yclid: его нужно пронести до записи клика до ухода из веб-контекста.

Идентификаторы

YCLID и ClientID Метрики решают разные задачи

Оба могут быть полезны, но в рекламном Telegram-маршруте yclid обычно ближе к клику.

КритерийYCLIDClientID МетрикиЧто выбрать
Что идентифицируетРекламный клик ДиректаПосетителя в счетчике МетрикиДля Директа начинать с yclid
Где появляетсяВ URL после клика по объявлениюВ cookies и данных счетчикаСохранять оба, но не смешивать
Риск потериТеряется при прямом уходе в TelegramЗависит от работы Метрики и cookiesЗаписывать до Telegram
YCLID не заменяет UTM и ClientID, но именно он отвечает за точную связку с рекламным кликом.

Что делает Stat pixel на лендинге

Pixel нужен не только как "код аналитики". В этой задаче он выполняет прикладную работу: читает query страницы, аккуратно переписывает Telegram CTA и может повторить переписывание, если кнопка появилась после загрузки страницы. Это важно для Tilda, Taplink, конструкторов лендингов и виджетов, где кнопки рисуются не сразу.

Еще pixel может включать режим авто-перехода, если страница специально используется как промежуточная. Но для большинства рекламных сценариев лучше оставлять пользователю нормальный лендинг и нормальную кнопку. Так вы не превращаете маршрут в подозрительный редирект, а просто делаете Telegram-переход измеримым.

Pixel

Что делает Stat pixel на странице

Читает query лендинга

Берет yclid, UTM и другие параметры из текущего URL.

Переписывает Telegram CTA

Заменяет прямую t.me-ссылку на измеримый Stat-маршрут.

Следит за динамикой

Повторно проверяет кнопки, если лендинг дорисовал их после загрузки.

Не подменяет оффер

Пользователь остается на честной странице и сам нажимает Telegram-кнопку.

Реальный экран Strelo Stat: рекламные интеграции живут рядом, но Google, VK и Яндекс используют разные идентификаторы и разные правила загрузки.
Реальный экран Strelo Stat: рекламные интеграции живут рядом, но Google, VK и Яндекс используют разные идентификаторы и разные правила загрузки.

Как понять, что yclid сохранился

Первый тест технический: открыть лендинг с тестовым параметром ?yclid=test_123&utm_source=yandex&utm_campaign=test и нажать Telegram-кнопку. В Stat должна появиться запись клика, где yclid равен тестовому значению, UTM лежат в UTM-поле, а raw query содержит исходную строку.

Второй тест продуктовый: пройти путь как обычный пользователь. Вступить в канал, отправить заявку или открыть бота. Подписка должна получить связь с кликом. Если клик записался, а подписка не связалась, проблема не в yclid, а в invite, webhook, join request или выбранном режиме атрибуции.

Третий тест рекламный: проверить очередь отправки в Метрику. Интеграция должна предпочесть yclid, а если его нет, использовать ClientID только как резерв. Если нет ни yclid, ни ClientID, событие не нужно отправлять как атрибутированную офлайн-конверсию.

Проверка

Как проверить сохранение yclid

  1. Откройте лендинг с тестовым yclid

    Добавьте query вручную, чтобы не ждать реальный рекламный клик.

  2. Нажмите Telegram CTA

    Кнопка должна вести через Stat route, а не напрямую на t.me.

  3. Проверьте click row

    YCLID должен лежать в отдельном поле, UTM и raw query должны быть на месте.

  4. Сделайте подписку

    Вступление должно получить matched click, иначе офлайн-событие будет слабым.

  5. Проверьте интеграцию

    Метрика должна получить событие только при надежном идентификаторе.

Реальный crop экрана Strelo Stat: карточка Яндекс Метрики есть в списке интеграций, а настройка офлайн-конверсий начинается после сохраненного yclid.
Реальный crop экрана Strelo Stat: карточка Яндекс Метрики есть в списке интеграций, а настройка офлайн-конверсий начинается после сохраненного yclid.

Почему нельзя восстановить yclid потом

Иногда после запуска кампании выясняется, что подписчики уже пришли, но yclid не сохранился. Возникает соблазн собрать таблицу по времени клика, IP, user agent или UTM и "примерно сопоставить" события. Для рекламной оптимизации это плохая идея. Нужен надежный идентификатор, а не догадка.

Если пользователь пришел без yclid, это может быть органика, пересланная ссылка, другой источник, прямой заход или блокировка части скриптов. Внутри вашей аналитики такое событие можно хранить как неатрибутированное. Но отдавать его в Метрику как рекламную офлайн-конверсию опасно: алгоритм будет учиться на сигнале, которому нельзя доверять.

Если yclid не был сохранен на клике, не подставляйте его потом по времени или UTM. Для рекламной оптимизации это ненадежная атрибуция.

Как связать это с офлайн-конверсией Яндекса

Сохранение yclid - это первый этап. Отправка офлайн-конверсии - второй. Для Метрики нужно событие с идентификатором, целью, временем события и, если нужно, ценностью и валютой. При режиме YCLID в CSV или API используется поле Yclid. В коде Stat интеграция выбирает yclid как приоритетный идентификатор, а ClientID использует только запасным путем.

Официальная справка Яндекса указывает важное окно: между визитом и обработкой офлайн-данных по yclid должно пройти не больше 21 дня. Поэтому нормальная система не копит события месяцами. Она отправляет их регулярно, а временем конверсии считает момент подписки, а не момент выгрузки.

Яндекс

Что важно для офлайн-события

Идентификаторприоритет
YCLID

В Stat интеграция выбирает yclid, если он есть у клика.

Окнопо справке
21 день

Между визитом и обработкой офлайн-данных должен пройти ограниченный срок.

ФорматCSV или API
Yclid, Target, DateTime

DateTime должен описывать момент подписки, а не момент экспорта.

Чем эта статья отличается от статьи про передачу подписки в Директ

Тема похожая, но угол другой. Статья про передачу подписки в Директ отвечает на вопрос "как отправить подтвержденное Telegram-событие в Метрику и использовать цель в стратегии". Эта статья отвечает на более ранний вопрос: "как не потерять yclid до того, как событие вообще станет возможным".

Если маршрут сохранения сломан, дальше нечего отправлять. Поэтому здесь больше внимания к лендингу, Telegram-кнопке, pixel, route /c/<token>, полям клика и диагностике raw query. А статья про офлайн-конверсию нужна после этого, когда click-id уже сохранен и подписка связалась.

Граница темы

Сохранить yclid и передать конверсию - не одно и то же

Сначала нужен надежный click-id, потом уже настройка Метрики.

КритерийЭта статьяСтатья про офлайн-конверсию
Главный вопросГде теряется yclid до TelegramКак отправить подписку в Метрику
Ключевая точкаЛендинг, pixel и route /cЦель, CSV, API и статусы загрузки
РезультатYCLID лежит в кликеПодписка ушла как офлайн-событие

Прямой t.me против лендинга с Stat

Прямой t.me кажется короче и дешевле, но в платной рекламе он часто дороже по последствиям. Вы не объясняете оффер, не собираете нормальные события, хуже диагностируете качество трафика и рискуете потерять yclid до Telegram.

Лендинг с Stat pixel дает больше контроля. Пользователь видит обещание, условия, пример контента или форму. Рекламный query остается доступен в браузере. Telegram-кнопка переписывается в измеримый маршрут. Сервер записывает клик. Подписка связывается с этим кликом. Это не усложнение ради схемы, а минимальный мост между веб-рекламой и Telegram-событием.

Выбор маршрута

Прямой Telegram или лендинг с Stat

Короткий путь не всегда лучше, если нужно обучать рекламу.

КритерийПрямой t.meЛендинг плюс Stat
Сохранение yclidСлабое или отсутствуетЗаписывается до Telegram
Оффер для пользователяПочти нет объясненияЕсть страница с контекстом
ДиагностикаНепонятно, где потеряВидны query, click row и matched click
Для платной рекламы лендинг с измеримым Telegram-переходом обычно надежнее прямой ссылки.

Диагностика по симптомам

Если в Stat есть клики, но yclid пустой, проверьте URL объявления, авторазметку Директа, Final URL и редиректы до лендинга. Если yclid есть в raw query, но не выделился в поле, это уже техническая ошибка обработки параметров. Если yclid есть в клике, но подписка не связалась, смотрите invite и matched click.

Если подписки есть, а Метрика их не принимает, это другой слой: счетчик, OAuth, имя цели, формат данных, время события, окно 21 день. Не надо чинить все сразу. Идите по цепочке: URL, pixel, /c, click row, invite, Telegram event, conversion queue, upload status.

Симптомы

Как быстро найти слабое место

Проверяйте маршрут по слоям, а не все сразу.

КритерийСимптомВероятная причинаЧто смотреть
В кликах нет yclidПереходы есть, поле пустоеURL, auto-tagging или редирект до StatFinal URL, raw query, кнопка Telegram
YCLID есть, подписки не связаныКлики записаны, matched click пустойПроблема invite или webhookРежим ссылки, Telegram-событие, join request
Метрика не видит событиеПодписка есть, upload не принятЦель, OAuth, счетчик или срокЛоги интеграции и статус обработки
Ошибки

Что делать и чего не делать

Правильно
  • Вести рекламу на лендинг с понятным оффером и Stat pixel.
  • Проверять yclid в записи клика до запуска бюджета.
  • Хранить UTM, params и raw query рядом с click-id.
  • Отправлять в Метрику только события с надежной связкой.
Опасно
  • Ставить прямой t.me в рекламную ссылку и ждать атрибуцию.
  • Подставлять yclid задним числом по времени или UTM.
  • Считать любую подписку рекламной, если нет matched click.
  • Путать сохранение yclid с уже настроенной офлайн-конверсией.
Хорошая атрибуция не обещает видеть всех. Она честно отделяет надежные рекламные подписки от органики и неатрибутированных событий.

Минимальная настройка перед рекламой

Перед запуском бюджета сделайте один чистый тест. Создайте отдельную трекинговую ссылку, откройте лендинг с тестовым yclid, нажмите Telegram CTA, проверьте клик в Stat, вступите в канал, дождитесь Telegram-события и убедитесь, что подписка связалась с кликом. Только потом подключайте офлайн-конверсию.

Если в проекте несколько лендингов, не полагайтесь на "один раз проверили". На каждом лендинге могут быть разные кнопки, виджеты, формы и редиректы. Особенно внимательно проверяйте мобильную версию: пользователь может открывать Telegram-приложение, и именно там чаще видны слабые места маршрута.

Перед запуском

Минимальный чеклист

Auto-tagging включен

Директ добавляет yclid к рекламному переходу.

Лендинг открыт

Final URL ведет на страницу, где есть Stat pixel.

CTA переписан

Telegram-кнопка проходит через Stat, а не напрямую на t.me.

Click row проверен

YCLID, UTM и raw query видны после тестового перехода.

Подписка связалась

Telegram-событие получило matched click.

Метрика готова

Цель, счетчик и доступы проверены до отправки событий.

Когда Strelo Stat особенно нужен

Strelo Stat полезен, если вы покупаете трафик из Директа на Telegram-канал, бота, бесплатный вебинар, закрытый клуб, лид-магнит или платный канал. В таких сценариях рекламная система видит клик, но бизнес-ценность появляется уже внутри Telegram. Нужен слой, который соединяет эти два мира.

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

Когда подключать

Где Strelo Stat дает максимум пользы

Канал закупает подписчиков

Нужно сравнивать кампании по вступлениям, а не по кликам.

Вебинар или запуск

Реклама ведет в Telegram-прогрев перед продажей продукта.

Агентство ведет клиентов

Нужны доказуемые отчеты, где видно путь от клика до подписки.

Команда спорит о качестве трафика

YCLID и matched click снимают часть догадок из обсуждения.

Итог

Сохранить yclid при переходе в Telegram можно только до ухода пользователя из веб-контекста. Ведите рекламу на лендинг, ставьте Stat pixel, переносите query в /c/<token>, сохраняйте yclid в записи клика и связывайте Telegram-подписку с этим кликом. Тогда офлайн-конверсия будет опираться на реальный рекламный идентификатор, а не на догадку.

Главное правило простое: если yclid не попал в клик, не надо рисовать его задним числом. Настройте маршрут так, чтобы параметр дошел до Stat заранее. Тогда и отчет, и Метрика, и рекламная стратегия будут работать с более чистым сигналом.

Strelo Stat

Проверьте, где у вас теряется yclid

Создайте трекинговую ссылку, поставьте Stat pixel на лендинг и посмотрите, доходит ли рекламный query до Telegram-подписки.

Открыть Strelo Stat

Частые вопросы

Можно ли поставить рекламу сразу на t.me и сохранить yclid?

Технически это слабый вариант. Если нет промежуточной точки записи клика, yclid часто не доходит до события подписки. Для платной рекламы надежнее вести на лендинг с Stat pixel или на Stat-ссылку.

Где должен храниться yclid?

В записи рекламного клика до перехода в Telegram. В Strelo Stat это отдельное поле клика, рядом с UTM, params и raw query.

Нужно ли сохранять UTM, если есть yclid?

Да. YCLID нужен для технического сопоставления, а UTM нужны людям для отчетов по источникам, кампаниям и креативам.

Что делать с подписками без yclid?

Хранить их как органику, no-link или неатрибутированные события. Не стоит отправлять их в Метрику как рекламную офлайн-конверсию без надежной связки.

Почему yclid есть в raw query, но не в отчете?

Проверьте, выделяет ли трекинговый маршрут yclid в отдельное поле, не фильтруется ли параметр и не ломается ли регистр или кодировка на редиректе.

Что важнее для Telegram-рекламы: yclid или ClientID Метрики?

Если есть yclid, он ближе к рекламному клику Директа. ClientID полезен как резерв, но он зависит от работы Метрики и cookies.