Верный тон не может быть слабым (Б. Шоу).

UTM-метки, Яндекс Метрика и CRM: как технически связать рекламу с реальными заявками


UTM-метки, Яндекс Метрика и CRM: как технически связать рекламу с реальными заявками

В типичном проекте реклама живёт отдельно от бэкенда. Маркетолог видит клики в кабинете Директа, отдел продаж — сделки в CRM, а разработчик — логи веб-сервера. Связать эти три мира в одну цепочку «объявление → визит → заявка → оплата» на практике сложнее, чем кажется. Причём это скорее инженерная задача, чем маркетинговая.

Разберём, из каких компонентов собирается такая связка, где она обычно рвётся и что можно автоматизировать скриптами и API.

Зачем вообще нужна сквозная аналитика

Рекламный кабинет считает клики и конверсии на своей стороне. Но он не знает, что заявка оказалась спамом, клиент передумал или, наоборот, оплатил втрое больше среднего чека. Если оптимизировать рекламу по «сырым» заявкам, алгоритмы учатся приводить много дешёвых и бесполезных лидов.

Сквозная аналитика решает это так: к каждой сделке в CRM привязывается источник трафика, а результат (квалифицирован лид или нет, сумма оплаты) возвращается обратно в Метрику и в рекламную систему.

Компоненты цепочки

1. UTM-метки и шаблоны Директа

UTM-метки — это GET-параметры, которые описывают источник визита. В Яндекс Директе удобно использовать динамические параметры, которые система подставляет сама:

utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}

Так в каждом визите сохраняются ID кампании, объявления и ключевая фраза. Важное правило: метки задаются шаблоном на уровне кампании, а не вручную в каждом объявлении. Ручная разметка гарантированно даст опечатки и «utm_source=Yandex» вперемешку с «yandex».

2. Сохранение меток на стороне сайта

Пользователь редко оставляет заявку на той же странице, на которую пришёл. Он гуляет по сайту, уходит, возвращается через два дня. Поэтому метки надо сохранять при первом визите:

  • записать UTM и yclid в cookie или localStorage при входе;
  • передавать их скрытыми полями в каждой форме;
  • сохранять ClientID Метрики (функция getClientID) — по нему потом загружаются офлайн-конверсии.

Типовая ошибка: редирект с http на https или с www на без www теряет GET-параметры. Проверить это просто: curl -I с метками в URL и взгляд на заголовок Location. Если параметры в Location пропали, правьте конфиг nginx: в директиве return 301 должен стоять $request_uri, а не жёстко прописанный путь.

3. Передача в CRM

Форма отправляет данные на бэкенд, тот создаёт лид в CRM через API (у amoCRM, Битрикс24 и большинства других есть REST-интерфейсы и вебхуки). В карточку лида пишутся поля: utm_source, utm_campaign, utm_term, ClientID, yclid. Звонки обрабатываются через коллтрекинг — он подменяет номер на сайте и передаёт источник звонка в ту же CRM.

4. Обратная загрузка в Метрику

Когда сделка меняет статус («квалифицирован», «оплачен»), скрипт отправляет событие в Метрику через API офлайн-конверсий с ClientID и суммой. Дальше эти цели можно использовать в стратегиях Директа: оптимизировать не по заявке, а по оплате. На практике это делается cron-задачей раз в час или вебхуком из CRM.

Где цепочка ломается чаще всего

Большинство поломок типовые, и каждую можно быстро проверить.

  • Редирект режет GET-параметры. В CRM приходят лиды с пустыми UTM. Проверка: curl -I с меткой в адресе, например ?utm_source=test.
  • Форма на JS не передаёт скрытые поля. Метки лежат в cookie, но в лид не попадают. Проверка: вкладка Network в DevTools и тело запроса формы.
  • Счётчик Метрики стоит дважды. Визиты завышены, цели срабатывают по два раза. Проверка: Yandex Metrica Inspector или исходный код страницы.
  • Страницы с метками кешируются. У разных людей оказывается одинаковый ClientID. Проверка: заголовки Cache-Control и правила CDN.
  • Нет коллтрекинга. Заметная часть лидов приходит «без источника». Проверка: доля лидов с пустым источником в CRM.

Что можно автоматизировать

Для команды с разработчиком большая часть рутины закрывается скриптами:

  • Выгрузка статистики. API отчётов Директа (Reports) отдаёт расходы по кампаниям и ключам в TSV. Скрипт на Python складывает их в PostgreSQL или ClickHouse рядом с данными CRM.
  • Расчёт стоимости сделки. Простой JOIN по utm_campaign и дате даёт стоимость не клика, а оплаченного заказа по каждой кампании.
  • Алерты. Если расход за сутки вырос, а лидов ноль, — сообщение в Telegram-бот. Это ловит и сломанную форму, и упавший сайт раньше, чем сгорит бюджет.
  • Визуализация. DataLens или Grafana поверх той же базы вместо ручных Excel-отчётов.

Всё это укладывается в небольшой сервис на VPS: cron, пара скриптов и база данных. Главное — хранить токены API в переменных окружения, а не в коде репозитория. Примеры того, как такие связки выглядят в реальных рекламных проектах, есть в кейсах на makeallperfect.ru.

Атрибуция: какой канал получит заслугу

Пользователь может прийти из Telegram Ads, через неделю вернуться по поисковой рекламе и оставить заявку после прямого захода. По умолчанию Метрика использует модель «последний значимый переход», поэтому прямые заходы не перетягивают на себя конверсию. Но если сравнивать отчёты с моделями «первый переход» и «последний переход», картина по каналам может отличаться в разы.

Практический подход: хранить в CRM и первый, и последний источник визита. Первый показывает, какой канал приводит новую аудиторию, последний — какой закрывает сделку. Медийные форматы и Telegram Ads почти всегда выглядят хуже в модели последнего клика, хотя без них поиск получал бы меньше брендовых запросов.

Когда это делать самим, а когда — нет

Если трафика немного и кампаний две-три, хватит корректных UTM, целей в Метрике и ручной сверки раз в неделю. Полноценная связка с CRM и офлайн-конверсиями окупается, когда рекламный бюджет измеряется сотнями тысяч в месяц и цикл сделки длиннее одного дня.

Разработчику обычно не хватает не навыков, а понимания маркетинговой логики: какие цели передавать, как настраивать стратегии под офлайн-конверсии, как читать атрибуцию. В таких проектах удобно работать в паре с подрядчиком, который отвечает за аналитику и рекламную стратегию, а техническую часть делает собственная команда. Так, например, работает агентство Make All Perfect: его специалисты берут на себя контекстную рекламу и рекламу в мессенджерах и помогают выстроить аналитику так, чтобы реклама оптимизировалась по деньгам, а не по кликам.

Чек-лист

  • UTM-шаблон задан на уровне кампаний Директа, с {campaign_id} и {keyword}.
  • Редиректы на сервере сохраняют $request_uri.
  • Метки и ClientID сохраняются при первом визите и уходят в каждую форму.
  • В CRM есть поля под источник, лиды без источника — меньше 10%.
  • Статусы сделок возвращаются в Метрику как офлайн-конверсии.
  • Настроен алерт «расход есть — лидов нет».

Аналитика рекламы — это обычный пайплайн данных: сбор, хранение, JOIN и мониторинг. Если смотреть на неё как на инженерную задачу, она становится проще и надёжнее.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Если статья понравилась, поделитесь ей в социальных сетях

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала