Вопрос "как передать подписку в яндекс директ как офлайн конверсию" обычно появляется после первой неприятной недели рекламы: клики есть, Метрика видит визиты, Telegram-канал растет, но рекламная система оптимизируется по переходам, а не по реальным подписчикам. Для канала, бота или закрытого комьюнити это слишком грубая цель. Нужен не просто клик по ссылке, а подтвержденное вступление человека в Telegram.
Короткий вывод: подписку не стоит отправлять в Директ как абстрактное событие из таблицы. Правильный маршрут идет через Яндекс Метрику: рекламная ссылка несет yclid, Strelo Stat сохраняет этот идентификатор в клике, Telegram подтверждает вступление, после задержки сервис проверяет, что пользователь не вышел, и загружает событие в Метрику как офлайн-конверсию. Дальше цель используется в стратегии Директа.
Для кого статья
Маркетолог на Директе
Покупаете трафик на канал и хотите учить стратегию не по кликам, а по факту вступления.
Владелец Telegram-канала
Сравниваете источники подписчиков и не хотите принимать решения только по просмотрам и CTR.
Онлайн-школа
Ведете рекламу на бесплатный канал, прогрев или закрытое комьюнити перед продажей курса.
Агентство
Настраиваете клиентам отчетность и хотите отделить технический трекинг от гипотез по креативам.
Почему подписка не равна клику
Клик в рекламе говорит только о том, что человек нажал объявление. Подписка говорит больше: пользователь открыл Telegram, дошел до канала или бота, согласился вступить и остался хотя бы до момента проверки. Если закупка оптимизируется по кликам, алгоритм может искать дешевое любопытство. Если оптимизация идет по подтвержденным подпискам, она ближе к реальной задаче владельца канала.
В Telegram этот разрыв особенно заметен. Человек может кликнуть с десктопа, потом открыть приложение на телефоне, потерять контекст, закрыть invite-ссылку или вступить позже. В обычной веб-воронке это похоже на форму заявки. В Telegram это отдельное событие платформы, которое нужно поймать не только на лендинге, но и после перехода в мессенджер.
Почему нельзя оптимизироваться только по клику
Клик и подписка отвечают на разные вопросы.
| Критерий | Клик | Подписка | Риск ошибки |
|---|---|---|---|
| Что произошло | Человек нажал объявление | Человек дошел до Telegram и вступил | Дешевые клики могут не давать аудиторию |
| Что видит Директ | Верхний интерес | Более близкое действие к бизнес-цели | Без цели стратегия учится на шуме |
| Что проверяет команда | CTR и стоимость перехода | CR из клика в вступление | Нельзя сравнивать без общего знаменателя |
Путь события от объявления до цели
Клик из Директа
В URL объявления появляется yclid, а также UTM и параметры кампании.
Трекинговая ссылка
Strelo Stat сохраняет идентификаторы до перехода пользователя в Telegram.
Подписка
Telegram-событие связывается с исходным кликом и каналом.
Проверка качества
Worker ждет задержку и проверяет, что пользователь не вышел из канала.
Метрика и Директ
Офлайн-событие загружается в Метрику, а цель используется в рекламной стратегии.
Какой путь считает Яндекс
В документации Яндекса yclid описан как идентификатор клика из Директа, который добавляется в URL объявления. Для офлайн-событий можно передавать в Метрику идентификатор пользователя или yclid, цель, время события, а также цену и валюту при необходимости. При привязке по yclid конверсия относится к рекламному визиту, связанному с этим идентификатором.
Есть важное ограничение: между визитом с нужным yclid и обработкой офлайн-события не должно пройти больше 21 дня. Поэтому нельзя месяцами копить подписки в таблице и потом надеяться на корректную атрибуцию. События нужно отправлять регулярно, а время конверсии нужно брать из реального момента подписки, а не из момента выгрузки.
Что нужно соблюсти
Идентификатор рекламного клика Директа, который можно отправить в Метрику.
Событие должно успеть сопоставиться с визитом, связанным с кликом.
Метрика принимает офлайн-данные через интерфейс или API-загрузку.
Что можно передавать в Метрику
Для рекламы Telegram обычно нужен yclid, но полезно понимать запасные варианты.
| Критерий | Что это | Когда подходит | Ограничение |
|---|---|---|---|
| YCLID | ID клика из Директа | Платный трафик из объявлений | Должен сохраниться на первом переходе |
| ClientID | ID посетителя Метрики | Резерв, если yclid недоступен | Зависит от cookies и маршрута пользователя |
| UserID | Ваш внутренний ID пользователя | Когда он заранее связан с визитом | Для Telegram-подписки часто требует отдельной авторизации |
Где в этом маршруте находится Strelo Stat
Strelo Stat нужен на участке между рекламным кликом и Telegram-событием. Трекинговая ссылка ведет не сразу в Telegram, а через короткий маршрут вида c с токеном ссылки. На этом шаге сервис сохраняет yclid, UTM, user agent, IP, cookie и другие параметры, а затем отправляет пользователя в нужный Telegram-канал, бот или invite-ссылку.
Когда Telegram сообщает о подписке, Stat связывает вступление с ранее сохраненным кликом. Дальше событие не улетает мгновенно в рекламный кабинет. Сначала работает задержка и проверка удержания: если пользователь вступил и сразу вышел, такое событие лучше не отдавать как качественную конверсию. Иначе Директ будет учиться на мусорном сигнале.
Что делает трекер между кликом и Telegram
Сохраняет клик
Фиксирует yclid, UTM, cookies, user agent и технический контекст перехода.
Ведет в Telegram
После записи клика отправляет пользователя к каналу, боту или invite-ссылке.
Связывает событие
Сопоставляет вступление с исходным кликом, источником, кампанией и креативом.
Отсекает шум
Проверяет, что пользователь остался в канале после задержки, а не ушел сразу.
Готовит отправку
Формирует событие с идентификатором, целью, временем подписки и ценностью.
Дает отчет
Показывает источники, CR, подписки и качество рекламных размещений.
Что настроить в Яндекс Метрике
В Метрике нужна цель типа JavaScript-событие. Название цели лучше сделать стабильным и техническим, например tg_subscribe. Это не видимый рекламный текст, а идентификатор события, по которому вы будете строить отчеты и стратегии. Если позже поменять имя цели, придется аккуратно переносить отчеты и проверять загрузки.
Дальше нужно включить прием офлайн-данных и выбрать способ загрузки: через интерфейс CSV, API или интеграционный слой. Для автоматической работы подходит API загрузки офлайн-конверсий. Он принимает файл в multipart/form-data и параметр client_id_type, где для рекламного клика используется YCLID, а для клиентского идентификатора Метрики используется CLIENT_ID.
Минимальные настройки цели
Без цели в Метрике Директу нечего использовать для стратегии.
| Критерий | Настройка | Рекомендация | Ошибка |
|---|---|---|---|
| Цель | JavaScript-событие | Стабильное имя вроде tg_subscribe | Переименовать после запуска без проверки отчетов |
| Счетчик | Счетчик проекта | Тот же контур, который связан с Директом | Отправлять события в другой счетчик |
| Права | OAuth для API | Права на загрузку офлайн-данных | Токен без доступа к нужному счетчику |
Контракт события для Метрики
Один ряд должен быть достаточен для сопоставления и отчета.
| Критерий | Поле | Что передать | Комментарий |
|---|---|---|---|
| Yclid | Идентификатор клика | Сохраненный yclid из URL объявления | Главный ключ для рекламы из Директа |
| Target | Имя цели | Например tg_subscribe | Должно совпадать с целью в Метрике |
| DateTime | Unix timestamp | Время реальной подписки в секундах | Не миллисекунды и не момент экспорта |
| Price и Currency | Опционально | Ценность подписки и валюта | Используйте только при понятной модели value |
Что настроить в Яндекс Директе
В Директе важно не перепутать цель рекламы и цель оптимизации. Объявление ведет человека по ссылке, где должен сохраняться yclid. А стратегия затем должна использовать цель из Метрики, куда попадают подтвержденные подписки. Если цель создана, но не подключена в стратегии или не накопила событий, алгоритм продолжит учиться по верхним действиям.
Нормальный порядок такой: сначала собрать чистый трекинг клика, потом убедиться, что подписки доходят до Метрики, потом посмотреть статусы загрузок, потом включать цель в оптимизацию. Иначе вы не поймете, почему стратегия не обучается: из-за ссылки, цели, API, задержки событий или малого объема данных.
Как подключать цель к стратегии
Проверьте разметку объявлений
Клик должен проходить через ссылку, где yclid сохраняется до Telegram-перехода.
Создайте цель в Метрике
Выберите стабильное имя и убедитесь, что она видна в счетчике.
Загрузите тестовое событие
Проверьте статус обработки и появление цели в отчетах.
Накопите объем
Не переключайте стратегию, пока нет понятного потока подтвержденных подписок.
Используйте цель в оптимизации
После проверки включите цель в стратегию и следите за качеством подписчиков.
Когда сигнал становится полезным
Мало подписок
Цель полезна для отчетности, но алгоритму может не хватить данных для стабильного обучения.
Регулярный поток
Стратегия начинает видеть разницу между дешевым кликом и реальным вступлением.
Разные качества
Если подписки сильно отличаются по ценности, разделяйте цели или сегменты.
Как выглядит файл или API-загрузка
Яндекс описывает офлайн-данные как CSV с обязательным идентификатором, Target и DateTime. Для yclid это поле Yclid, для клиентского ID Метрики это ClientID. DateTime передается как Unix timestamp в секундах. Price и Currency нужны только если вы хотите передавать ценность события, например подписку с разной прогнозной стоимостью.
Для подписки канала чаще всего достаточно одной цели без выручки. Но если канал продает дорогой продукт, можно назначать ценность по сегментам: подписка из вебинарной кампании, подписка в закрытый канал, подписка после квалифицирующего бота. Главное не придумывать цену задним числом. Если value используется в стратегии, он должен отражать бизнес-логику, а не желание сделать цифры красивее.
Что должно быть в событии
Если отправляете событие по клику Директа, идентификатор должен быть сохранен заранее.
Имя должно совпадать с целью в Метрике.
Берите время подписки, а не время фоновой отправки.
Почему время события критично
Одна из частых ошибок в офлайн-загрузках: отправлять временем конверсии момент экспорта. Для рекламы Telegram это искажает картину. Человек подписался сегодня в 12:10, а worker отправил событие завтра в 09:00 после задержки и проверки. Для атрибуции и отчетов важен момент подписки, а не момент работы фоновой задачи.
В Strelo Stat worker передает в интеграцию время joined_at. Это снижает риск выхода за окно сопоставления и делает отчеты ближе к реальности. Задержка нужна для качества сигнала, но она не должна менять историю события. Если человек вступил в понедельник, отчет должен понимать именно понедельник.
Что делает фоновая задача Stat
Отправка в Метрику должна быть надежной, а не мгновенной любой ценой.
| Критерий | Шаг | Зачем нужен | Что будет без него |
|---|---|---|---|
| Ожидание задержки | Событие лежит в очереди | Отсекает мгновенные выходы | В Директ уйдет шум |
| Проверка членства | getChatMember по пользователю | Подтверждает, что подписчик остался | Качество цели завышено |
| Повторы | Контролируемый retry | Закрывает временные ошибки API | Разовые сбои теряют конверсии |
Как не выйти за окно сопоставления
Не копите события
Отправляйте регулярно, а не одной выгрузкой в конце месяца.
Берите joined_at
Время подписки должно быть историей события, а не временем экспорта.
Старое не лечится
Если связь вышла за окно, не подменяйте дату ради красивого отчета.
Почему yclid лучше резервного ClientID
Если у вас есть yclid, лучше отправлять именно его. Это точный идентификатор рекламного клика Яндекс Директа. ClientID Метрики полезен как резерв, но он зависит от того, как был сохранен идентификатор посетителя, не потерялись ли cookies и совпал ли пользовательский маршрут. Для Telegram-переходов резерв важен, но основной сигнал для Директа обычно должен строиться вокруг yclid.
При этом нельзя насильно придумывать yclid. Если пользователь пришел из органики, переслал ссылку другу или вступил без рекламного клика, событие не нужно подгонять под Директ. В отчетах такая подписка может жить как органика или неизвестный источник. Это честнее, чем портить обучение рекламной системы неподтвержденными связками.
YCLID против резервного ClientID
- Связан с конкретным рекламным кликом Директа.
- Лучше подходит для оптимизации кампании по платному трафику.
- Не требует угадывать пользователя после перехода в Telegram.
- Если человек пришел не из Директа, yclid не будет.
- Если ссылка обошла трекер, идентификатор потеряется.
- Если нужно анализировать веб-маршрут, ClientID может быть полезным дополнением.
Где чаще всего ломается передача
Первый сбой: ссылка объявления ведет сразу в Telegram и не проходит через трекер. Тогда yclid не сохраняется. Второй сбой: yclid есть в URL, но на редиректе он теряется. Третий: Telegram-событие не связывается с кликом, потому что пользователь вступил другим путем. Четвертый: цель в Метрике создана с другим именем. Пятый: событие старше 21 дня.
Есть и операционные сбои. OAuth-токен Метрики не имеет права на загрузку офлайн-данных. Счетчик не тот. CSV собран в неправильной кодировке. DateTime передан в миллисекундах вместо секунд. Статус загрузки завис на ошибке сопоставления. Эти вещи не исправляются текстом объявления, их нужно проверять как инженерный маршрут.
Пять причин, почему цель не доезжает
Обход трекера
Объявление ведет сразу в Telegram, и yclid не сохраняется.
Потеря параметров
Редирект или сокращатель удаляет yclid и UTM до записи клика.
Другая цель
В CSV или API отправляется имя, которого нет в Метрике.
Старое событие
Подписку пытаются сопоставить после допустимого окна.
Права API
OAuth-токен не имеет доступа к нужному счетчику или загрузке.
Неверный формат
Дата в миллисекундах, не UTF-8, неправильный client_id_type или битый CSV.
Как читать обработку загрузки
Смотрите не только факт отправки, но и результат сопоставления.
| Критерий | Что видно | Вероятный смысл | Что проверить |
|---|---|---|---|
| Файл принят | Загрузка дошла до Метрики | Формат не обязательно уже сопоставлен | Статус дальнейшей обработки |
| Сопоставлений мало | Часть событий не нашла визит | Проблема с ID или сроком | yclid, DateTime, 21 день |
| Цель не видна | Событие не попало в отчеты | Имя цели или счетчик не совпали | Target, counterId, права |
Как читать статусы загрузки
У API Метрики есть статусы обработки офлайн-конверсий. На практике маркетологу важны не сами названия, а диагностика. Если файл загружен, но события не сопоставились, проблема может быть в идентификаторах, сроках или цели. Если обработка не дошла до экспорта, смотрите формат файла, права и счетчик.
Не стоит оценивать интеграцию через пять минут после первой отправки. Официальная справка Метрики указывает, что данные могут появиться в отчетах в течение двух часов. Для рекламной оптимизации может потребоваться больше времени и достаточный объем событий. Поэтому первый тест лучше считать техническим: событие принято, статус понятен, цель видна. Только после этого включать оптимизацию.
Минимальные контрольные точки
Проверяется в записи трекинговой ссылки.
Событие связано с кликом и каналом.
Видно, принята ли загрузка и сопоставились ли события.

Как проверить всю цепочку перед рекламным бюджетом
Тест нужно делать не в продовой кампании с большим бюджетом, а на отдельной ссылке и одном контролируемом вступлении. Создайте ссылку с UTM и рекламным параметром, пройдите по ней, вступите в канал, дождитесь задержки, проверьте запись клика, запись подписки, очередь конверсий, запрос в Метрику и статус загрузки.
Если в тесте есть хотя бы одно ручное действие, зафиксируйте его. Например, цель в Метрике создается вручную, OAuth выдается вручную, канал привязывается вручную. В рабочей инструкции должно быть понятно, кто отвечает за каждый шаг. Иначе при следующей кампании команда снова будет искать, почему Директ не видит цель.
Тестовая проверка перед бюджетом
Создайте отдельную ссылку
Не смешивайте тест с реальной кампанией и старыми переходами.
Пройдите по ссылке
Убедитесь, что yclid и UTM записались в клик.
Вступите в канал
Проверьте связку подписки с кликом и Telegram-пользователем.
Дождитесь проверки
Worker должен подтвердить, что пользователь остался в канале.
Проверьте Метрику
Событие должно принять статус обработки и появиться в отчетах после задержки.
Что считать готовым запуском
Без этой проверки оптимизация может учиться на неправильном сигнале.
| Критерий | Проверка | Хороший результат | Красный флаг |
|---|---|---|---|
| Ссылка | Клик проходит через Stat | yclid сохранен в записи | Переход сразу в Telegram |
| Подписка | Telegram-событие пришло | Есть связь с кликом | Подписка видна, источник пустой |
| Метрика | Событие отправлено | Цель принята и сопоставлена | Ошибка идентификатора или цели |
| Директ | Цель доступна для стратегии | Есть стабильный объем событий | Стратегия включена до проверки |
Как использовать цель в оптимизации
После проверки цель можно использовать в стратегии Директа. Но нужно помнить: алгоритму нужен объем. Если канал получает одну подписку в неделю, цель будет полезна для отчетности, но не всегда даст стабильное автообучение. Если подписок десятки и сотни, сигнал становится заметно полезнее: Директ видит не просто клики, а людей, которые дошли до Telegram.
Не смешивайте разные качества в одну цель. Подписка на открытый развлекательный канал, заявка в бот и оплата курса дают разную ценность. Если все это назвать одним событием, оптимизация будет неясной. Для старта достаточно одной чистой подписки. Потом можно добавить отдельные цели для заявки, оплаты или удержания после нескольких дней.
Как выбирать цель для стратегии
Не все события одинаково полезны для алгоритма.
| Критерий | Цель | Когда использовать | Когда не использовать |
|---|---|---|---|
| Клик | Верхнее действие | Для старта без данных | Когда уже есть подписки |
| Подписка | Канал или бот | Главная цель роста аудитории | Если не проверяется удержание |
| Заявка | Бот или CRM | Когда подписка сама не равна ценности | Если заявок слишком мало |
| Оплата | Нижняя воронка | Для зрелых кампаний с объемом | Если продаж мало и алгоритм голодает |
Лестница сигналов
Клик
Дешевый и частый сигнал, но слабая связь с ценностью Telegram-канала.
Подписка
Лучший минимум для рекламы канала, если событие подтверждено.
Заявка
Показывает интерес после подписки и помогает отличать холодную аудиторию.
Оплата
Самый ценный сигнал, но часто требует большего объема и более длинного окна.
Что отдавать, если канал продает не сразу
Многие Telegram-каналы не продают в день подписки. Человек сначала читает контент, потом переходит в бот, потом оставляет заявку или покупает курс. В этом случае подписка остается важной целью верхнего уровня, но ее нужно связывать с более поздними событиями. Иначе реклама будет приводить подписчиков, которые не доходят до денег.
Практичный подход: сначала наладить подписку как чистую офлайн-конверсию, потом добавить события ниже по воронке. Например, подписался, написал в бот, получил консультацию, оплатил. Для Директа это разные уровни обучения. Для команды это карта качества источников: кто дает дешевую подписку, кто дает дорогую, но платежеспособную аудиторию.
Пример качества источника после подписки
Иллюстративная воронка показывает, почему подписку лучше не считать финальной продажей.
Какие события добавить позже
Переход в бота
Показывает, что подписчик готов к следующему действию, а не просто читает канал.
Заявка
Полезна для онлайн-школ, консультаций и продаж через менеджера.
Оплата
Нижний сигнал для зрелых кампаний, где уже накоплен объем.
Когда не нужно отправлять событие
Не каждая подписка заслуживает отправки в рекламную систему. Если нет yclid или надежного клиентского идентификатора, событие не к чему привязать. Если пользователь вступил и быстро вышел, лучше не учить стратегию на таком действии. Если событие слишком старое, оно может не сопоставиться. Если цель создана для другой кампании, отправка исказит аналитику.
Это не потеря данных. Это гигиена атрибуции. Внутри Stat такие события можно хранить и анализировать отдельно: органика, неатрибутированные вступления, спорные переходы, отписки. Но в Директ лучше отдавать только тот сигнал, которому можно доверять.
Когда событие лучше не отдавать в Директ
Иногда честно не отправить событие полезнее, чем испортить обучение.
| Критерий | Ситуация | Почему риск | Что делать |
|---|---|---|---|
| Нет идентификатора | yclid и резервный ID пустые | Нет связи с рекламным визитом | Хранить как органику или неизвестный источник |
| Быстрый выход | Пользователь вступил и ушел | Сигнал не отражает ценность | Отсекать через задержку и проверку членства |
| Старое событие | Прошло слишком много времени | Сопоставление может не пройти | Не подменять дату, исправить процесс |
Минимальный план внедрения
Для первого запуска не нужно строить сложную BI-систему. Достаточно одной рекламной кампании, одного канала, одной цели в Метрике, одной трекинговой ссылки и одного проверенного маршрута загрузки. Когда этот маршрут работает, можно масштабировать на креативы, сегменты, разные каналы и нижние события.
Если у вас уже есть рекламный трафик, начните не с оптимизации, а с инвентаризации ссылок. Какие объявления ведут сразу в Telegram. Где теряется yclid. Какая цель в Метрике должна принять подписку. Есть ли задержка перед отправкой. Кто смотрит статусы загрузки. Ответы на эти вопросы важнее, чем очередная таблица с кликами.
Минимальный план запуска
Создайте цель
В Метрике заведите событие для подтвержденной Telegram-подписки.
Соберите трекинговую ссылку
Объявление должно проходить через Stat, чтобы сохранить yclid.
Подключите Метрику в Stat
Укажите счетчик, имя цели и OAuth-доступ для загрузки.
Проведите тест
Проверьте один контролируемый клик, подписку и загрузку.
Включайте оптимизацию
Только после того, как цель видна и накопился поток событий.
Перед стартом кампании
yclid сохраняется
Тестовая ссылка пишет идентификатор до перехода в Telegram.
Подписка связана
Событие Telegram нашло исходный клик и канал.
Цель принята
Метрика видит событие после обработки загрузки.
Есть задержка
Мгновенные выходы не отправляются как качественная конверсия.
Есть объем
У цели достаточно событий для отчетности и будущей оптимизации.
Есть владелец
Понятно, кто смотрит статусы, ошибки и качество источников.
Итог
Передача подписки в рекламную оптимизацию состоит из четырех контуров: Яндекс Директ дает клик и yclid, Strelo Stat сохраняет идентификатор и связывает его с Telegram-событием, Метрика принимает офлайн-конверсию, а Директ использует цель для стратегии. Если убрать любой контур, останется либо клик без подписки, либо подписка без рекламной атрибуции.
Хорошая настройка не выглядит как SEO-магия или ручная выгрузка раз в месяц. Это аккуратный технический маршрут: ссылка, идентификатор, подписка, проверка, загрузка, статус, цель и оптимизация. Именно так подписка становится управляемым рекламным сигналом, а не просто красивым ростом числа участников.
Передавайте в рекламу подтвержденные Telegram-подписки
Strelo Stat сохраняет рекламный клик, связывает его с вступлением в Telegram, проверяет качество подписки и помогает отправлять цель в рекламные системы.
Открыть Strelo StatЧастые вопросы
Подписка отправляется прямо в Яндекс Директ?
Обычно нет. Событие загружается в Яндекс Метрику как офлайн-конверсия, а Директ использует цель Метрики для отчетности и стратегии.
Какой идентификатор нужен для подписки из Директа?
Главный идентификатор - yclid из рекламной ссылки. Его нужно сохранить на первом переходе до того, как пользователь уйдет в Telegram.
Какую цель создавать в Метрике?
Подходит цель типа JavaScript-событие со стабильным именем, например tg_subscribe. Имя должно совпадать с Target в офлайн-загрузке.
Почему важен DateTime в секундах?
Метрика ожидает Unix timestamp в секундах. Для подписки нужно передавать время вступления, а не время выгрузки события worker-ом.
Когда цель появится в отчетах?
Официальная справка Метрики указывает, что данные могут появиться в отчетах в течение двух часов после загрузки. Для оптимизации стратегии также нужен достаточный объем событий.
Можно ли передавать цену подписки?
Можно, если у вас есть понятная модель ценности. Для простого старта чаще достаточно события подписки без Price и Currency.
