Интеграция 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 или вебхук при успешной оплате







