Інтеграція 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 дні після накопичення перших даних.







