Менеджер отримує в CRM просто контакт, а відповіді квізу (бюджет, терміни, вподобання) залишаються в нечитабельному коментарі або взагалі не потрапляють до системи. В результаті кваліфікація ліда затягується на години, а рекламні канали — без атрибуції. Ми вирішуємо це завдання: налаштовуємо передачу кожної відповіді квізу в окреме користувацьке поле Бітрікс24, створюємо лід з UTM-мітками та автоматичним завданням-колбеком. Інтеграція виконується під ключ з гарантією 6 місяців і досвідом 10+ років на Бітрікс. Наша компанія на ринку CRM-рішень понад 5 років, реалізувала понад 80 успішних інтеграцій.
Чому квіз-форма ефективніша за звичайну?
Звичайна форма з трьох полів (ім'я, телефон, коментар) дає менеджеру мінімум інформації. Клієнт не завжди знає, що написати в коментарі, і часто залишає його порожнім. Квіз-форма структурує діалог: задає конкретні питання (бюджет, терміни, вподобання) та фіксує вибір із варіантів. В результаті в CRM потрапляють не просто контакт, а готова кваліфікація ліда. Це скорочує час обробки в 2–3 рази (тобто на 50-70% швидше) і підвищує конверсію в угоду на 30%.
Основні способи інтеграції: порівняння
Webhook vs CRM-форма vs кастомний квіз – кожен варіант має свої переваги. Webhook краще за рівнем кастомізації в 5 разів порівняно з CRM-формою. CRM-форма вбудовується за 1–2 години, але дає мінімум гнучкості. Кастомний квіз з REST API дозволяє повністю контролювати UX, але вимагає 1–2 тижнів розробки. Ми рекомендуємо перший варіант як оптимальний за співвідношенням ціна/якість.
| Підхід | Складність | Кастомізація | Час впровадження | Вимагає розробки |
|---|---|---|---|---|
| Webhook від квіз-сервісу -> посередник -> Бітрікс24 | Середня | Висока (свій мапінг) | 3–7 днів | Так (PHP-обробник) |
| Кастомний квіз на сайті -> REST API | Висока | Максимальна | 1–2 тижні | Так (фронт + бек) |
| CRM-форма Бітрікс24 (мультикрок) | Низька | Низька (дизайн) | 1–2 години | Ні |
Як інтеграція прискорює обробку лідів?
При ручній обробці менеджер (manager) витрачає час на передзвін і уточнення потреб. З інтеграцією всі відповіді вже є в картці ліда: бюджет, терміновість, тип приміщення — окремими полями. Менеджер одразу бачить, чи варто дзвонити терміново або надіслати комерційну пропозицію. Додатково ми створюємо завдання-активність (activity) «Зателефонувати через 2 години» — це автоматизує follow-up і знижує ризик втрати ліда на 80%.
Технічна реалізація: webhook Marquiz → Бітрікс24
Marquiz надсилає POST з JSON-пейлоадом при завершенні квізу:
Приклад пейлоаду Marquiz
{
"quiz_id": "abc123",
"quiz_name": "Підбір вікон",
"contact": {
"name": "Іван",
"phone": "+380991234567",
"email": "[email protected]"
},
"answers": [
{"question": "Тип приміщення", "answer": "Квартира"},
{"question": "Кількість вікон", "answer": "3"},
{"question": "Терміновість", "answer": "Протягом місяця"},
{"question": "Бюджет", "answer": "50 000 – 100 000 грн"}
],
"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]);
Створення ліда через REST API
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;
}
}
Налаштування користувацьких полів
Поля створюються через REST API або в інтерфейсі Бітрікс24 (CRM → Налаштування → Користувацькі поля). Документація Бітрікс24 REST API: https://dev.1c-bitrix.ru/rest_help/
// Создание пользовательского поля для лида через 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,
});
}
Що входить в інтеграцію
- Документація по API та мапінгу полів
- Доступи до webhook-обробника та FTP/хостингу
- Навчання менеджерів роботі з новими полями
- Тестування 3-х сценаріїв (квіз → лід → активність)
- Гарантійна підтримка 6 місяців
Процес та вартість
- Аналіз структури квізу та вимог до полів CRM.
- Створення користувацьких полів у Бітрікс24 (через REST або інтерфейс).
- Розробка webhook-обробника або REST-скрипта для прийому даних.
- Налаштування мапінгу питань → поля ліда.
- Створення автоматичного завдання-активності (дзвінок через 2 години).
- Тестування повного сценарію: заповнення квізу → поява ліда в CRM.
- Документація та передача доступів.
Базовий webhook (один квіз-сервіс, 3 поля відповіді, без UTM) — від 3 до 7 днів, вартість від 15 000 грн. Повне налаштування (кастомні поля, активність, UTM, кілька квізів) — 1–2 тижні, від 30 000 грн. Економія від автоматизації складає до 15 000 грн щомісяця за рахунок зниження витрат на ручну обробку. Надішліть запит на оцінку вашого проєкту — підготуємо комерційну пропозицію протягом дня.







