За восемь дней мы привели в региональный новостной канал MAX 208 подписчиков и потратили 7 577 ₽ — это 36 ₽ за подписку в среднем. В первый полный день подписка стоила около 100 ₽, на пятый — 17 ₽.
Разница не в ставках и не в креативах. Она в том, что Директ научился считать подписку, а не клик по кнопке. Ниже — как это устроено, что пришлось собрать своими руками и на чём мы спотыкались.
Что вообще можно рекламировать в MAX через Директ
Путей два, и они решают разные задачи.
Первый — рекламные посты в чужих каналах MAX. Это сценарий «Реклама в мессенджерах»: Директ подбирает каналы из Рекламной сети или вы выбираете их в каталоге, пост выходит в канале и живёт 48 часов. Про этот путь мы подробно писали в обзоре способов рекламы в MAX.
Второй — обычная реклама Директа, которая ведёт человека в ваш канал. Поиск, сети, ретаргетинг: всё как всегда, только на конце воронки стоит подписка. Этим путём пошли мы: каналу нужны подписчики.
Почему нельзя вести рекламу прямо на канал
Ссылку на канал в объявление поставить нетрудно. Проблема в том, что вы ослепнете.
В канале нет счётчика Метрики. Директ увидит клик, а что было дальше — подписался человек или закрыл приложение — не узнает никто. Автостратегии в такой схеме учатся на кликах и исправно приводят тех, кто любит нажимать.
Поэтому между объявлением и каналом ставят посадочную страницу. На ней стоит счётчик, она объясняет, что за канал и зачем на него подписываться, и уже с неё человек уходит в мессенджер. Плата за это — лишний шаг в воронке. Выигрыш — вы начинаете видеть, что происходит.
Как Директ узнаёт о подписке: механика по шагам
Подписка происходит вне сайта, и Метрика её не видит. Значит, факт подписки нужно поймать и вернуть в Метрику руками — офлайн-конверсией. Вот цепочка целиком.
Шаг 1. Лендинг забирает идентификаторы. При загрузке страница берёт из адреса `yclid` — это метка клика, которую Директ добавляет к ссылке, — и `ClientID` посетителя из Метрики.
Шаг 2. Кнопка отправляет к боту. Прямая ссылка на канал тут не годится, нужен диплинк — ссылка на бота со стартовым параметром. В параметр помещается до 128 символов, а `yclid` и `ClientID` — это примерно по двадцать цифр каждый. Они кладутся прямо в ссылку, и никакой базы визитов на сервере не нужно: лендинг остаётся статическим.
Шаг 3. Бот запоминает связку. Человек открывает бота, бот получает событие старта вместе с параметром и запоминает: вот этот пользователь пришёл с вот этого клика. В ответ бот отправляет одно сообщение с кнопкой на канал.
Шаг 4. Бот ловит подписку. Бот добавлен в канал администратором, поэтому при вступлении человека он получает событие о добавлении участника. В событии виден идентификатор пользователя, а признак «вступил по ссылке» отличает самостоятельную подписку от добавления кем-то другим.
Шаг 5. Подписка уходит в Метрику. По связке из третьего шага бот достаёт `yclid` и `ClientID` и загружает офлайн-конверсию с целью «Подписка в MAX». Здесь есть тонкости, на которых легко застрять:
- окно привязки — 21 день, событие позже к визиту не привяжется;
- обработка загруженного файла занимает до двух часов;
- в колонке цели пишется строковый идентификатор цели, а не её числовой номер. Цель заводится как целевое событие с этим идентификатором;
- органические подписки в Метрику не уходят вообще: у человека, который пришёл не из рекламы, нет ни `yclid`, ни `ClientID`, привязывать не к чему. Их бот считает отдельно.
Шаг 6. Стратегия учится на подписках. Когда цель наполнилась, её ставят целью для автостратегии. С этого момента Директ ищет людей, которые доходят до канала, а не тех, кто охотно кликает.
Вторую цель мы завели на отписки: «остался в канале через семь дней». Бот видит и выход участника, так что цель считается автоматически. Она показывает качество трафика: подписчик, ушедший через день, стоил тех же денег, но ничего не стоит.
Что нужно собрать перед запуском
- Бот в MAX. Создаётся через служебного бота платформы, ник — латиницей, от одиннадцати символов, заканчивается на `_bot`, дальше модерация. Готового бота добавляют в канал и поднимают до администратора: без прав администратора событий о вступлении он не увидит.
- Посадочная страница со счётчиком Метрики и кнопкой, которая ведёт на диплинк бота.
- Две цели в Метрике — подписка и «остался через семь дней», обе как целевые события.
- Скрипт загрузки офлайн-конверсий: на стороне бота, сразу после события о подписке.
Времени на сборку ушло два дня вместе с лендингом, ботом и кампаниями.
Настройка кампании: что выбирать
Сети, а не поиск. Поисковая кампания у нас работает, но в ней спрос узкий: местные новости в поиске ищут редко. Основной объём дают сети.
Стратегия. На старте, пока конверсий нет, учиться не на чем: работают клики с ограничением цены. Как только цель «Подписка в MAX» начала наполняться, кампания переводится на максимум конверсий по этой цели. Это ключевой шаг всей схемы, и ниже видно, что он даёт.
Потолок цены клика. В нашей кампании он стоит на уровне 12 ₽. Без ограничения сети быстро находят дорогие площадки.
Минусовка площадок. Через две недели работы в запрете 22 площадки. Прополку делаем каждую неделю.
Что дало результат
Смена стратегии — главное. До перехода на цель по подпискам подписчик стоил около 128 ₽. После — упала впятеро за два дня. Заодно вычистились площадки: раньше 29% бюджета уходило в мобильные игры и рекламные биржи, после перехода остались новостные сайты и Дзен.
Динамика по дням из кабинета: первый полный день — около 100 ₽ за подписку, второй — 35 ₽, третий — 26 ₽, четвёртый — 17 ₽. Дальше цена держится в коридоре 25–32 ₽.
Заголовок, а не картинка. Лучший результат дало перечисление соседних городов в заголовке: 29 подписок из 40 по 53 ₽. При этом самые кликабельные объявления с CTR около 15% не дали ни одной подписки. Клик и подписка — разные вещи, и в этом проекте разрыв оказался предельно наглядным.
Три посадочные вместо одной. Мы сделали три страницы с разными смысловыми ставками и раскидали на них трафик копиями кампании. Через три дня стало видно: у двух подписчик обходится в 25–31 ₽, у третьей — 94 ₽. Третью остановили.
Что видно внутри бота
Бот стоит посередине воронки и различает два события: человек открыл диалог и человек подписался. Это даёт цифры, которых нет ни в одном кабинете.
На вечер четырнадцатого сентября бота открыли 341 человек, подписались 154. Больше половины дошли до бота и не сделали последний шаг. Кто подписывается, делает это быстро: медиана — 33 секунды. Но тринадцать человек подписались позже чем через час, то есть часть людей просто отвлекается и возвращается.
Отсюда две рабочие мысли. Сообщение бота — последний экран перед подпиской, поэтому пишется оно как приглашение с понятной кнопкой. И второе: тем, кто открыл бота и пропал, есть смысл напомнить о себе, взяв содержательный повод — например, свежую заметную новость в канале.
Сколько нужно бюджета и времени
Сборка заняла два дня: посадочные страницы, бот и кампании. Отдельного времени просит модерация бота на платформе, её лучше пройти заранее.
Бюджеты у нас скромные: основная кампания в сетях крутится на 5 000 ₽ в неделю, копия под вторую посадочную — на 3 000 ₽. Поисковая кампания стоит с дневным ограничением 700 ₽.
По срокам. Первая подписка пришла в день запуска. Двух-трёх дней хватило, чтобы накопить конверсии и переключить стратегию на цель по подпискам, и ещё через два дня цена подписчика опустилась в коридор, где держится сейчас. То есть на весь путь от нуля до предсказуемой цены ушла неделя.
Дальше начинается обычная работа: прополка площадок, сравнение посадочных, тесты заголовков.
Грабли, на которых мы посидели
- Разметка ссылок для Метрики. Настройка, которая добавляет `yclid` к ссылкам, была выставлена через API, а сохранение кампании в интерфейсе сбросило её обратно. Без `yclid` вся схема атрибуции рассыпается: подписку не к чему привязать. Проверять после каждой правки в интерфейсе.
- Ручных ставок в сетях больше нет. Попытка задать их через API отклоняется.
- Расширенный геотаргетинг. В интерфейсе настройки нет, через API она не выключается: запрос проходит успешно, значение не меняется. Для локального проекта это значит, что часть показов уедет за пределы нужной территории.
- Бот терял события при перезапуске. Позиция в очереди обновлений жила только в памяти процесса: после каждого рестарта бот начинал слушать с текущего момента, и всё, что произошло в паузу, пропадало. За два дня деплоев накопилась заметная дыра. Починили хранением позиции в файле.
- Сверка с числом участников. Раз в пятнадцать минут бот спрашивает у платформы фактическое число участников канала. Это независимая точка отсчёта: подсчёт по событиям всегда можно сверить с реальностью. Правило простое: поток событий ненадёжен, состояние надёжно.
- Лимит объявлений в группе. Текстовые объявления в Директе превращаются в комбинаторные, а их не больше трёх на группу. При копировании кампании отказ приходит на всю группу разом.
Сколько стоит подписчик и как его честно считать
За 09–16 сентября по трём кампаниям: 7 577 ₽ расхода без НДС, 208 подписок, средняя цена 36 ₽. Лучшая кампания держит 30–35 ₽, худшая, которую мы остановили, — 94 ₽.
Две оговорки, без которых цифра врёт.
Директ видит не все подписки. Офлайн-конверсии приходят с задержкой, и цифры позавчерашнего дня дособираются сегодня. У нас 15 сентября сначала показывал 13 подписок, а через сутки — 25. Судить о дне сразу после его окончания нельзя.
Часть подписок органическая. В канал приходят и без рекламы, и такие подписки в Метрику не попадают. Поэтому итоговую цену подписчика мы считаем ещё и вторым способом: расход делим на фактический прирост участников канала за тот же период. Первый способ показывает, как работает реклама, второй — сколько стоит рост канала.
Когда проще взять готовый сервис
Свой бот — не единственный путь. Есть сервисы вроде «Откуда подписки»: они дают такого же бота-привратника и сами отправляют конверсии в Метрику. Мы выбрали свой код по трём причинам.
Отписки: в готовом решении их учёта мы не нашли, и без этого не посчитать цель «остался через семь дней». Токен: сторонний сервис подключается к вашему боту, а токен бота — это доступ к каналу. И третье: код уже был написан под соседнюю задачу.
Если ни одна из причин вам не близка, сервис сэкономит пару дней работы. Промежуточного шага с ботом он всё равно не убирает: в MAX иначе подписку не поймать.
Частые вопросы
Коротко
Реклама из Директа в канал MAX работает по цепочке: объявление, посадочная страница, бот, канал. Бот нужен, чтобы поймать подписку, а офлайн-конверсия — чтобы вернуть её в Метрику и дать стратегии учиться на подписчиках.
Вся хитрость в учёте: как только Директ начал считать подписки, цена упала впятеро. И считайте её двумя способами: по конверсиям в кабинете и по фактическому приросту канала.
Хотите такую связку под свой канал — посмотрим проект и скажем, что нужно собрать: @max_rekl.