На одному з проєктів — інтернет-магазин електроніки з 15 000 товарів і 3000 щоденних відвідувачів, який обробляє близько 200 замовлень на день — ми помітили, що Carrot Quest ідентифікує лише 20% авторизованих сесій. Інші візити залишалися анонімними, хоча користувачі були залогінені. Причина — відсутність виклику carrotquest.identify() після авторизації. Стандартний снипет у шаблоні не передавав email та ID. Після впровадження коректної ідентифікації з хеш-верифікацією кількість ідентифікованих сесій зросла до 95%, і тригерні ланцюжки почали працювати. За рахунок цього конверсія в чат-діалог збільшилася на 40%, а середній чек замовлення — на 12%. Документація Carrot Quest підтверджує, що ідентифікація з хешем є обов'язковою умовою для верифікації даних. У результаті кампанія з автоматизації маркетингу принесла додатково 500 000 грн виручки на місяць.
Проблеми, які вирішуємо
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 днів залежно від кількості подій. Вартість розраховується індивідуально після аналізу структури вашого сайту. Зв'яжіться з нами для розрахунку вартості інтеграції — підберемо оптимальний склад робіт.
Ми гарантуємо коректну передачу всіх даних та відсутність помилок у консолі. Отримайте консультацію через форму на сайті — ми запропонуємо рішення, яке окупиться за рахунок зростання конверсії.







