Передача данных из квиз-формы в CRM Битрикс24: webhook, REST

Менеджер получает в CRM просто контакт, а ответы квиза (бюджет, сроки, предпочтения) остаются в нечитаемом комментарии или вообще не попадают в систему. В результате квалификация лида затягивается на часы, а рекламные каналы — без атрибуции. Мы решаем эту задачу: настраиваем передачу каждого ответа
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Передача данных из квиз-формы в CRM Битрикс24: webhook, REST
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1428
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1008
  • 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
    745
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    869
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    782
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1149

Менеджер получает в CRM просто контакт, а ответы квиза (бюджет, сроки, предпочтения) остаются в нечитаемом комментарии или вообще не попадают в систему. В результате квалификация лида затягивается на часы, а рекламные каналы — без атрибуции. Мы решаем эту задачу: настраиваем передачу каждого ответа квиза в отдельное пользовательское поле Битрикс24, создаём лид с UTM-метками и автоматической задачей-колбеком. Интеграция выполняется под ключ с гарантией 6 месяцев и опытом 10+ лет на Битрикс.

Почему стандартные формы заявок уступают квизам?

Обычная форма из трёх полей (имя, телефон, комментарий) даёт менеджеру минимум информации. Клиент не всегда знает, что написать в комментарии, и часто оставляет пустым. Квиз-форма структурирует диалог: задаёт конкретные вопросы (бюджет, сроки, предпочтения) и фиксирует выбор из вариантов. В результате в CRM попадают не просто контакт, а готовая квалификация лида. Это сокращает время обработки в 2–3 раза.

Три подхода к интеграции: сравнение

Подход Сложность Кастомизация Время внедрения Требует разработки
Webhook от квиз-сервиса -> посредник -> Битрикс24 Средняя Высокая (свой маппинг) 3–7 дней Да (PHP-обработчик)
Кастомный квиз на сайте -> REST API Высокая Максимальная 1–2 недели Да (фронт + бэк)
CRM-форма Битрикс24 (мультишаг) Низкая Низкая (дизайн) 1–2 часа Нет

Мы рекомендуем первый вариант как оптимальный по соотношению цена/качество. Он подходит для большинства бизнесов, уже использующих готовые квиз-платформы.

Как интеграция квиз-формы с Битрикс24 ускоряет обработку лидов?

При ручной обработке менеджер тратит время на перезвон и уточнение потребностей. С интеграцией все ответы уже есть в карточке лида: бюджет, срочность, тип помещения — отдельными полями. Менеджер сразу видит, звонить ли срочно или отправить коммерческое предложение. Дополнительно мы создаём задачу-активность «Позвонить через 2 часа» — это автоматизирует follow-up и снижает риск потери лида.

Webhook-обработчик: Marquiz → Битрикс24

Marquiz отправляет POST с JSON-пейлоадом при завершении квиза:

Пример пейлоада Marquiz
{ "quiz_id": "abc123", "quiz_name": "Подбор окон", "contact": { "name": "Иван", "phone": "+79161234567", "email": "[email protected]" }, "answers": [ {"question": "Тип помещения", "answer": "Квартира"}, {"question": "Количество окон", "answer": "3"}, {"question": "Срочность", "answer": "В течение месяца"}, {"question": "Бюджет", "answer": "$500–1k."} ], "result": "Стандартный пакет", "utm": { "utm_source": "yandex", "utm_campaign": "windows_brand" } } 

Обработчик на стороне вашего сервера (посредника между Marquiz и Битрикс24):

// /local/api/quiz-webhook.php require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'); header('Content-Type: application/json'); $payload = json_decode(file_get_contents('php://input'), true); // Верификация по секретному токену в заголовке $token = $_SERVER['HTTP_X_QUIZ_TOKEN'] ?? ''; $secret = \Bitrix\Main\Config\Option::get('local.quiz', 'webhook_secret_marquiz'); if (!hash_equals($secret, $token)) { http_response_code(403); exit(json_encode(['error' => 'Unauthorized'])); } $integrator = new \Local\Quiz\Bx24Integrator(); $result = $integrator->createLeadFromQuiz($payload); echo json_encode(['success' => true, 'lead_id' => $result]); 

Создание лида в Битрикс24 через REST

namespace Local\Quiz; use Local\Bx24\RestClient; class Bx24Integrator { private RestClient $bx24; public function __construct() { // Входящий вебхук Битрикс24 с правами crm.lead.add $webhookUrl = \Bitrix\Main\Config\Option::get('local.quiz', 'bx24_webhook_url'); $this->bx24 = new RestClient($webhookUrl); } public function createLeadFromQuiz(array $data): int { $contact = $data['contact'] ?? []; $answers = $data['answers'] ?? []; // Формируем блок комментария с ответами квиза $comments = $this->buildQuizComment($data['quiz_name'] ?? '', $answers, $data['result'] ?? ''); $leadFields = [ 'TITLE' => ($data['quiz_name'] ?? 'Квиз') . ': ' . ($contact['phone'] ?? ''), 'NAME' => $contact['name'] ?? '', 'PHONE' => [['VALUE' => $contact['phone'] ?? '', 'VALUE_TYPE' => 'WORK']], 'EMAIL' => [['VALUE' => $contact['email'] ?? '', 'VALUE_TYPE' => 'WORK']], 'SOURCE_ID' => 'WEB', 'STATUS_ID' => 'NEW', 'COMMENTS' => $comments, 'UF_QUIZ_ID' => $data['quiz_id'] ?? '', 'UF_QUIZ_RESULT' => $data['result'] ?? '', 'UF_UTM_SOURCE' => $data['utm']['utm_source'] ?? '', 'UF_UTM_CAMPAIGN'=> $data['utm']['utm_campaign'] ?? '', ]; // Добавляем отдельные поля под конкретные вопросы квиза $leadFields = $this->mapAnswersToFields($leadFields, $answers); $result = $this->bx24->call('crm.lead.add', ['fields' => $leadFields]); $leadId = (int)($result['result'] ?? 0); if ($leadId) { // Добавляем задачу менеджеру $this->bx24->call('crm.activity.add', [ 'fields' => [ 'TYPE_ID' => 2, // звонок 'SUBJECT' => 'Позвонить по квизу: ' . ($contact['phone'] ?? ''), 'OWNER_TYPE_ID' => 1, // лид 'OWNER_ID' => $leadId, 'DEADLINE' => date('c', strtotime('+2 hours')), ], ]); } return $leadId; } private function buildQuizComment(string $quizName, array $answers, string $result): string { $lines = ["=== Квиз: {$quizName} ==="]; foreach ($answers as $answer) { $lines[] = ($answer['question'] ?? '?') . ': ' . ($answer['answer'] ?? '—'); } if ($result) { $lines[] = ''; $lines[] = "Результат квиза: {$result}"; } return implode("\n", $lines); } private function mapAnswersToFields(array $fields, array $answers): array { // Маппинг конкретных вопросов в пользовательские поля Битрикс24 $mapping = [ 'Количество окон' => 'UF_WINDOWS_COUNT', 'Тип помещения' => 'UF_ROOM_TYPE', 'Бюджет' => 'UF_BUDGET_RANGE', 'Срочность' => 'UF_URGENCY', ]; foreach ($answers as $answer) { $question = $answer['question'] ?? ''; $fieldCode = $mapping[$question] ?? null; if ($fieldCode) { $fields[$fieldCode] = $answer['answer'] ?? ''; } } return $fields; } } 

Кастомные поля в Битрикс24 для квиза

Поля создаются через REST API или в интерфейсе Битрикс24 (CRM → Настройки → Пользовательские поля):

// Создание пользовательского поля для лида через REST $this->bx24->call('crm.userfield.add', [ 'fields' => [ 'ENTITY_ID' => 'CRM_LEAD', 'FIELD_NAME' => 'UF_QUIZ_RESULT', 'USER_TYPE_ID'=> 'string', 'XML_ID' => 'QUIZ_RESULT', 'EDIT_FORM_LABEL' => ['ru' => 'Результат квиза'], 'LIST_COLUMN_LABEL' => ['ru' => 'Результат квиза'], 'MANDATORY' => 'N', ], ]); 

Маппинг вопросов квиза в пользовательские поля

Вопрос квиза Поле в CRM Тип
Бюджет UF_BUDGET_RANGE string
Тип помещения UF_ROOM_TYPE string
Срочность UF_URGENCY string
Количество окон UF_WINDOWS_COUNT integer

Интеграция через CRM-форму Битрикс24

Если квиз разрабатывается с нуля — альтернативный подход: CRM-форма Битрикс24 со скрытыми полями. Последний шаг квиза отправляет данные напрямую в форму через API:

// Финальный шаг квиза: отправляем данные в CRM-форму Битрикс24 async function submitQuizToBx24(answers, contact) { const formData = new FormData(); // Поля CRM-формы formData.append('fields[NAME]', contact.name); formData.append('fields[PHONE][0][VALUE]', contact.phone); formData.append('fields[UF_QUIZ_RESULT]', getQuizResult(answers)); formData.append('fields[COMMENTS]', formatAnswers(answers)); // ID формы из настроек Битрикс24 const formId = document.getElementById('quiz-container').dataset.bx24FormId; await fetch(`https://your-domain.bitrix24.ru/crm/webform/import/form/${formId}/`, { method: 'POST', body: formData, }); } 

Этапы интеграции (пошагово)

  1. Анализ структуры квиза и требований к полям CRM.
  2. Создание пользовательских полей в Битрикс24 (через REST или интерфейс).
  3. Разработка webhook-обработчика или REST-скрипта для приёма данных.
  4. Настройка маппинга вопросов → поля лида.
  5. Создание автоматической задачи-активности (звонок через 2 часа).
  6. Тестирование полного сценария: заполнение квиза → появление лида в CRM.
  7. Документация и передача доступов.

Почему важно передавать UTM-метки в сделку?

Без UTM-меток вы не узнаете, какой канал привёл целевого клиента. В интеграции мы передаём utm_source и utm_campaign в отдельные поля лида. Это позволяет строить отчёты по эффективности рекламных кампаний прямо в CRM, без дополнительных систем аналитики. Для менеджеров это помогает понимать контекст: например, лид с дешёвого баннера требует другого подхода, чем с дорогой контекстной рекламы.

Типичные ошибки при интеграции

  • Отсутствие верификации webhook-запроса (секретный токен). Без неё любой может отправить фейковые лиды.
  • Маппинг ответов только в комментарии. Ответы теряются в тексте, менеджеру сложно их анализировать.
  • Игнорирование UTM-меток. Вы теряете атрибуцию трафика.
  • Создание лида без автоматической задачи. Клиент может «зависнуть» в статусе NEW на дни.

Мы учитываем эти нюансы в каждом проекте. Наш опыт позволяет избежать типовых проблем и внедрить интеграцию с первого раза.

Сроки и стоимость

  • Базовый webhook (один квиз-сервис, 3 поля ответа, без UTM) — от 3 до 7 дней.
  • Полная настройка (кастомные поля, активность, UTM, несколько квизов) — 1–2 недели.

Стоимость рассчитывается индивидуально, зависит от количества квизов и сложности маппинга. Свяжитесь с нами для оценки вашего проекта — пришлём коммерческое предложение в течение дня. Закажите интеграцию и получите готовое решение с гарантией 6 месяцев.