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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка передачи данных из онлайн-чата в CRM Битрикс24
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1260
  • 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 Appointment Booking Widget for a Medical Center
    584
  • 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 → Маркетплейс → найти нужный чат → Установить. Авторизуете коннектор в аккаунте чата, настраиваете, в какую Открытую линию поступают обращения.

Ограничение нативных коннекторов: данные передаются в том виде, в каком их отдаёт платформа. Кастомные поля (например, данные корзины Битрикс) через нативный коннектор передать нельзя — только через 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 дня