На одном из проектов — интернет-магазин электроники с 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 дней в зависимости от количества событий. Стоимость рассчитывается индивидуально после анализа структуры вашего сайта. Свяжитесь с нами для расчёта стоимости интеграции — подберём оптимальный состав работ.
Мы гарантируем корректную передачу всех данных и отсутствие ошибок в консоли. Получите консультацию через форму на сайте — мы предложим решение, которое окупится за счёт роста конверсии.







