Интеграция 1С-Битрикс с Roistat
Roistat — платформа бизнес-аналитики, которая строит сквозную аналитику от рекламного клика до закрытой сделки и выручки. Интеграция с 1С-Битрикс позволяет передавать данные о заказах и выручке из интернет-магазина в Roistat, замыкая цикл «расход на рекламу → доход от продаж». Без этой связки Roistat показывает стоимость лидов, но не может рассчитать реальный ROI рекламных каналов.
Как работает трекинг Roistat на сайте Битрикс
Roistat устанавливает на сайт JavaScript-счётчик, который:
- Получает параметры источника из UTM-меток и других GET-параметров
- Генерирует уникальный идентификатор визита — roistat_visit (числовое значение)
- Сохраняет его в cookie
roistat_visitсо сроком жизни 7 дней (настраивается)
При оформлении заказа значение roistat_visit из cookie должно попасть в заказ Битрикс. Это ключевая точка интеграции: именно по roistat_visit Roistat связывает заказ с рекламным источником.
Передача roistat_visit в заказ
В форме оформления заказа добавляем скрытое поле, заполняемое JavaScript:
document.addEventListener('DOMContentLoaded', function() {
var rsVisit = getCookie('roistat_visit');
if (rsVisit) {
document.querySelectorAll('[name="roistat_visit"]').forEach(function(el) {
el.value = rsVisit;
});
}
});
На стороне Битрикс сохраняем значение в пользовательское поле заказа UF_ROISTAT_VISIT. Если используется компонент sale.order.ajax — подписываемся на событие OnSaleOrderBeforeSaved:
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale', 'OnSaleOrderBeforeSaved',
function (\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
$rsVisit = $_REQUEST['roistat_visit'] ?? $_COOKIE['roistat_visit'] ?? '';
if ($rsVisit) {
$order->setField('UF_ROISTAT_VISIT', $rsVisit);
}
}
);
Передача данных о заказах в Roistat
Roistat принимает данные о заказах через API: POST https://cloud.roistat.com/api/v1/project/orders. Заголовок: X-ApiKey: {project_api_key}.
Минимальный payload:
{
"orders": [{
"id": "BITRIX_ORDER_123",
"visit": "4521890",
"creation_date": "2026-03-13 10:00:00",
"cost": 4990.00,
"revenue": 4990.00,
"currency": "RUB"
}]
}
Поле "visit" — это и есть roistat_visit. Поле "cost" — сумма заказа. По этим данным Roistat рассчитывает выручку по рекламным каналам.
Передачу организуем через обработчик события OnSaleStatusOrderChange: при переходе заказа в статус «Оплачен» или «Выполнен» — отправляем данные в Roistat. Для отмены заказа — отдельный запрос с методом отмены.
Обновление заказов при смене статуса
Заказ может быть оформлен, потом отменён, потом возвращён к выполнению. Roistat должен получать актуальные статусы:
- Новый заказ:
status: "new" - Оплачен/выполнен:
status: "confirmed", передаёмrevenue - Отменён:
status: "canceled", обнуляемrevenue
Храним маппинг статусов Битрикс → статусы Roistat в настройках модуля интеграции.
Телефонные заявки и чаты
Для звонков и чатов — Roistat подменяет номер телефона на сайте (call tracking). Когда звонок поступает, Roistat автоматически создаёт лид с roistat_visit. Если Битрикс24 используется как CRM — настраиваем передачу сделки из Битрикс24 в Roistat через REST API Битрикс24: событие создания сделки → запрос к Roistat API с суммой и roistat_visit.
Типичные проблемы
roistat_visit не попадает в заказ. Чаще всего причина: форма оформления заказа рендерится как SPA (React-компонент), и скрытое поле добавляется до того, как скрипт Roistat загрузился. Решение: инициализировать поле после события roistat:inited.
Дубли заказов в Roistat. Если обработчик события срабатывает несколько раз (при каждом изменении заказа), Roistat получает дубли. Используем id заказа как идемпотентный ключ — повторная передача с тем же id обновляет, не дублирует.
Ориентиры по срокам
| Задача | Срок |
|---|---|
| Базовая интеграция: передача заказов в Roistat | 3–5 дней |
| + обновление статусов (оплата, отмена, возврат) | +2–3 дня |
| + интеграция CRM Битрикс24 со сделками | +3–5 дней |
Стоимость рассчитывается индивидуально после аудита текущего трекинга и схемы обработки заказов.







