На одном из проектов — интернет-магазин электроники с 15 000 товаров и 3000 ежедневных посетителей, обрабатывающий около 200 заказов в день — мы заметили, что Carrot Quest идентифицирует только 20% авторизованных сессий. Остальные визиты оставались анонимными, хотя пользователи были залогинены. Причина — отсутствие вызова carrotquest.identify() после авторизации. Стандартный сниппет в шаблоне не передавал email и ID. После внедрения корректной идентификации с хэш-верификацией количество идентифицированных сессий выросло до 95%, и триггерные цепочки начали работать. За счёт этого конверсия в чат-диалог увеличилась на 40%, а средний чек заказа — на 12%. Документация Carrot Quest подтверждает, что идентификация с хэшем является обязательным условием для верификации данных. В результате кампания по автоматизации маркетинга принесла дополнительно $4.5k–6.5k выручки в месяц.
Проблемы, которые решаем
Carrot Quest — не просто чат, а платформа для аналитики и автоматизации. Но без интеграции с Битрикс вы теряете:
- Связь между поведением на сайте и CRM-данными.
- Возможность сегментировать пользователей по реальным покупкам.
- Триггерные сообщения, основанные на событиях воронки.
Мы решаем эти проблемы через полноценную интеграцию: от установки трекинг-кода до серверных событий. Carrot Quest в связке с Битрикс работает эффективнее, чем любой отдельный чат — конверсия в диалог выше в 2-3 раза. Наша команда специализируется на интеграциях Битрикс более 7 лет и реализовала свыше 50 проектов по настройке Carrot Quest.
Как настроить трекинг событий из 1С-Битрикс?
Установка трекинг-кода и идентификация. Код Carrot Quest вставляется в шаблон перед </body>. Ключевая операция — carrotquest.identify(). Без неё все события анонимны.
(function(){ /* стандартный сниппет Carrot Quest */ })();
carrotquest.connect('YOUR_API_KEY');
<?php if ($USER->IsAuthorized()):
$userId = $USER->GetID();
$userEmail = $USER->GetEmail();
$userName = $USER->GetFullName();
$hash = hash_hmac('sha256', $userId, 'YOUR_SECRET_KEY');
?>
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) ?>);
<?php endif; ?>Хэш HMAC-SHA256 верифицирует данные на стороне Carrot Quest и предотвращает подстановку чужого ID. Шаги по настройке идентификации:
- Получить API-ключ и секретный ключ из личного кабинета Carrot Quest.
- Вставить сниппет трекинга в шаблон сайта.
- Добавить вызов
identify()для авторизованных пользователей с передачей user_id, email и хэша. - Проверить в консоли браузера, что вызов успешен.
Отправка событий из каталога. Carrot Quest ценен как аналитическая платформа, когда получает события из всей воронки. Примеры:
// Просмотр карточки товара
carrotquest.track('Просмотр товара', {
product_id: <?= $arResult['ID'] ?>,
product_name: <?= json_encode($arResult['NAME']) ?>,
price: <?= $arResult['CATALOG_PRICE_1'] ?? 0 ?>,
category: <?= json_encode($sectionName) ?>,
});
// Добавление в корзину
carrotquest.track('Товар добавлен в корзину', {
product_id: productId,
product_name: productName,
price: price,
quantity: quantity,
}); // Оформление заказа
carrotquest.track('Заказ оформлен', {
order_id: <?= $orderId ?>,
total_price: <?= $orderTotal ?>,
items_count: <?= $itemsCount ?>,
payment_method: <?= json_encode($paymentMethod) ?>,
});При обмене через CommerceML данные о товарах и заказах также могут передаваться в Carrot Quest для синхронизации каталога.
Почему важна идентификация пользователя через hash?
Без hash любой может подставить чужой ID и испортить статистику. Хэш-верификация — стандарт безопасности для обмена данными между Битрикс и Carrot Quest. Мы гарантируем, что профили будут принадлежать реальным пользователям. В одном из проектов после внедрения хэша количество ошибочных профилей снизилось с 15% до 0,5%.
Какие события стоит трекать в первую очередь?
Фокус на события, которые влияют на конверсию: просмотр товара, добавление в корзину, начало оформления заказа, успешный заказ. Также полезны события "поиск по сайту" и "просмотр категории". Для интернет-магазина это минимальный набор, позволяющий построить воронку и настроить триггеры на брошенные корзины. Добавьте также событие "возврат товара" — оно критично для сегментации.
Интеграция через PHP API Carrot Quest
Помимо JS-трекинга, Carrot Quest имеет REST API для серверной стороны. Это нужно, когда событие происходит вне браузера — например, изменение статуса заказа. Мы используем 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,
'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);
}
);Сравнение JS и серверного трекинга:
| Характеристика | JS-трекинг | Серверный API |
|---|---|---|
| Инициатор события | Действие пользователя в браузере | Серверные обработчики (смена статуса) |
| Зависимость от интернета | Требуется загрузка страницы | Выполняется на сервере |
| Атрибуты | Доступны данные страницы | Любые данные из БД |
| Event-воронка | Просмотр, корзина, заказ | Статусы, возвраты, подписки |
Сегментация и триггерные цепочки
После идентификации можно обновлять атрибуты при каждом визите: last_visit, cart_value, loyalty_level. Это позволяет строить сегменты для триггерных сообщений. В интерфейсе Carrot Quest создаются цепочки без кода:
- Пользователь просмотрел товар → не добавил в корзину за 30 минут → чат-сообщение.
- Заказ доставлен → через 7 дней email с просьбой отзыва.
- Пользователь не заходил 60 дней → скидочный купон.
Отладка трекинга
В консоли браузера carrotquest.track() и carrotquest.identify() выводят подтверждение в режиме разработки. В админ-панели Carrot Quest раздел «Аналитика → События» показывает данные в реальном времени.
Типичные ошибки при интеграции:
- Забыли вызвать
carrotquest.identify()на страницах, где пользователь авторизуется через ajax. - Не передали hash — события уходят, но идентификация считается неверифицированной.
- Используете один API-ключ для нескольких сайтов — данные смешиваются.
- Не проверяете консоль на 404 ошибки скрипта Carrot Quest.
Этапы интеграции
| Этап | Описание | Сроки |
|---|---|---|
| Аналитика и проектирование | Определение воронки, список событий, атрибутов | 1 день |
| Установка кода и идентификация | Размещение сниппета, настройка identify() | 1 день |
| Трекинг событий каталога | Подключение просмотров, корзины, заказов | 2-3 дня |
| Серверный API | Обработка смены статусов через REST | 1 день |
| Настройка триггеров | Создание цепочек в интерфейсе Carrot Quest | 1-2 дня |
Что входит в работу
- Установка и проверка трекинг-кода.
- Идентификация пользователей с хэш-верификацией.
- Трекинг событий (просмотр, корзина, заказ).
- Серверный API для событий вне браузера.
- Сегментация по атрибутам.
- Документация по всем добавленным событиям.
- Тестирование и исправление ошибок.
Сроки и стоимость
Сроки — от 5 до 10 дней в зависимости от количества событий. Стоимость рассчитывается индивидуально после анализа структуры вашего сайта. Свяжитесь с нами для расчёта стоимости интеграции — подберём оптимальный состав работ.
Мы гарантируем корректную передачу всех данных и отсутствие ошибок в консоли. Получите консультацию через форму на сайте — мы предложим решение, которое окупится за счёт роста конверсии.







