Интеграция Битрикс24 с Яндекс.Метрикой
Яндекс.Метрика показывает трафик, Битрикс24 показывает сделки. Между ними — пропасть: непонятно, какие именно визиты конвертируются в выручку. Интеграция закрывает этот разрыв и позволяет оптимизировать рекламу по реальным продажам, а не по заявкам.
Два уровня интеграции
Первый уровень: передача офлайн-конверсий — отправка данных о сделках из Битрикс24 в Яндекс.Метрику как офлайн-конверсии. Метрика обогащает данные: видно, из каких источников и кампаний пришли клиенты, которые реально купили.
Второй уровень: ClientID в CRM — запись _ym_uid (ClientID Метрики) в поле сделки при создании лида. Позволяет из CRM открыть конкретную сессию в Метрике и увидеть полный путь клиента на сайте.
Передача офлайн-конверсий в Яндекс.Метрику
Схема: при переходе сделки в стадию «Победа» данные отправляются в Метрику через API офлайн-конверсий.
Метрика принимает офлайн-конверсии через метод POST /upload/v1/counter/{counterId}/goals/upload. Формат запроса:
{
"Hits": [
{
"ClientId": "{{ _ym_uid клиента }}",
"DateTime": "2026-03-13T10:00:00",
"Target": "deal_won",
"Price": 150000,
"Currency": "RUB"
}
]
}
Реализация через кастомный робот CRM (см. статью про разработку кастомных роботов): при переходе на стадию «Победа» робот читает поле сделки с ClientID, формирует запрос к API Метрики.
Авторизация в API Метрики: OAuth-токен с правами metrika:write. Токен хранится в настройках модуля или в переменных среды на сервере.
Запись ClientID в сделку
Это ключевая часть, которую нужно реализовать на сайте при отправке формы. JavaScript собирает _ym_uid из куки:
function getYmClientId() {
const match = document.cookie.match(/_ym_uid=([^;]+)/);
return match ? match[1] : null;
}
// При отправке формы
const formData = {
name: document.getElementById('name').value,
phone: document.getElementById('phone').value,
ym_client_id: getYmClientId(),
// ... другие поля
};
На сервере при создании лида через REST API:
$client->call('crm.lead.add', [
'fields' => [
'TITLE' => 'Заявка с сайта',
'UF_CRM_YM_CLIENT_ID' => $formData['ym_client_id'],
'UTM_SOURCE' => $_GET['utm_source'] ?? '',
'UTM_CAMPAIGN' => $_GET['utm_campaign'] ?? '',
// ...
],
]);
Поле UF_CRM_YM_CLIENT_ID создаётся вручную в настройках CRM: строковое поле на лиде и сделке. При конвертации лида в сделку поле копируется (если правильно настроить — см. статью про источники лидов).
Проблема с multi-touch атрибуцией
Метрика по умолчанию использует атрибуцию по последнему клику. Для правильного расчёта ценности рекламных каналов это приводит к недооценке брендинговых кампаний (которые формируют спрос, но не закрывают конверсию) и переоценке ретаргетинга.
С офлайн-конверсиями ситуация улучшается: Метрика знает фактическую выручку по каждому каналу, а не только количество заявок. Но модель атрибуции меняется только через Яндекс.Директ — там можно выбрать «доля конверсий» или «ценность конверсий» как стратегию.
Синхронизация аудиторий
Метрика позволяет создавать сегменты аудиторий на основе офлайн-конверсий: «клиенты, заплатившие более 100 000 руб.», «клиенты, купившие 2+ раза». Эти аудитории передаются в Яндекс.Директ как Look-alike или для ретаргетинга.
Создание сегмента: Метрика → Аудитории → Загрузить данные → Офлайн-конверсии. Выбирается цель deal_won, строится сегмент. Экспортируется в Директ.
Реальный кейс: оптимизация контекстной рекламы по выручке
Задача: интернет-магазин B2B-расходников. Заявки из контекстной рекламы шли, но часть оказывалась «мусором» — физлица, нецелевые регионы. Оптимизировали кампании по количеству заявок, но реальная выручка не росла.
Решение: офлайн-конверсии с передачей суммы сделки в Метрику. Настроили передачу двух событий: lead_qualified (при квалификации лида менеджером) и deal_won (при победе в сделке с суммой).
Что увидели: из трёх кампаний Директа кампания «общие ключи» давала 40% заявок, но только 10% выручки. Кампания «бренд конкурентов» давала 15% заявок и 35% выручки. Без офлайн-конверсий это было невидимо.
Результат: перераспределили бюджет, CPA по выручке снизился на 28% за два месяца.
Сроки интеграции
| Задача | Время |
|---|---|
| Реализация передачи ClientID с форм сайта | 1–2 дня |
| Разработка кастомного робота для отправки в Метрику | 2–3 дня |
| Настройка сегментов аудиторий в Метрике | 1 день |
| Тестирование цепочки и верификация данных | 1–2 дня |
Полная интеграция — 1–2 недели с учётом тестирования корректности передачи данных.







