Налаштування передачі даних з онлайн-чату в CRM Бітрікс24

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування передачі даних з онлайн-чату в CRM Бітрікс24
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування передачі даних з онлайн-чату в CRM Бітрікс24

Дані з чату потрапляють у CRM трьома шляхами: через нативний конектор (якщо у чату є готова інтеграція), через Webhook чату до REST API Бітрікс24, або через поштовий канал CRM. Вибір залежить від платформи чату та вимог до повноти даних.

Спосіб 1: Webhook чату → crm.lead.add

Більшість чат-платформ (JivoSite, Chatra, Talk-Me, LiveTex) підтримують Webhook при завершенні діалогу. Обробник на стороні сайту отримує дані та створює лід:

// /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]);
function createBitrix24Lead(string $name, string $email, string $phone, string $comments): int
{
    $b24Url = rtrim(getenv('B24_WEBHOOK_URL'), '/') . '/';

    $fields = [
        'TITLE'     => 'Чат: ' . ($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 → Маркетплейс → знайти потрібний чат → Встановити. Авторизуєте конектор в акаунті чату, налаштовуєте, до якої Відкритої лінії надходять звернення.

Обмеження нативних конекторів: дані передаються в тому вигляді, в якому їх надає платформа. Кастомні поля (наприклад, дані кошика 1С-Бітрікс) через нативний конектор передати не можна — лише через Webhook з власним обробником.

Спосіб 3: Поштовий канал CRM

Найпростіший варіант для чатів без Webhook: налаштуйте надсилання транскрипту на email, який Бітрікс24 моніторить як поштовий канал CRM. Бітрікс24 розпізнає контакт за email з листа та створює лід автоматично.

Налаштування: Бітрікс24 → CRM → Налаштування → Поштові канали → Додати канал. Вкажіть скриньку, з якої надходять листи від чату.

Передача додаткових даних через 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));
});
// У 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;

Перевірка дублів перед створенням

function leadExists(string $email, string $phone): bool
{
    $b24Url = rtrim(getenv('B24_WEBHOOK_URL'), '/') . '/';

    foreach (array_filter([$email, $phone]) as $value) {
        $field    = $email === $value ? 'EMAIL' : 'PHONE';
        $response = callB24($b24Url . 'crm.lead.list.json', ['filter' => [$field => $value], 'select' => ['ID']]);
        if (!empty($response['result'])) return true;
    }
    return false;
}

Терміни виконання

Спосіб Термін
Нативний конектор з маркетплейсу 2–4 години
Webhook → crm.lead.add 1–2 дні
Webhook з дедублікацією та UTM 2–3 дні