Інтеграція 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 днів |
Вартість розраховується індивідуально після аудиту поточного трекінгу та схеми обробки замовлень.







