Интеграция 1С-Битрикс с Mindbox
Mindbox — российская CDP-платформа для автоматизации маркетинга крупных и средних ритейлеров. Объединяет данные из всех каналов (сайт, мобильное приложение, офлайн, колл-центр), строит единый профиль клиента и управляет персонализированными коммуникациями. Стоимость платформы ориентирована на бизнес с оборотом от нескольких сотен миллионов рублей.
Архитектура интеграции с Mindbox
Mindbox работает через два механизма:
- JavaScript SDK (Mindbox.js) — трекинг действий на сайте в реальном времени: просмотры, добавления в корзину, авторизации.
- Server-side API (v3) — передача транзакционных данных: заказы, регистрации, обновления профиля.
Оба механизма должны использовать единый идентификатор клиента (deviceUUID для анонимных, customerId для авторизованных).
Подключение JavaScript SDK
В шаблоне Битрикса (в header.php или компоненте):
<script>
window.mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
</script>
<script async src="//cdn.mindbox.ru/scripts/v1/tracker.js"></script>
<script>
mindbox('create', {
endpointId: '<?= COption::GetOptionString("site","mindbox_endpoint_id") ?>',
});
// Передаём ID авторизованного пользователя
<?php if ($USER->IsAuthorized()): ?>
mindbox('identify', {
operation: 'SiteVisit',
data: {
customer: {
ids: { websiteId: '<?= $USER->GetID() ?>' },
},
},
});
<?php endif; ?>
</script>
Передача заказа через Server-side API
class MindboxClient {
private string $secretKey;
private string $endpointId;
public function sendOrder(\Bitrix\Sale\Order $order): void {
$basket = $order->getBasket();
$props = $order->getPropertyCollection();
$lines = [];
foreach ($basket as $item) {
$lines[] = [
'product' => ['ids' => ['websiteId' => (string)$item->getProductId()]],
'quantity' => $item->getQuantity(),
'priceOfLine' => $item->getPrice() * $item->getQuantity(),
'discountOfLine' => 0,
];
}
$payload = [
'order' => [
'ids' => ['websiteId' => (string)$order->getId()],
'totalPrice' => $order->getPrice(),
'lines' => $lines,
'customer' => [
'ids' => ['websiteId' => (string)$order->getUserId()],
'email' => $props->getUserEmail(),
'mobilePhone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(),
],
],
];
$http = new \Bitrix\Main\Web\HttpClient();
$http->setHeader('Content-Type', 'application/json');
$http->setHeader('Authorization', 'Mindbox secretKey="' . $this->secretKey . '"');
$http->post(
"https://api.mindbox.ru/v3/operations/sync?endpointId={$this->endpointId}&operation=Website.CreateOrder",
json_encode($payload)
);
}
}
Операции (Operations)
Каждое взаимодействие в Mindbox — это «операция» с уникальным именем. Имена операций создаются в личном кабинете Mindbox и передаются в параметре operation:
| Операция | Событие в Битриксе |
|---|---|
Website.CreateOrder |
OnSaleOrderSaved (новый заказ) |
Website.UpdateOrder |
OnSaleOrderSaved (изменение статуса) |
Website.Register |
OnAfterUserRegister |
Website.UpdateProfile |
OnAfterUserUpdate |
Website.SetCart |
OnSaleBasketSaved |
Website.SubscribeEmail |
OnSubscribeSubscribe |
Программа лояльности
Mindbox содержит встроенный модуль программы лояльности. При подключении — баллы начисляются за покупки, списываются при оплате. В форме заказа добавляем поле «Использовать баллы»:
// Получить баланс баллов клиента
public function getCustomerBalance(int $userId): float {
$response = $this->callSync('Website.GetCustomerBalance', [
'customer' => ['ids' => ['websiteId' => (string)$userId]],
]);
return $response['customer']['bonusPoints']['available'] ?? 0;
}
При успешном списании баллов — применяем скидку в заказе через CSaleBasket::UpdatePrice().
Кейс: единый профиль клиента
Сеть косметических магазинов: интернет-магазин на Битриксе + офлайн-кассы + мобильное приложение. До Mindbox — три разрозненные базы клиентов, маркетологи не видели полной картины.
После интеграции Mindbox объединил профили по телефону и email: клиент, купивший в офлайне, получает letter с «похожими товарами» на основе чека, а не generic-рассылку. Retention rate вырос на 12% за полгода.
| Задача | Трудозатраты |
|---|---|
| Настройка JS SDK + трекинг просмотров | 4–6 ч |
| Server-side API: заказы и профили | 8–12 ч |
| Интеграция программы лояльности | 8–16 ч |
| Синхронизация офлайн-данных | по проекту |







