AVOdigital
ГлавнаяМатериал AVOdigital

Настройка сквозной аналитики: связываем сайт, рекламу и CRM

Настройка сквозной аналитики с Яндекс.Директ и CRM через REST API, OAuth и CommerceML. Подробный чек-лист и таблица сравнения инструментов.

Разработка сайтов

Нужен сайт для вашего бизнеса?

Пришлём состав сайта и смету под вашу задачу: лендинг — от 58 000 ₽, сайт компании — от 92 000 ₽. Можно просто задать вопрос в Telegram или MAX, без звонка.

Коротко:

Пошаговая инструкция по настройке сквозной аналитики с интеграцией сайта, рекламных кабинетов (Яндекс.Директ) и CRM-системы с использованием REST API, OAuth 2.0 и CommerceML. Подробный технический разбор для владельцев бизнеса и IT-специалистов.

Настройка сквозной аналитики — это единственный способ увидеть реальную окупаемость (ROI) каждого клика в Яндекс.Директ, а не просто CTR и CPC. В этой статье — протоколы, примеры кода и архитектурные решения для связки сайта, рекламы и любой CRM (amoCRM, Bitrix24, RetailCRM).

Сквозная аналитика (end-to-end analytics) решает задачу, которую не может закрыть стандартный Яндекс.Метрика: она связывает клик по объявлению с конкретным закрытым счетом в CRM. Мы покажем, как настроить передачу данных из Яндекс.Директ в CRM через UTM-метки, REST API и CommerceML, а также как организовать обратный поток данных о статусах лидов и сумме сделок.

Как работает связка: от клика до сделки

Архитектура сквозной аналитики строится на четырёх узлах:

  1. Сайт — генерирует UTM-метки и передаёт их через веб-формы в CRM. Через API или JavaScript-коллбэки записывает данные в файлы куки (гарантированный срок жизни — 24 часа, но храним до 30 дней).
  2. Рекламные системы (Яндекс.Директ, Google Ads) — отдают статистику через собственные API (для Яндекса — Reports API v5, OAuth 2.0 с типом grant_type=client_credentials).
  3. CRM (amoCRM, Bitrix24, RetailCRM) — принимает данные по REST API (например, POST /api/v4/leads в amoCRM) или через CommerceML (обмен XML-файлами через HTTP).
  4. Хранилище и обработчик — ETL-процесс (чаще всего на PHP, Python или Node.js) с использованием очередей RabbitMQ для избежания потери данных при пиковых нагрузках и Redis (TLL до 1 часа) для временного хранения сессий.
Важно: Сквозная аналитика требует кастомных доработок. Готовые плагины (например, для WordPress) не покрывают все кейсы — они урезают UTM-метки до 5–6 параметров и не передают суммарную стоимость сделки.

Таблица сравнения методов интеграции

Метод Протокол Скорость Сложность Подходит для
CommerceML (XML-обмен) HTTP + Basic Auth Раз в час Низкая 1C + Битрикс24 / 1С-Битрикс
REST API (прямой) HTTPS + OAuth 2.0 (JWT) Реал-тайм Высокая amoCRM, RetailCRM (любые кастомные решения)
Webhook + AJAX POST (JSON через jQuery.ajax или fetch) Секунды Средняя Лендинги без бэкенда (с дополнительными скриптами на сервере)

Пример настройки REST API для передачи лида из формы на сайте в amoCRM:

// JavaScript-обработчик на стороне клиента (событие submit формы)
let data = { 'name': 'Заявка с сайта', 'custom_fields_values': [ {'field_id': 123, 'values': [{'value': 'utm_source=google&utm_campaign=brand'}]}, {'field_id': 456, 'values': [{'value': 'BY40756'}]} // метка клика ], '_embedded': { 'contacts': [{'name': 'Иван Иванов', 'custom_fields_values': [{'field_code': 'EMAIL', 'values': [{'value': 'ivan@example.com'}]}]}] }
};
// Отправка через fetch с Bearer-токеном (OAuth 2.0, JWT)
fetch('https://yourcompany.amocrm.ru/api/v4/leads', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + access_token }, body: JSON.stringify(data)
});

Не забывайте про server-side логирование на Nginx: если форма отвалилась, запросы шлются повторно (с помощью RabbitMQ и ретраев с экспоненциальным backoff). Для WordPress добавьте в wp-config.php перехват отправки формы через add_action('wpcf7_before_send_mail', ...).

Пошаговый чек-лист настройки сквозной аналитики

  1. Установите сквозное UTM-кодирование на всех страницах (через JS-библиотеку utm_cookie.js или серверный PHP с записью в базу). Гарантированный срок жизни куки — регламентируется в настройках сервера (.htaccess: Set-Cookie: utm_source=google; path=/; max-age=2592000).
  2. Настройте приём данных в CRM по REST API. Создайте приложение в amoCRM (или аналогично в другой CRM) и получите client_id / client_secret. Сформируйте OAuth-ссылку с redirect_uri на ваш сервер.
  3. Организуйте обмен статусами: при изменении статуса лида (например, «Клиент») ваш обработчик через RabbitMQ отправляет callback в рекламный кабинет. Для Яндекс.Директ — через API v5 метод GET /campaigns с фильтром по UTM.
  4. Настройте обработку ошибок: коды 401 (обновление JWT через refresh_token), 429 (таблица rate limit). Логируйте все вызовы в таблицу БД (MySQL с движком InnoDB для транзакций) или в Elasticsearch.
  5. Свяжите сделку с меткой клика из Яндекс.Директ: при передаче лида обязательно передавайте метку клика (например, clid=123456) как отдельное поле в CRM. Это позволит позже сопоставить сумму сделки с расходами на рекламу.
  6. Внедрите отчёты в BI: используйте Power BI или Google Data Studio для визуализации ROI по каждому каналу. Для этого используйте выгрузку данных из CRM через API в Power Query с форматированием JSON.

Типичные ошибки и их решение

  • UTM-метки в куках перезаписываются при переходе на другие страницы — используйте серверное хранение меток (сессии в Redis). Мы в AVOdigital решаем эту проблему через middleware на Nginx, который парсит UTM-параметры и сохраняет их в Redis с ключом по идентификатору сессии.
  • CRM не видит сумму сделки — проверьте, что передаёте поле price в теле последущего обновления лида. Для CommerceML убедитесь, что в XML-документе указан атрибут Сумма.
  • Клиент заходит в CRM, но реклама не определяется — настройте параметр yclid (кука Яндекс.Директ) и укажите в настройках аккаунта «Передавать метку клика в URL». Если кука не приходит, проверьте настройки расширений AdBlock на стороне пользователя.
Мы в AVOdigital столкнулись с задачей: 30% лидов терялись из-за того, что куки UTM сбрасывались при использовании браузера в режиме инкогнито. Решение — гибридная схема: кука + хранение в localStorage, с дополнительной передачей в CRM через скрытое поле формы. Это увеличило точность сквозной аналитики.

Юридические аспекты

Согласно Федеральному закону от 27.07.2006 № 152-ФЗ «О персональных данных», передача UTM-меток (которые могут содержать IP-адрес и ID сессии) через API CRM требует согласия посетителя. Реализуйте cookie-баннер через cookieconsent.js и храните согласие в БД (поле consent_given типа BOOLEAN) для аудита.

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

  1. Какой минимальный бюджет для настройки сквозной аналитики? Если у вас бюджет на рекламу от 50 000 руб./мес. и более 50 лидов в месяц, окупаемость составляет 2–3 недели. Для маленьких проектов — используйте бесплатный Яндекс.Метрика с UTM-метками (без привязки к CRM).
  2. Нужна ли программистская доработка? Для идеальной интеграции — да, если у вас нестандартная CRM или сложные бизнес-процессы. Готовые решения (Roistat, Calltouch) решают задачу за 1–2 дня, но не позволяют кастомизировать pipeline под экзотические воронки.
  3. Почему через CommerceML данные приходят не сразу? CommerceML — это пакетный обмен (XML через cron или HTTP с паузой). Он не подходит для real-time — минимальный интервал 30–60 минут. Для сквозной аналитики используйте REST API или Webhook.
  4. Как быть с дублированием лидов при повторном заполнении формы? В CRM должна быть реализована дедупликация по email или телефону (используйте алгоритм Levenshtein-расстояния). В AVOdigital мы добавляем хэш на стороне клиента (SHA256 от email) и проверяем дубли в Redis с TTL 24 часа.
Следующий шаг

Есть задача для вашего сайта?

Пришлите ссылку или опишите, что хотите изменить. Уточним задачу и определим, какая работа понадобится.

Как применить это к своему проекту — 3 шага
  1. Опишите задачу бизнеса, которую хотите решить с помощью материала.
  2. Выберите одну страницу или сценарий для первой проверки.
  3. Запишите, что должен сделать посетитель и как вы измерите результат.
Разобрать мой случай →
Обсудить задачуСайт уже есть? Бесплатный экспресс-аудитУслуги веб-студии
+7 (902) 965-31-60Telegramavodigital@mail.ru

Можно просто задать вопрос — это ни к чему не обязывает

AVOdigital · проект

Обсудим вашу задачу

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

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.

Гайд AVOdigital

Материал для вашего проекта

Оставьте телефон или email — после отправки здесь появится ссылка на PDF.