Офлайн-конверсии из Telegram и MAX: Директ, VK и Facebook
Офлайн-конверсия — это целевое действие, которое произошло не на сайте: человек подписался на канал или оплатил в боте. Рекламные кабинеты умеют принимать такие события и учиться на них — но их нужно туда доставить. Для Telegram и MAX это единственный способ показать Директу, VK и Facebook, что реклама сработала.
Зачем каналу офлайн-конверсии
Без них кабинет видит только клики и оптимизируется на «кликеров». С офлайн-конверсиями он видит реальные подписки и оплаты — и начинает искать похожую целевую аудиторию. Цена подписчика и платящего клиента падает без ручной работы с кампанией.
Проблема мессенджеров в том, что ссылка t.me/… или max.ru/… открывает приложение, а не страницу со счётчиком — обычная UTM-метка теряется. Решение: трекинг-ссылка, которая фиксирует клик и его источник до перехода в мессенджер.
Настройка: Яндекс Директ (через Метрику)
- В Яндекс.Метрике создайте цель типа «JavaScript-событие» с идентификатором из инструкции сервиса.
- Привяжите счётчик к рекламной кампании в Директе.
- Сервис передаёт подписки и оплаты как офлайн-конверсии по этой цели — код на сайт ставить не нужно.
Если конверсии «приняты», но не засчитываются — разбор причин в статье почему конверсия не доходит из Метрики в Директ.
Настройка: VK Реклама
- Создайте пиксель Top.Mail.Ru в кабинете VK Рекламы.
- Укажите его ID в сервисе — события полетят прямо в пиксель.
- Офлайн-конверсии включать отдельно не нужно: подписки и оплаты приходят как события пикселя.
Настройка: Facebook / Instagram (Meta)
- Возьмите ID пикселя Meta и сгенерируйте токен Conversions API (Events Manager → пиксель → Conversions API).
- Вставьте пиксель и токен в сервис.
- События уходят через Conversions API — серверная передача, без пикселя на сайте.
Какие события передавать
Минимум — подписку: кабинет учится приводить подписчиков. Максимум пользы — ещё и оплату и глубокие шаги воронки: тогда реклама оптимизируется на платящих. Подробно — в гайде оптимизация рекламы на покупку.
Особенности MAX
Для MAX-каналов настройка кабинетов та же (VK/Директ/Facebook — это рекламные системы, не платформа канала). Отличия — в источнике события: в MAX нет Tribute, а идентификатор пользователя — это ID MAX, а не Telegram.
Офлайн-конверсии в Яндекс Метрике: механика загрузки
Передача офлайн-конверсий в Метрику работает по одному принципу: вы отдаёте файл, в котором каждая строка — событие, привязанное к идентификатору посетителя или клика. Метрика поддерживает четыре типа идентификаторов, и от выбора зависит, что вы вообще сможете оптимизировать.
| Идентификатор | Откуда берётся | Когда использовать для канала |
|---|---|---|
| yclid | Параметр клика по объявлению Яндекс Директа | Основной вариант для рекламы канала: событие привязывается к конкретному объявлению, и Директ учится на подписках |
| ClientID | Автоматический идентификатор посетителя, который присваивает счётчик | Если человек сначала попал на ваш сайт, а подписался позже |
| UserID | Ваш собственный идентификатор пользователя, переданный в счётчик | Когда есть личный кабинет и вы сами связываете пользователя с визитом |
| PurchaseId | Идентификатор покупки электронной коммерции | Для дозагрузки данных об уже совершённых покупках |
Для рекламы Telegram- и MAX-каналов рабочий идентификатор — yclid. Логика такая: человек кликает по объявлению, в ссылке приходит yclid, вы его сохраняете, а когда этот же человек подписался на канал — отправляете в Метрику строку «этот yclid совершил цель подписка в такое-то время». Метрика привязывает событие к визиту, источником которого было объявление, и Директ получает сигнал, какое именно объявление приносит подписчиков.
Ровно так работает передача конверсий из Telegram и MAX в Яндекс Директ: клик-идентификатор ловится на переходе, подписка сопоставляется с ним и уходит в счётчик как офлайн-конверсия.
Окно 21 день: почему опоздавшая конверсия не считается
Ключевое ограничение, о которое спотыкаются почти все: конверсия привяжется к визиту, только если между последним визитом посетителя и моментом обработки файла прошло не больше 21 дня. Всё, что вы попытаетесь догрузить позже, не привяжется — молча, без ошибки.
Практический вывод: отправлять события нужно потоком, а не «выгрузим за квартал и зальём». Если вы копите подписки в таблице и грузите раз в месяц, половина данных уже мертва к моменту загрузки. И отдельно — исторические данные восстановить нельзя: пропущенное окно закрывается навсегда.
Почему ответ 200 не значит, что конверсия зачтена
Это самая дорогая ошибка в теме офлайн-конверсий, и мы поймали её на своём боевом клиенте. Ситуация была такая: 283 клика по объявлениям, 21 подписка, ноль ошибок отправки, Метрика на каждый файл отвечает 200 OK. По всем нашим логам — идеальная картина.
Реальность выяснилась только из отчёта загрузок на стороне счётчика: 277 конверсий из 304 в статусе LINKAGE_FAILURE, привязано — ноль. Причина оказалась не в передаче, а в настройке счётчика: в нём не было создано ни одной цели, к которой можно привязать событие. Файлы принимались, складывались и не привязывались ни к чему.
Запомните формулу: HTTP 200 = «файл принят», а не «конверсия учтена». Конец цепочки видно только в отчёте о загрузках офлайн-конверсий:
GET /management/v1/counter/{id}/offline_conversions/uploadings
Там для каждой загрузки видны статусы. Если у вас LINKAGE_FAILURE — данные до Директа не дошли, сколько бы двухсоток ни было в ваших логах. А поскольку окно привязки — 21 день, за время «всё же работает» теряется весь исторический массив, на котором кампания могла бы обучиться.
С июня 2026 Метрика показывает построчную диагностику привязки: по каждой строке видно идентификатор, статус и причину, если событие не привязалось. Это первое, куда стоит смотреть при отладке, — раньше приходилось догадываться.
Чек-лист перед первой загрузкой
- Создайте цели в счётчике. Без цели привязывать событие некуда. Тип — «JavaScript-событие», условие — точное совпадение с именем, которое вы передаёте (например
tracker_subscribe). - Включите в счётчике приём офлайн-конверсий. Отдельная опция в настройках; без неё загрузка не работает.
- Проверьте номер счётчика. Классическая потеря данных — конверсии уходят в чужой или тестовый счётчик, и всё «работает» без результата.
- Убедитесь, что клик-идентификатор доживает до подписки. Если
yclidтеряется на промежуточном редиректе, привязывать будет нечего. - Проверьте, что нет дублей интеграции. Мы у себя нашли три одинаковых получателя на один счётчик — при живом трафике каждая конверсия уехала бы трижды и испортила статистику кампании.
- После первой отправки откройте отчёт загрузок и убедитесь, что статус
LINKED, а неLINKAGE_FAILURE. Не «через месяц по результатам», а в тот же день.
Пять причин, по которым конверсии не привязались
| Симптом | Причина | Что делать |
|---|---|---|
| Файлы приняты, привязок ноль | В счётчике не созданы цели или не включён приём офлайн-конверсий | Создать цели с точным совпадением имени, включить опцию |
| Привязывается часть событий | Часть подписок пришла позже окна 21 день | Отправлять потоком, а не пакетами раз в месяц |
| В Метрике конверсии есть, в Директе нет | Цель не выбрана в настройках кампании либо ещё не набрала статистику | Разбор — в статье «Конверсии в Метрике есть, а в Директе нет» |
| Конверсий втрое больше реальных | Дубли интеграции на один счётчик | Оставить одного получателя, лишних удалить |
| Ни одной привязки с самого старта | Клик-идентификатор не доходит до момента подписки | Проверить цепочку редиректов, ловить yclid на входе |
VK Реклама и Meta: те же принципы, другие идентификаторы
Механика везде одинаковая — меняется только идентификатор клика и способ отправки:
- VK Реклама — клик помечается параметром
rb_clickid. Его нужно сохранить на переходе и передать вместе с офлайн-событием в пиксель, чтобы система связала подписку с объявлением. - Meta (Facebook и Instagram) — работает через Conversions API: из
fbclidсобирается параметрfbc, и событие уходит серверным запросом, минуя браузер. - Google Ads — идентификатор клика
gclid, загрузка офлайн-конверсий по нему же.
Общее правило для всех систем: поймать клик-идентификатор на входе и не потерять его до момента подписки. Всё остальное — детали формата. Если идентификатор потерян, никакая интеграция уже не поможет: связать подписку с объявлением будет нечем.
Три отчёта, по которым видно, что цепочка работает
Передача конверсий — цепочка из четырёх звеньев: клик → сохранение идентификатора → отправка события → привязка на стороне рекламной системы. Ломается любое, а выглядит это одинаково: «конверсий нет». Поэтому проверять надо по звеньям, а не по общему результату.
| Звено | Где смотреть | Что должно быть видно |
|---|---|---|
| Клик по объявлению | Статистика рекламной кампании | Переходы есть, и их число похоже на число зафиксированных вами клик-идентификаторов |
| Отправка события | Логи или интерфейс вашего трекера | События уходят, ошибок отправки нет |
| Приём и привязка | Отчёт загрузок офлайн-конверсий счётчика | Статус LINKED. Если LINKAGE_FAILURE — дальше данные не идут |
| Учёт в кампании | Отчёты рекламного кабинета по цели | Конверсии появляются в разрезе объявлений |
Разрыв между вторым и третьим звеном — самый частый и самый незаметный: у вас всё «отправлено успешно», а привязки нет. Именно поэтому проверять надо конец цепочки, а не свой участок.
Какие события стоит передавать помимо подписки
Подписка — первое осмысленное событие, но не единственное. Чем глубже событие вы передаёте, тем точнее рекламная система понимает, кто вам нужен.
- Клик или переход — техническое событие, годится для проверки, что цепочка вообще жива. Оптимизировать на него не нужно: система начнёт искать самые дешёвые клики.
- Подписка на канал — базовая цель для набора аудитории. Подходит, когда задача — рост базы.
- Активность после подписки — например, первое сообщение боту. Отсекает тех, кто подписался и забыл.
- Заявка или оплата — то, что реально стоит денег. Оптимизация на это событие даёт дороже подписку и дешевле клиента.
Логика выбора простая: передавайте самое глубокое событие, которого набирается хотя бы несколько десятков в месяц. Если оплат единицы, алгоритму не на чем учиться — тогда оптимизируйтесь на подписку, а оплаты передавайте как дополнительную цель для отчётности. Подробный разбор — в статье об оптимизации на покупку.
Сколько ждать эффекта
Передача конверсий — не переключатель, а обучение алгоритма. После подключения полезно держать в голове три вещи.
- Алгоритму нужен объём. Пока конверсий по цели мало, кампания продолжает работать почти как раньше — статистики для решений недостаточно.
- Данные не задним числом. Окно привязки 21 день означает, что «догрузить историю за квартал» не получится: обучение начинается с момента, когда данные пошли.
- Сначала проверка, потом бюджеты. Убедитесь, что статус привязки
LINKED, и только потом увеличивайте расходы. Иначе рискуете масштабировать кампанию, которая учится на пустоте.
Частые вопросы
Нужен ли сайт или счётчик на странице для офлайн-конверсий?
В какие системы можно передавать конверсии?
Конверсия «принята», но не засчитывается — почему?
Почему Метрика отвечает 200, а конверсий в отчётах нет?
За какой период можно догрузить офлайн-конверсии?
Какой идентификатор выбрать для рекламы канала?
Настройте офлайн-конверсии за пару минут
Tracker-bot передаёт подписки и оплаты канала в Директ, VK и Facebook без лендинга и кода. 7 дней бесплатно.
🚀 Попробовать бесплатно