Інтеграція 1С-Бітрікс з Carrot Quest

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Carrot Quest
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 1С-Бітрікс з Carrot Quest

Carrot Quest — платформа, що об'єднує онлайн-чат, email-маркетинг, поп-апи та аналітику поведінки користувачів в одному інструменті. На відміну від простих чатів, тут важлива ідентифікація користувача: кожна подія (перегляд товару, додавання до кошика, оформлення замовлення) прив'язується до профілю. Без цієї прив'язки Carrot Quest перетворюється на дорогий онлайн-чат.

Установка трекінг-коду

Код Carrot Quest вставляється в шаблон сайту перед </body>:

// У шаблоні Бітрікс
(function(){ /* ... стандартний сніпет Carrot Quest ... */ })();
carrotquest.connect('YOUR_API_KEY');

Ідентифікація користувача з Бітрікс

Ключова операція — carrotquest.identify(). Без неї всі події анонімні і не накопичуються в профілі.

<?php if ($USER->IsAuthorized()):
    $userId    = $USER->GetID();
    $userEmail = $USER->GetEmail();
    $userName  = $USER->GetFullName();
    // Хеш для верифікації на сервері Carrot Quest
    $hash = hash_hmac('sha256', $userId, 'YOUR_SECRET_KEY');
?>
<script>
carrotquest.identify({
    '$user_id':    <?= json_encode($userId) ?>,
    '$email':      <?= json_encode($userEmail) ?>,
    '$name':       <?= json_encode($userName) ?>,
    '$phone':      <?= json_encode(getUserPhone($userId)) ?>,
    'orders_count': <?= getUserOrdersCount($userId) ?>,
    'total_spent':  <?= getUserTotalSpent($userId) ?>,
}, <?= json_encode($hash) ?>);
</script>
<?php endif; ?>

Параметр хешу — HMAC-SHA256 від user_id із секретним ключем. Це верифікує справжність даних на стороні Carrot Quest і запобігає підміні чужого ID.

Відправка подій із каталогу Бітрікс

Carrot Quest цінний як аналітична платформа саме тоді, коли отримує події з усієї воронки. Події надсилаються через carrotquest.track():

Перегляд картки товару (у шаблоні catalog.element):

carrotquest.track('Перегляд товару', {
    product_id:   <?= $arResult['ID'] ?>,
    product_name: <?= json_encode($arResult['NAME']) ?>,
    price:        <?= $arResult['CATALOG_PRICE_1'] ?? 0 ?>,
    category:     <?= json_encode($sectionName) ?>,
});

Додавання до кошика (обробник кнопки):

// Після успішного AJAX-додавання до кошика
carrotquest.track('Товар додано до кошика', {
    product_id:   productId,
    product_name: productName,
    price:        price,
    quantity:     quantity,
});

Оформлення замовлення (у шаблоні sale.order.ajax, подія після створення замовлення):

carrotquest.track('Замовлення оформлено', {
    order_id:    <?= $orderId ?>,
    total_price: <?= $orderTotal ?>,
    items_count: <?= $itemsCount ?>,
    payment_method: <?= json_encode($paymentMethod) ?>,
});

Сегментація користувачів через атрибути

Після ідентифікації carrotquest.identify() можна оновлювати атрибути користувача при кожному візиті — це дозволяє будувати сегменти в Carrot Quest для тригерних повідомлень:

// Оновлюємо після кожної авторизації
carrotquest.identify({
    'last_visit':       new Date().toISOString(),
    'cart_value':       <?= $basketTotal ?>,
    'cart_items_count': <?= $basketCount ?>,
    'loyalty_level':    <?= json_encode($loyaltyLevel) ?>,
});

Інтеграція через PHP API Carrot Quest

Окрім JS-трекінгу, Carrot Quest має REST API для серверної сторони. Це потрібно, коли подія відбувається поза браузером — наприклад, зміна статусу замовлення:

// При зміні статусу замовлення — повідомляємо Carrot Quest
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'sale', 'OnSaleStatusOrder',
    function (\Bitrix\Main\Event $event) {
        $order      = $event->getParameter('ENTITY');
        $userId     = $order->getUserId();
        $userEmail  = getUserEmail($userId);
        $statusId   = $order->getField('STATUS_ID');

        $payload = [
            'id'         => $userEmail,
            'id_type'    => 1, // 1 = email
            'event'      => 'Статус замовлення змінено',
            'params'     => [
                'order_id'   => $order->getId(),
                'new_status' => $statusId,
            ],
        ];

        $ch = curl_init('https://api.carrotquest.io/v1/users/events');
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Token YOUR_API_KEY', 'Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_exec($ch);
        curl_close($ch);
    }
);

Автоматичні повідомлення за подіями

Після налаштування трекінгу в інтерфейсі Carrot Quest створюються тригерні ланцюжки:

  • Користувач переглянув товар X → не додав до кошика за 30 хвилин → чат-повідомлення «Потрібна допомога з вибором?»
  • Замовлення створено → статус «Доставлено» → через 7 днів email «Залиште відгук»
  • Користувач не заходив 60 днів → email зі знижкою

Усе це налаштовується в інтерфейсі Carrot Quest без коду — за умови, що події надходять коректно.

Відлагодження трекінгу

Використовуйте консоль браузера: при правильному налаштуванні carrotquest.track() та carrotquest.identify() виводять підтвердження в консоль у режимі розробки. В адміністративній панелі Carrot Quest розділ Аналітика → Події показує вхідні події в реальному часі.

Склад робіт: установка коду та ідентифікація користувача — 1 день. Трекінг усіх подій воронки — 2–3 дні. Серверний API для змін статусу замовлення — ще 1 день. Налаштування тригерних ланцюжків — 1–2 дні після накопичення перших даних.