Рекламные кампании
Кампании и их результат: каналы, расходы из Яндекс.Директа, дашборд кампании и AI-мастер, который помогает собрать кампанию и разобрать итоги.
Рекламные кампании
URL: /admin/crm/campaigns/. Кампании и каналы с UTM-метками:
линк-билдер и QR-код, привязка сделки к кампании по utm_campaign в
момент приёма (единая точка всех каналов), цена заявки и подключения,
окупаемость.
Список и окупаемость, кампания и метка, каналы и ссылки с QR-кодом, AI-мастер, дашборд кампании, тексты объявлений и разбор результатов.
Страница стоит на общем каркасе раздела: в шапке «AI-мастер» и «+ Кампания», под ней сводка периода (лиды, подключено, абонплата в месяц, разовые, окупаемость), срезы по состоянию с числами (все, активные, пауза, черновики, архив), выбор периода, поиск и выбор колонок. Период — по умолчанию последние 30 дней — применяется к таблице, сводке и диаграммам под списком. Название кампании — ссылка на её дашборд, окно редактирования открывается кнопкой в строке.
Диаграммы
- Заявки и сделки по дням — две линии: видно, набирает реклама обороты или затухает;
- Кто приносит заявки — доли кампаний за период;
- Что с заявками — пришло → в работе → сделки.
Блок скрывается, если за период не было ни одной заявки — пустые оси занимали бы экран и ничего не сообщали.
Яндекс.Директ: сколько стоила реклама
Таблица кампаний знает, сколько заявок принесла реклама, но не знает, во сколько эти заявки обошлись. Вторую половину даёт Яндекс.Директ: показы, клики и расход по кампаниям подтягиваются в тот же экран.
Кабинет подключает сама организация. У каждого юрлица он свой, и видеть чужие расходы никто не должен: подключение привязано к организации, а не к инсталляции. Секрет приложения остаётся на сервере лицензий — в биллинг он не попадает, обмен кода на токен и продление идут через шлюз.
sequenceDiagram
autonumber
participant M as Менеджер
participant B as Биллинг
participant L as Сервер лицензий
participant Y as Яндекс.Директ
M->>B: «Подключить Директ»
B->>L: запрос адреса согласия
L-->>B: ссылка на страницу Яндекса
B-->>M: открыть ссылку, войти в кабинет
M->>Y: разрешить доступ
Y-->>M: код подтверждения на экране
M->>B: ввести код
B->>L: код + метка запроса
L->>Y: обмен кода на токены (секрет у лицензий)
Y-->>L: токен и токен обновления
L-->>B: токены для этой организации
B-->>M: «Кабинет подключён»
Код с экрана, а не обычный возврат по ссылке, — потому что адрес возврата у Яндекса задаётся при создании приложения и не редактируется. Путь с обычным редиректом в коде сохранён: если адрес когда-нибудь удастся прописать, он заработает без переделок.
Что появляется после подключения
- Показы, клики и расход по кампаниям за выбранный период — рядом с заявками и сделками из биллинга.
- Стоимость заявки считается из настоящего расхода, а не из бюджета, вбитого руками.
- Список кампаний Директа — чтобы связать рекламную кампанию с кампанией в CRM и не сверять названия глазами.
Ответ Директа кешируется на полчаса: страница кампаний открывается часто, а цифры за вчера не меняются. Если кабинет не подключён, токен протух или Директ недоступен — блок покажет причину текстом и не сломает остальную страницу.
Агентский аккаунт тоже поддерживается: логин рекламодателя хранится отдельно, и запросы уходят от его имени.
Таблица и итог
Деньги — двумя цифрами, как решено для всей CRM: «Абонплата/мес» — сколько в месяц принесут подключённые по кампании (по тарифам сделок) и «Разовые» — подключение, настройка, оборудование. Складывать их нельзя. Остальные колонки включаются кнопкой выбора колонок и запоминаются в профиле: бюджет периода, цена лида, цена подключения, окупаемость в месяцах, открытые и проигранные сделки, каналы, воронка, последняя заявка, цель, дата создания. Из новых по умолчанию видны цена лида и окупаемость.
- Бюджет периода — доля бюджета кампании по дням пересечения её срока с выбранным периодом.
- Цена лида = бюджет периода ÷ лиды; цена подключения = бюджет периода ÷ подключения.
- Окупаемость, мес = бюджет периода ÷ абонплата подключённых в месяц.
При мульти-орг и режиме «Все организации» в таблице появляется колонка «Орг.» с единым бейджем компании — тем же, что в списках и карточках. Кампания принадлежит организации, и её воронка задаёт, куда попадут лиды этой рекламы.
Дашборд кампании
URL: /admin/crm/campaigns/<id>/ — по названию кампании в
списке. Открывается только сотруднику организации кампании. В шапке — статус,
метка UTM, организация, срок и бюджет, кнопки «В воронке» (доска с фильтром по
кампании) и «Изменить»; период по умолчанию — срок кампании.
- Семь показателей: лиды (в работе и отказ), подключено (доля заявок периода), абонплата в месяц (и разовые), бюджет периода, цена лида, цена подключения, окупаемость.
- Динамика — заявки и подключения по дням.
- Где сейчас заявки — распределение по стадиям.
- Сделки кампании — до 50 последних: стадия бейджем, под ней причина отказа; тариф, абонплата и разовые; источник значком с подсказкой; ответственный с фото.
- Источники, причины отказа, каналы, материалы для размещения и разбор результатов.
AI-мастер кампании
URL: /admin/crm/campaigns/wizard/, кнопка «AI-мастер»
в списке кампаний. Оператор описывает задумку словами, помощник задаёт один круг
уточняющих вопросов и собирает кампанию целиком: метки UTM и каналы, лендинг,
форму заявки с воронкой и источником, запись DNS для поддомена.
Слева — разговор, справа — то, что будет собрано. План обновляется по ходу диалога, поддомен и поля можно поправить перед сборкой.
Что спрашивает помощник
Пять вещей, без которых кампании не существует: кому реклама (сегмент и география), оффер, каналы размещения, бюджет и срок, что считаем результатом. Вопросы приходят пачкой, одним списком — отвечать можно одним сообщением. Круг вопросов один: дальше помощник обязан выдать план, а чего оператор не сказал — домысливает разумными значениями (тарифы берёт с витрины, старт — сегодня).
Что создаётся при сборке
- Кампания — название, метка
utm_campaign, бюджет, период, цель, воронка и организация; - Каналы — по одному на каждую выбранную площадку, с готовыми UTM-метками;
- Страница — блоки от помощника проходят ту же проверку и очистку, что и собранные руками; тема берётся из брендинга организации;
- Форма заявки — воронка, источник лида и кампания проставлены сразу, чтобы заявкам было куда падать;
- Поддомен — A-запись через выдачу DNS. Если Cloudflare для
организации не настроен, страница остаётся доступна по адресу
/l/<код>/.
Готовность к запуску
Чек-лист проверяет то, что реально ломает кампанию: страница опубликована, адрес резолвится, форма привязана к воронке и источнику, есть текст согласия на обработку данных, заполнены заголовок и описание для поисковиков, кампания активна и у неё есть канал с UTM. Каждый невыполненный пункт объясняет, что не так, и ведёт туда, где это чинится.
Материалы и ссылки
На карточке кампании — блок «Материалы для размещения». Кнопка «Подготовить тексты» пишет объявления под те каналы, что заведены в кампании, и проверяет лимиты площадок: Яндекс.Директ режет длинный текст молча, поэтому перебор помечается прямо в карточке. Рядом — ссылки с UTM по каждому каналу и QR-код для листовок и наружной рекламы. Тексты хранятся в кампании и правятся вручную.
Разбор результатов
Блок «Разбор результатов» показывает заявки, конверсию, цену заявки и сделки, разбивку по источникам — и объясняет словами, что происходит, плюс что стоит сделать. При малом числе заявок помощник честно говорит, что данных мало и выводы делать рано.
CAMPAIGN_IDLE_DAYS (по умолчанию 3 дня),
выключатель — CAMPAIGN_IDLE_ALERT_ENABLED.