Интеграция 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 дня после накопления первых данных.







