Интеграция Битрикс24 с Google Analytics
GA4 фиксирует сессии и события на сайте, Битрикс24 — сделки и выручку. Без интеграции маркетолог смотрит в GA4, продажник — в CRM, и они спорят о том, работает ли реклама. Интеграция даёт единую картину: от клика до выручки.
Архитектура интеграции с GA4
В Google Analytics 4 нет механизма офлайн-конверсий в том виде, в котором он существует в Яндекс.Метрике. Основной способ передачи данных о сделках — Measurement Protocol GA4.
Measurement Protocol позволяет отправлять события в GA4 с сервера, без браузера пользователя. Событие привязывается к сессии через client_id GA4 (параметр _ga в куки).
Схема:
Пользователь посещает сайт → JavaScript сохраняет client_id GA4 в форму
→ Лид создаётся в CRM с client_id
→ Сделка переходит в "Победа"
→ Сервер отправляет событие purchase в GA4 через Measurement Protocol
→ GA4 атрибутирует выручку к источнику трафика
Получение client_id GA4 на сайте
// Дождаться инициализации GA4
gtag('get', 'G-XXXXXXXX', 'client_id', (clientId) => {
document.getElementById('ga_client_id').value = clientId;
});
Скрытое поле ga_client_id в форме — передаётся вместе с другими данными при отправке. На сервере сохраняется в CRM как пользовательское поле лида/сделки UF_CRM_GA_CLIENT_ID.
Отправка события в GA4 через Measurement Protocol
При переходе сделки в стадию «Победа» сервер отправляет POST-запрос:
$measurementId = 'G-XXXXXXXX';
$apiSecret = 'ВАШ_API_SECRET'; // GA4 → Настройки → Потоки данных → Measurement Protocol API secrets
$payload = [
'client_id' => $deal['UF_CRM_GA_CLIENT_ID'],
'timestamp_micros' => (int)(microtime(true) * 1_000_000),
'events' => [
[
'name' => 'purchase',
'params' => [
'transaction_id' => 'DEAL_' . $deal['ID'],
'value' => (float)$deal['OPPORTUNITY'],
'currency' => $deal['CURRENCY_ID'],
'items' => array_map(fn($row) => [
'item_id' => $row['PRODUCT_ID'],
'item_name' => $row['PRODUCT_NAME'],
'quantity' => $row['QUANTITY'],
'price' => $row['PRICE'],
], $dealProducts),
],
],
],
];
$url = "https://www.google-analytics.com/mp/collect?measurement_id={$measurementId}&api_secret={$apiSecret}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_exec($ch);
Параметр api_secret генерируется в интерфейсе GA4: Администратор → Потоки данных → [Поток] → Measurement Protocol API secrets.
Проблемы атрибуции в GA4
Задержка сделки — клиент кликнул на рекламу сегодня, купил через две недели. GA4 хранит сессию 30 дней (настраивается). Если client_id сохранён в CRM при создании лида — проблем нет: событие отправляется с тем же client_id, GA4 атрибутирует к правильной сессии.
Истекший client_id — куки GA4 живут 2 года, но пользователь мог поменять браузер, устройство или очистить куки. Для B2B-сделок с длинным циклом это реальная проблема. Решение: хранить несколько client_id (с разных визитов) и передавать все при отправке события — Measurement Protocol принимает массив событий с разными client_id.
Блокировщики рекламы — часть пользователей блокирует gtag.js, client_id не записывается. Потеря данных 15–30% в зависимости от аудитории. Частичное решение — Google Tag Manager через server-side tagging.
Аудитории и ремаркетинг
После передачи офлайн-конверсий в GA4 можно строить аудитории:
- Купившие на сумму > N руб.
- Купившие определённую категорию товаров (через
item_categoryв параметрах события) - Купившие 2+ раза (LTV-сегмент)
Аудитории из GA4 передаются в Google Ads для ремаркетинга и Look-alike. Это основа для ROAS-оптимизации кампаний по реальной выручке, а не по заявкам.
Реальный кейс: разрыв между GA4 и CRM
Задача: SaaS-компания, продукт с трёхнедельным циклом продажи. Маркетолог смотрел в GA4 — конверсии (регистрации) росли. Руководство смотрело в CRM — выручка стагнировала. Расхождение объяснить не могли.
Что нашли: GA4 считал конверсией регистрацию (micro-conversion), а не оплату. 70% регистраций — пользователи, которые зарегистрировались, попробовали пробный период и ушли. Оптимизация контекста шла по дешёвым регистрациям, а не по тем, кто платит.
Решение: передача события purchase с суммой через Measurement Protocol при переходе сделки в «Победа». Плюс событие trial_started при создании аккаунта и trial_converted при первой оплате.
Результат: в GA4 появилась воронка от первого клика до оплаты. Выяснилось, что органический поиск даёт конверсию из триала в оплату 22%, а performance-реклама — 8%. Бюджет перераспределили, ROAS вырос на 35%.
Сроки интеграции
| Задача | Время |
|---|---|
| Встраивание получения client_id в формы сайта | 1 день |
| Разработка обработчика Measurement Protocol | 2–3 дня |
| Настройка кастомного робота CRM для отправки | 1–2 дня |
| Тестирование через GA4 DebugView и верификация | 1–2 дня |
Полная интеграция — 1–2 недели. Накопление статистики для выводов — 4–8 недель.







