Как работает атрибуция

yclid, direct_campaign_id, vk_click_id: как Maxiflow связывает клик с подпиской.

Обновлено: 2026-07-06

Задача атрибуции — понять, из какого рекламного клика пришёл конкретный подписчик MAX-канала. Maxiflow сохраняет метки клика на своём редиректе, переносит их через MAX-подписку и записывает в лид. Дальше эти же метки уходят обратно в Метрику как офлайн-конверсия.

Путь клика: от рекламы до лида

Рекламная ссылка ведёт не сразу в MAX, а на промежуточный редирект Maxiflow: /r/<bot>?yclid=...&c=...&post=.... Готовые ссылки собираются в /traffic под нужный источник (Директ, VK или универсальная).

На редиректе Maxiflow делает три вещи одновременно:

  1. Пишет клик в таблицу сессий: yclid, direct_campaign_id (параметр c), vk_click_id (параметр rb_clickid) и IP клиента.
  2. Ставит куку mfx_sid на 30 дней — по ней сессия найдётся, когда пользователь вернётся с MAX-поста.
  3. Инициализирует счётчик Метрики тенанта и дожидается подтверждения hit callback, только потом редиректит дальше. Без этого визит с yclid не успевает зарегистрироваться и офлайн-конверсия не сматчится.

Куда ведёт редирект

Дальнейший путь зависит от того, указан ли post в URL или channel_post_url у бота.

  • Есть пост: пользователь попадает на пост в канале. Под постом — кнопка на /g/<bot>. Когда её нажимают, браузер отдаёт куку mfx_sid, Maxiflow поднимает сессию и открывает чат с ботом с start=mfxsess_<id>. Бот по этому токену достаёт yclid из БД.
  • Нет поста: пользователь идёт сразу в чат бота с start-пейлоадом вида yclid_<id>_c_<campaign>_vk_<clickid>. Никакой куки не нужно — метки едут прямо в payload.

Как только пользователь подписывается на канал, бот видит нового участника и создаёт лид. В лид записываются yclid, direct_campaign_id, vk_click_id из сессии или из start-payload.

VK Реклама

Для VK используется тот же редирект /r/<bot>, но метка называется rb_clickid — это макрос {{clickid}} из рекламного кабинета VK. Maxiflow валидирует формат (буквы, цифры, дефис, 6–64 символа) и сохраняет как vk_click_id. Дальше он живёт в сессии, попадает в start-payload как vk_<clickid> и записывается в лид рядом с yclid.

Прямой заход без метки

Если пользователь пришёл на пост без параметров или подписался напрямую через MAX-поиск, у лида не будет ни yclid, ни direct_campaign_id, ни vk_click_id. В интерфейсе такой лид помечен как Органика:

  • В карточке диалога /chat в блоке «Источник» стоит «Органика».
  • В /subscribers в колонке источника — чип «Органика».
  • В /dashboard эти лиды попадают в сегмент «Органика» на кольцевой диаграмме «Откуда приходят».

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

Fallback по IP для Mini App

Куки не всегда доезжают через MAX-WebView. Если по куке mfx_sid не удалось найти сессию с yclid, /api/mini/check дополнительно ищет по IP клиента за последние 30 минут — но только сессии с непустым yclid. Если находит — использует её yclid для лида. Это спасает атрибуцию в мобильных сценариях, где браузер MAX не шарит куки с страницей редиректа.

Как читать сводку в кабинете

Основные срезы по атрибуции собираются на /dashboard:

  • Плитка Из рекламы — все лиды, у которых есть yclid. Рядом подпись «органика: N» — лиды без метки.
  • Кольцо Откуда приходят — та же разбивка визуально.
  • Фильтр наверху страницы: «Все источники», «Только реклама», «Органика», «Кампания…» — переключает срез всех графиков ниже.
  • График Динамика подписчиков — входы в бота по дням за последние 28 дней.

Стоимость по конкретным кампаниям Директа считается в /campaigns: CPL = расход кампаний / лиды, у которых есть yclid и subscribed_at. Заходы в бота без подписки в CPL не попадают.

Если Метрика показывает «Привязано 0 строк из 1», проверьте, что рекламные ссылки указывают именно на /r/<bot>, а не напрямую на max.ru. Без промежуточного редиректа Метрика не видит yclid в визите и не может сматчить офлайн-конверсию.

Что дальше