Інтеграція 1С-Бітрікс з сервісами предиктивної аналітики
Зовнішні сервіси предиктивної аналітики — RetailRocket, Mindbox, Exponea, Segmentify — надають готові ML-моделі для рекомендацій, прогнозу відтоку, персоналізації. На відміну від власної реалізації на PHP/SQL, вони вже навчені на даних мільйонів транзакцій. Завдання інтеграції — організувати двосторонній обмін даними: з Бітрікс у сервіс та назад.
Вибір сервісу
| Сервіс | Спеціалізація | Особливості |
|---|---|---|
| RetailRocket | Рекомендації, триггерні розсилки | Російськомовний, підтримка Бітрікс |
| Mindbox | CDP + розсилки + аналітика | Широка функціональність, вища ціна |
| Segmentify | Персоналізація контенту | Акцент на real-time |
| Exponea (Bloomreach) | CDP + ML | Європейський вендор, GDPR |
| Retail Rocket | — | Готовий модуль для Бітрікс |
Передача даних: события з браузера
Більшість сервісів використовують JavaScript SDK для збору поведінкових подій. SDK встановлюється в <head> шаблона сайту. Стандартний набір подій:
Перегляд товару — у шаблоні catalog.element:
// Приклад для RetailRocket-подібного сервісу
analytics.push(['trackProductView', {
id: <?= (int)$arResult['ID'] ?>,
groupId: <?= (int)$arResult['IBLOCK_SECTION_ID'] ?>,
price: <?= (float)($arResult['CATALOG_PRICE_1']['PRICE'] ?? 0) ?>,
isAvailable: <?= $arResult['CATALOG_QUANTITY'] > 0 ? 'true' : 'false' ?>
}]);
Додавання в корзину — в обробнику кнопки «Купити» або через подію OnSaleBasketItemAddBefore.
Покупка — на сторінці успішного замовлення через $arResult['ORDER_ID'] компонента sale.order.ajax.
Передача каталогу товарів
Сервіс повинен знати актуальний каталог для показу рекомендацій. Передача — через фід (YML, CSV або власний формат) або через API. Агент Бітрікс генерує фід та публікує по URL:
function generateAnalyticsFeed(): void
{
$elements = \CIBlockElement::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
false, false,
['ID', 'NAME', 'IBLOCK_SECTION_ID', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'CATALOG_PRICE_1', 'CATALOG_QUANTITY']
);
$rows = [];
while ($el = $elements->GetNext()) {
$rows[] = [
'id' => $el['ID'],
'name' => $el['NAME'],
'categoryId' => $el['IBLOCK_SECTION_ID'],
'url' => 'https://' . SITE_SERVER_NAME . $el['DETAIL_PAGE_URL'],
'imageUrl' => 'https://' . SITE_SERVER_NAME . \CFile::GetPath($el['PREVIEW_PICTURE']),
'price' => $el['CATALOG_PRICE_1'],
'inStock' => $el['CATALOG_QUANTITY'] > 0,
];
}
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/upload/analytics_feed.json', json_encode($rows));
}
Фід оновлюється агентом раз на годину. URL реєструється в кабінеті сервісу аналітики.
Передача даних про користувачів
При реєстрації та оновленні профілю користувача — відправка даних у сервіс через API. Обробник подій OnAfterUserRegister та OnAfterUserUpdate:
AddEventHandler('main', 'OnAfterUserRegister', function($fields) {
if ($fields['EMAIL']) {
AnalyticsService::identifyUser([
'email' => $fields['EMAIL'],
'userId' => $fields['USER_ID'],
'firstName' => $fields['NAME'],
'phone' => $fields['PERSONAL_PHONE'],
]);
}
});
AnalyticsService::identifyUser() робить POST-запит в API сервісу з ідентифікацією користувача.
Отримання рекомендацій назад у Бітрікс
Рекомендації можна отримувати двома способами:
Клієнтський віджет — сервіс надає JavaScript-віджет, який вставляється у потрібне місце сторінки та рендерить рекомендації самостійно. Найпростіший шлях, але слабкий контроль над зовнішнім виглядом.
Server-side API — у шаблоні компонента catalog.element або в компоненті особистого кабінету запитуємо рекомендації через API сервісу та рендеримо самі:
$recommendations = AnalyticsService::getRecommendations([
'type' => 'similar',
'productId' => $arResult['ID'],
'userId' => $USER->GetID(),
'limit' => 8,
]);
// Передаємо в шаблон для рендера стандартними засобами Бітрікс
$arResult['ANALYTICS_RECOMMENDATIONS'] = $recommendations;
Терміни виконання
| Етап | Терміни |
|---|---|
| Встановлення SDK та базові события (перегляд/корзина/покупка) | 2–3 дні |
| Фід каталогу з агентом оновлення | 1–2 дні |
| Ідентифікація користувачів та передача профілів | 1–2 дні |
| Серверні рекомендації на сторінках каталогу | 2–3 дні |
| Триггерні розсилки через сервіс | 3–5 днів |
Що налаштовуємо
- JavaScript SDK сервісу в шаблоні сайту з событиями перегляду, корзини та покупки
- Генератор фіду каталогу у форматі, потрібному сервісу, з агентом оновлення
- Обробники подій реєстрації/оновлення користувачів для ідентифікації
- Server-side API-клієнт для запиту рекомендацій та вбудовування в шаблони
- Передачу даних про замовлення через API або вебхук при успішній оплаті







