ГлавнаяПолезное → Офлайн-конверсии

Офлайн-конверсии из Telegram и MAX: Директ, VK и Facebook

Инструкция · Конверсии · Настройка ·

Офлайн-конверсия — это целевое действие, которое произошло не на сайте: человек подписался на канал или оплатил в боте. Рекламные кабинеты умеют принимать такие события и учиться на них — но их нужно туда доставить. Для Telegram и MAX это единственный способ показать Директу, VK и Facebook, что реклама сработала.

Зачем каналу офлайн-конверсии

Без них кабинет видит только клики и оптимизируется на «кликеров». С офлайн-конверсиями он видит реальные подписки и оплаты — и начинает искать похожую целевую аудиторию. Цена подписчика и платящего клиента падает без ручной работы с кампанией.

Проблема мессенджеров в том, что ссылка t.me/… или max.ru/… открывает приложение, а не страницу со счётчиком — обычная UTM-метка теряется. Решение: трекинг-ссылка, которая фиксирует клик и его источник до перехода в мессенджер.

Настройка: Яндекс Директ (через Метрику)

Если конверсии «приняты», но не засчитываются — разбор причин в статье почему конверсия не доходит из Метрики в Директ.

Настройка: VK Реклама

Настройка: Facebook / Instagram (Meta)

Какие события передавать

Минимум — подписку: кабинет учится приводить подписчиков. Максимум пользы — ещё и оплату и глубокие шаги воронки: тогда реклама оптимизируется на платящих. Подробно — в гайде оптимизация рекламы на покупку.

Особенности 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 Метрика показывает построчную диагностику привязки: по каждой строке видно идентификатор, статус и причину, если событие не привязалось. Это первое, куда стоит смотреть при отладке, — раньше приходилось догадываться.

Чек-лист перед первой загрузкой

  1. Создайте цели в счётчике. Без цели привязывать событие некуда. Тип — «JavaScript-событие», условие — точное совпадение с именем, которое вы передаёте (например tracker_subscribe).
  2. Включите в счётчике приём офлайн-конверсий. Отдельная опция в настройках; без неё загрузка не работает.
  3. Проверьте номер счётчика. Классическая потеря данных — конверсии уходят в чужой или тестовый счётчик, и всё «работает» без результата.
  4. Убедитесь, что клик-идентификатор доживает до подписки. Если yclid теряется на промежуточном редиректе, привязывать будет нечего.
  5. Проверьте, что нет дублей интеграции. Мы у себя нашли три одинаковых получателя на один счётчик — при живом трафике каждая конверсия уехала бы трижды и испортила статистику кампании.
  6. После первой отправки откройте отчёт загрузок и убедитесь, что статус LINKED, а не LINKAGE_FAILURE. Не «через месяц по результатам», а в тот же день.

Пять причин, по которым конверсии не привязались

СимптомПричинаЧто делать
Файлы приняты, привязок нольВ счётчике не созданы цели или не включён приём офлайн-конверсийСоздать цели с точным совпадением имени, включить опцию
Привязывается часть событийЧасть подписок пришла позже окна 21 деньОтправлять потоком, а не пакетами раз в месяц
В Метрике конверсии есть, в Директе нетЦель не выбрана в настройках кампании либо ещё не набрала статистикуРазбор — в статье «Конверсии в Метрике есть, а в Директе нет»
Конверсий втрое больше реальныхДубли интеграции на один счётчикОставить одного получателя, лишних удалить
Ни одной привязки с самого стартаКлик-идентификатор не доходит до момента подпискиПроверить цепочку редиректов, ловить yclid на входе

VK Реклама и Meta: те же принципы, другие идентификаторы

Механика везде одинаковая — меняется только идентификатор клика и способ отправки:

Общее правило для всех систем: поймать клик-идентификатор на входе и не потерять его до момента подписки. Всё остальное — детали формата. Если идентификатор потерян, никакая интеграция уже не поможет: связать подписку с объявлением будет нечем.

Три отчёта, по которым видно, что цепочка работает

Передача конверсий — цепочка из четырёх звеньев: клик → сохранение идентификатора → отправка события → привязка на стороне рекламной системы. Ломается любое, а выглядит это одинаково: «конверсий нет». Поэтому проверять надо по звеньям, а не по общему результату.

ЗвеноГде смотретьЧто должно быть видно
Клик по объявлениюСтатистика рекламной кампанииПереходы есть, и их число похоже на число зафиксированных вами клик-идентификаторов
Отправка событияЛоги или интерфейс вашего трекераСобытия уходят, ошибок отправки нет
Приём и привязкаОтчёт загрузок офлайн-конверсий счётчикаСтатус LINKED. Если LINKAGE_FAILURE — дальше данные не идут
Учёт в кампанииОтчёты рекламного кабинета по целиКонверсии появляются в разрезе объявлений

Разрыв между вторым и третьим звеном — самый частый и самый незаметный: у вас всё «отправлено успешно», а привязки нет. Именно поэтому проверять надо конец цепочки, а не свой участок.

Какие события стоит передавать помимо подписки

Подписка — первое осмысленное событие, но не единственное. Чем глубже событие вы передаёте, тем точнее рекламная система понимает, кто вам нужен.

Логика выбора простая: передавайте самое глубокое событие, которого набирается хотя бы несколько десятков в месяц. Если оплат единицы, алгоритму не на чем учиться — тогда оптимизируйтесь на подписку, а оплаты передавайте как дополнительную цель для отчётности. Подробный разбор — в статье об оптимизации на покупку.

Сколько ждать эффекта

Передача конверсий — не переключатель, а обучение алгоритма. После подключения полезно держать в голове три вещи.

  1. Алгоритму нужен объём. Пока конверсий по цели мало, кампания продолжает работать почти как раньше — статистики для решений недостаточно.
  2. Данные не задним числом. Окно привязки 21 день означает, что «догрузить историю за квартал» не получится: обучение начинается с момента, когда данные пошли.
  3. Сначала проверка, потом бюджеты. Убедитесь, что статус привязки LINKED, и только потом увеличивайте расходы. Иначе рискуете масштабировать кампанию, которая учится на пустоте.

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

Нужен ли сайт или счётчик на странице для офлайн-конверсий?
Нет. Событие (подписка или оплата) передаётся в кабинет напрямую по трек-ссылке и постбэку — код на сайт ставить не нужно. Для Facebook используется серверный Conversions API.
В какие системы можно передавать конверсии?
В Яндекс Директ (через цель в Метрике), VK Рекламу (пиксель Top.Mail.Ru) и Facebook/Instagram (Conversions API) — одновременно во все три.
Конверсия «принята», но не засчитывается — почему?
Чаще всего цель не создана или её идентификатор не совпадает, счётчик не привязан к кампании, либо конверсия вышла за окно атрибуции. Полный разбор — в статье про то, почему конверсия не доходит из Метрики в Директ.
Почему Метрика отвечает 200, а конверсий в отчётах нет?
Ответ 200 означает только то, что файл принят. Привязка проверяется отдельно — в отчёте загрузок офлайн-конверсий по счётчику. Самая частая причина нулевой привязки: в счётчике не созданы цели с именами, которые вы передаёте, или не включён приём офлайн-конверсий.
За какой период можно догрузить офлайн-конверсии?
Событие привяжется, если между последним визитом посетителя и обработкой файла прошло не больше 21 дня. Более старые данные не привяжутся, и восстановить их нельзя — поэтому конверсии отправляют потоком, а не пакетами раз в месяц.
Какой идентификатор выбрать для рекламы канала?
yclid для Яндекс Директа, rb_clickid для VK Рекламы, fbclid (через параметр fbc и Conversions API) для Meta, gclid для Google Ads. Главное — сохранить идентификатор с момента клика до момента подписки.

Настройте офлайн-конверсии за пару минут

Tracker-bot передаёт подписки и оплаты канала в Директ, VK и Facebook без лендинга и кода. 7 дней бесплатно.

🚀 Попробовать бесплатно