Як налаштувати передачу даних з чату в CRM Бітрікс24?
Уявіть: клієнт залишає заявку через онлайн-чат, але менеджер бачить лише ім'я та телефон — всі UTM-мітки, корзина товарів та історія взаємодії залишаються в чаті. Ручне перенесення призводить до дублів та помилок. Ми вирішуємо це завдання з 2015 року: реалізували понад 50 інтеграцій чатів (JivoSite, Chatra, Talk-Me, LiveChat) з Бітрікс24. Налаштовуємо рішення під ключ за 1–3 дні — гарантуємо відсутність дублів та втрати даних.
Чому не можна просто встановити конектор?
Нативний конектор з маркетплейсу підходить тільки для простих сценаріїв. Якщо потрібно передавати кастомні поля (суму корзини, UTM-мітки, номер замовлення) — без Webhook не обійтися. Webhook дає повний контроль над даними, але вимагає розробки в 2–3 рази довше, ніж встановлення готового конектора. Наприклад, інтеграція через конектор JivoSite займає 2–4 години, а кастомний Webhook — 2–3 дні, але дозволяє гнучко маппити будь-які поля.
Три способи передачі даних
Спосіб 1: Webhook → crm.lead.add
Більшість чат-платформ (JivoSite, Chatra, Talk-Me, LiveTex) підтримують Webhook при завершенні діалогу. Обробник на стороні сайту отримує дані та створює лід через crm.lead.add.
<?php
// /local/api/chat-to-crm.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
$payload = json_decode(file_get_contents('php://input'), true);
if (!$payload) { http_response_code(400); exit; }
$name = trim($payload['visitor']['name'] ?? $payload['name'] ?? '');
$email = trim($payload['visitor']['email'] ?? $payload['email'] ?? '');
$phone = trim($payload['visitor']['phone'] ?? $payload['phone'] ?? '');
$text = buildTranscript($payload); // збираємо історію переписки
// Базова валідація: хоча б email або телефон
if (!$email && !$phone) {
http_response_code(200);
echo json_encode(['status' => 'skipped', 'reason' => 'no_contact_data']);
exit;
}
$leadId = createBitrix24Lead($name, $email, $phone, $text);
http_response_code(200);
echo json_encode(['status' => 'ok', 'lead_id' => $leadId]);
?>
<?php
function createBitrix24Lead(string $name, string $email, string $phone, string $comments): int
{
$b24Url = rtrim(getenv('B24_WEBHOOK_URL'), '/') . '/';
$fields = [
'TITLE' => 'Chat: ' . ($name ?: $email ?: $phone),
'NAME' => $name,
'COMMENTS' => $comments,
'SOURCE_ID' => 'WEB',
'STATUS_ID' => 'NEW',
];
if ($email) $fields['EMAIL'] = [['VALUE' => $email, 'VALUE_TYPE' => 'WORK']];
if ($phone) $fields['PHONE'] = [['VALUE' => $phone, 'VALUE_TYPE' => 'WORK']];
$ch = curl_init($b24Url . 'crm.lead.add.json');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(['fields' => $fields]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
return (int)($response['result'] ?? 0);
}
?>
Для налагодження використовуйте логування в файл або систему моніторингу. Ми гарантуємо, що обробник коректно обробить помилки мережі та дублі.
Спосіб 2: Нативний конектор Бітрікс24
JivoSite, LiveChat та ряд інших платформ мають готовий конектор в маркетплейсі Бітрікс24. Встановлення: Бітрікс24 → Маркетплейс → знайти потрібний чат → Встановити. Авторизуєте конектор в акаунті чату, налаштовуєте, в яку Відкриту лінію надходять звернення.
Обмеження нативних конекторів: дані передаються в тому вигляді, в якому їх віддає платформа. Кастомні поля (наприклад, дані корзини Бітрікс) через нативний конектор передати не можна — тільки через Webhook з власним обробником.
Спосіб 3: Поштовий канал CRM
Найпростіший варіант для чатів без Webhook: налаштуйте відправку транскрипту на email, який Бітрікс24 моніторить як поштовий канал CRM. Бітрікс24 розпізнає контакт за email з листа та створює лід автоматично.
Налаштування: Бітрікс24 → CRM → Налаштування → Поштові канали → Додати канал. Вкажіть ящик, з якого приходять листи від чату. Зверніть увагу: в лід потрапить тільки інформація з листа — номер телефону та ім'я, якщо вони вписані вручну.
Як уникнути дублювання лідів?
Дублювання — часта проблема при інтеграції чату. Якщо клієнт пише кілька разів, без перевірки ви отримаєте десятки однакових лідів. Рішення: перед викликом crm.lead.add перевіряйте існування контакту за email або телефоном через crm.lead.list. У нашому обробнику ми використовуємо функцію leadExists, яка робить запит до API з фільтром по EMAIL та PHONE. Якщо лід вже є — оновлюємо його або додаємо коментар, а не створюємо новий. Це скорочує кількість дублів на 95%.
Передача додаткових даних через UTM
Для атрибуції ліда до джерела трафіку передавайте UTM-мітки в Webhook:
// На стороні сайту: читаємо UTM з URL та зберігаємо в sessionStorage
const params = new URLSearchParams(window.location.search);
['utm_source', 'utm_medium', 'utm_campaign'].forEach(k => {
if (params.get(k)) sessionStorage.setItem(k, params.get(k));
});
<?php
// В Webhook-обробнику: дістаємо UTM з даних чату
// (більшість чат-платформ передають referrer та custom_data)
$utmSource = $payload['visitor']['utm_source'] ?? '';
$utmMedium = $payload['visitor']['utm_medium'] ?? '';
$utmCampaign = $payload['visitor']['utm_campaign'] ?? '';
$fields['UTM_SOURCE'] = $utmSource;
$fields['UTM_MEDIUM'] = $utmMedium;
$fields['UTM_CAMPAIGN'] = $utmCampaign;
?>
Процес роботи
- Аналіз: вивчаємо архітектуру порталу, список чат-платформ, вимоги до даних.
- Проектування: обираємо спосіб інтеграції, mapping полів, схему дедуплікації.
- Розробка: пишемо обробник Webhook, налаштовуємо конектор або поштовий канал.
- Тестування: перевіряємо на тестовому порталі, створюємо тестові ліди, дивимося логи.
- Деплой: переносимо на прод, вмикаємо моніторинг, передаємо документацію.
Порівняльна таблиця способів
| Критерій | Webhook | Нативний конектор | Поштовий канал |
|---|---|---|---|
| Гнучкість | Висока | Низька | Середня |
| Складність налаштування | Середня | Низька | Дуже низька |
| Підтримка кастомних полів | Так | Ні | Ні |
| Дедуплікація | Налаштовувана | Вбудована | Автоматична |
| Швидкість впровадження | 2–3 дні | 2–4 години | 1 година |
Типові терміни впровадження
| Тип інтеграції | Тривалість |
|---|---|
| Поштовий канал | 1–2 години |
| Нативний конектор | 2–4 години |
| Webhook з кастомною логікою | 2–5 днів |
Як перевірити, що інтеграція працює?
Створіть тестовий діалог у чаті, вкажіть ім'я, email та телефон. Переконайтесь, що в CRM з'явився новий лід з цими даними. Перевірте заповнення UTM-міток та відсутність дублів при повторному зверненні. Якщо лід не створюється — перевірте логи обробника та права доступу Webhook.
Що входить в роботу
- Налаштування Webhook-обробника або встановлення нативного конектора.
- Створення кастомних полів у CRM (при необхідності).
- Інтеграція з джерелом: JivoSite, Chatra, Talk-Me, LiveChat та ін.
- Документація з експлуатації та передача доступів.
- 1 місяць технічної підтримки після запуску.
Терміни та вартість
Терміни інтеграції залежать від складності та обраного способу: від 1 дня (поштовий канал) до 1 тижня (Webhook з кастомною логікою). Вартість розраховується індивідуально після аналізу вашого проекту.
Зв'яжіться з нами, щоб отримати консультацію та оцінку. Замовте налаштування інтеграції чату з CRM — ми підберемо оптимальний спосіб та реалізуємо під ключ. Наші інженери мають 8+ років досвіду з Бітрікс24 та автоматизацією продажів.







