Интеграция 1С-Битрикс с Mindbox (персонализация)

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Mindbox (персонализация)
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с Mindbox (персонализация)

Mindbox — платформа автоматизации маркетинга: единый профиль клиента, сегментация, триггерные рассылки, программы лояльности, персонализированные промокоды. Интеграция с Битрикс охватывает несколько направлений: передачу данных о клиентах и заказах, получение персонализированных предложений для конкретного пользователя и управление бонусной программой.

Архитектура интеграции

Mindbox работает через REST API с двумя режимами:

  • Синхронный — запрос → ответ в реальном времени. Используется при регистрации/авторизации (получить профиль клиента, начислить бонусы) и при оформлении заказа (применить скидку по промокоду, узнать баланс бонусов).
  • Асинхронный — события ставятся в очередь и обрабатываются Mindbox в фоне. Используется для передачи данных о просмотрах, добавлениях в корзину, истории заказов.
Битрикс → Mindbox API (events):   регистрация, заказ, просмотр
Mindbox → Битрикс (callback):     бонусный баланс, статус промокода
Mindbox → Email/SMS:               рассылки, триггеры (Mindbox внутри)

Аутентификация в Mindbox API

Mindbox использует авторизацию по секрету через заголовок:

Authorization: Mindbox secretKey="YOUR_SECRET_KEY"
Content-Type: application/json

Базовый URL: https://api.mindbox.ru/v3/operations/async (асинхронный) и /v3/operations/sync (синхронный).

Передача события регистрации

При регистрации пользователя в Битрикс — событие в Mindbox для создания/обновления профиля клиента:

AddEventHandler('main', 'OnAfterUserRegister', function(&$arUser) {
    sendMindboxEvent('Website.RegisterCustomer', [
        'customer' => [
            'email'       => $arUser['EMAIL'],
            'mobilePhone' => $arUser['PERSONAL_PHONE'] ?? '',
            'firstName'   => $arUser['NAME'] ?? '',
            'lastName'    => $arUser['LAST_NAME'] ?? '',
            'customFields'=> [
                'bitrixUserId' => $arUser['USER_ID'],
            ],
        ],
        'executionDateTimeUtc' => gmdate('Y-m-d\TH:i:s\Z'),
    ]);
});

function sendMindboxEvent(string $operation, array $data, bool $sync = false): ?array
{
    $endpoint = $sync
        ? 'https://api.mindbox.ru/v3/operations/sync'
        : 'https://api.mindbox.ru/v3/operations/async';

    $http = new \Bitrix\Main\Web\HttpClient();
    $http->setHeader('Authorization', 'Mindbox secretKey="' . MINDBOX_SECRET . '"');
    $http->setHeader('Content-Type', 'application/json');

    $payload = array_merge(['deviceUUID' => getMindboxDeviceUUID()], $data);

    $response = $http->post(
        $endpoint . '?endpointId=' . MINDBOX_ENDPOINT_ID
               . '&operation=' . urlencode($operation),
        json_encode($payload)
    );

    return $sync ? json_decode($response, true) : null;
}

Передача заказа

При создании заказа в Битрикс отправляем полные данные:

AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    $isNew = $event->getParameter('IS_NEW');
    if (!$isNew) return;

    $basket = $order->getBasket();
    $lines  = [];

    foreach ($basket->getOrderableItems() as $item) {
        $lines[] = [
            'product' => [
                'ids' => ['bitrix' => $item->getProductId()],
            ],
            'count'     => $item->getQuantity(),
            'price'     => $item->getPrice(),
            'basePricePerItem' => $item->getBasePrice(),
        ];
    }

    sendMindboxEvent('Website.CreateOrder', [
        'order' => [
            'ids'               => ['bitrix' => $order->getId()],
            'totalPrice'        => $order->getPrice(),
            'discountedPrice'   => $order->getPrice(),
            'lines'             => $lines,
        ],
        'customer' => [
            'email'      => $order->getUserEmail(),
            'ids'        => ['bitrixId' => $order->getUserId()],
        ],
    ]);
});

Бонусная программа: проверка и списание

Синхронный запрос при оформлении заказа — получить баланс бонусов и применить:

function getMindboxBonusBalance(int $userId): float
{
    $user   = CUser::GetByID($userId)->Fetch();
    $result = sendMindboxEvent('Website.GetCustomerBalance', [
        'customer' => ['email' => $user['EMAIL']],
    ], true);

    return (float)($result['customer']['bonusPointsBalance']['available'] ?? 0);
}

function applyMindboxBonuses(int $orderId, int $userId, float $bonusAmount): bool
{
    $user   = CUser::GetByID($userId)->Fetch();
    $result = sendMindboxEvent('Website.ConfirmOrderBonusPoints', [
        'order'    => ['ids' => ['bitrix' => $orderId]],
        'customer' => ['email' => $user['EMAIL']],
        'payment'  => ['bonusPoints' => $bonusAmount],
    ], true);

    return ($result['status'] ?? '') === 'Success';
}

На странице оформления заказа баланс бонусов запрашивается через AJAX и показывается пользователю с возможностью применить часть или всё.

Персонализированные промокоды

Mindbox генерирует персональные промокоды для каждого сегмента. При оформлении заказа проверяем промокод:

function validateMindboxPromocode(string $code, int $userId): ?array
{
    $user   = CUser::GetByID($userId)->Fetch();
    $result = sendMindboxEvent('Website.CheckPromocode', [
        'order'    => ['promocode' => $code],
        'customer' => ['email'     => $user['EMAIL']],
    ], true);

    if (($result['status'] ?? '') !== 'Success') {
        return null;
    }

    return [
        'discount_type'   => $result['order']['discountType'] ?? 'percent',
        'discount_value'  => $result['order']['discountValue'] ?? 0,
    ];
}

Возвращаемый тип и размер скидки используется при пересчёте корзины через механизм скидок Битрикс или напрямую через $item->setField('DISCOUNT_PRICE', ...).

DeviceUUID

Mindbox связывает анонимные действия и авторизованного пользователя через UUID устройства:

function getMindboxDeviceUUID(): string
{
    if (!isset($_COOKIE['mindboxDeviceUUID'])) {
        $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            mt_rand(0, 0xffff), mt_rand(0, 0xffff),
            mt_rand(0, 0xffff),
            mt_rand(0, 0x0fff) | 0x4000,
            mt_rand(0, 0x3fff) | 0x8000,
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
        );
        setcookie('mindboxDeviceUUID', $uuid, time() + 86400 * 365, '/');
        return $uuid;
    }
    return $_COOKIE['mindboxDeviceUUID'];
}

JavaScript-трекер Mindbox также читает этот UUID и автоматически привязывает поведение на сайте.

Подключение JS-трекера

<!-- В footer.php или через addExternalJs -->
<script>
var mindbox = window.mindbox || [];
mindbox.push = mindbox.push || function(e) { mindbox.queue.push(e); };
mindbox.queue = mindbox.queue || [];

mindbox('create', {
    endpointId: '<?= MINDBOX_ENDPOINT_ID ?>'
});
</script>
<script src="https://api.mindbox.ru/scripts/v1/tracker.js" async></script>

Сроки реализации

Объём Состав Срок
Базовый (регистрация + заказы + JS-трекер) Обработчики событий + клиент API 3–5 дней
Бонусная программа (баланс + списание) Синхронные запросы + форма в корзине +3–5 дней
Полная (промокоды + сегменты + персонализация) Вся интеграция + тестирование сценариев 2–3 недели