Розробка калькулятора зі збереженням результату в CRM Бітрікс24
Калькулятор на сайті, який при розрахунку створює лід або угоду в CRM Бітрікс24 — стандартне завдання лідогенерації. Технічно просте, але ламається в одному конкретному місці: REST API Бітрікс24 має ліміти запитів (2 запити на секунду для хмарного тарифу), і при сплеску трафіку частина лідів втрачається без будь-якого сповіщення про помилку.
Як влаштована інтеграція сайту з CRM
Сайт на 1С-Бітрікс і Бітрікс24 — два окремих продукти з окремими API. Для передачі даних з форми сайту в CRM використовується REST API Бітрікс24:
-
crm.lead.add— створити лід -
crm.deal.add— створити угоду одразу (якщо ліди не використовуються) -
crm.contact.add+crm.deal.add— створити контакт і прив'язати до нього угоду
Авторизація через вхідний вебхук (найпростіший спосіб) або через OAuth-застосунок (для продакшну з кількома порталами).
Приклад створення ліда через REST API:
$webhookUrl = 'https://your-portal.bitrix24.ru/rest/1/WEBHOOK_TOKEN/';
$fields = [
'TITLE' => 'Заявка з калькулятора: ' . $calculatorName,
'NAME' => $clientName,
'PHONE' => [['VALUE' => $clientPhone, 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $clientEmail, 'VALUE_TYPE' => 'WORK']],
'COMMENTS' => $calcResultText,
'SOURCE_ID' => 'WEB',
'UF_CRM_CALCULATOR_PARAMS' => json_encode($calcParams), // користувацьке поле
'UF_CRM_TOTAL_PRICE' => $totalPrice,
];
$response = file_get_contents(
$webhookUrl . 'crm.lead.add.json?' . http_build_query(['fields' => $fields])
);
$result = json_decode($response, true);
Передача параметрів калькулятора в CRM
Користувацькі поля ліда (UF_CRM_*) дозволяють зберегти всі параметри розрахунку: що саме рахував користувач, які значення обрав, яка підсумкова сума. Це критично для менеджера: він відкриває лід і одразу бачить конфігурацію, а не безіменний номер телефону.
Поля потрібно створити заздалегідь у Бітрікс24: CRM → Ліди → Налаштування полів → Додати поле. Тип залежить від даних: рядок, число, список. Після створення — ім'я поля виду UF_CRM_1_XXXXXXXXXX (число — ID користувача-власника).
Обробка лімітів та помилок API
Хмарний Бітрікс24 обмежує вхідні REST-запити: 2 запити на секунду, 5000 запитів на добу (залежить від тарифу). При перевищенні — відповідь {error: "QUERY_LIMIT_EXCEEDED"}. Типова реалізація без обробки лімітів втрачає ліди при піковому навантаженні.
Правильна реалізація:
- Збереження даних калькулятора в таблицю черги на стороні Бітрікс (
b_hl_*highload-блок або окрема таблиця) - Агент Бітрікс, який кожні 30 секунд відправляє записи з черги в CRM пачками з урахуванням лімітів
- Повторна відправка при помилці (з exponential backoff — 1с, 2с, 4с, 8с)
- Прапор
is_syncedу таблиці черги для контролю статусу
// Агент відправки лідів у CRM
function sendPendingLeadsToCRM(): string {
$pendingLeads = getUnsentLeads(limit: 10); // з таблиці черги
foreach ($pendingLeads as $lead) {
$result = sendLeadToB24($lead);
if ($result['result']) {
markLeadAsSent($lead['id'], $result['result']); // зберегти B24 ID
} else {
incrementRetryCount($lead['id']);
}
usleep(600000); // 0.6 сек між запитами
}
return __FUNCTION__ . '();';
}
Кейс: калькулятор кредиту на сайті банку
Клієнт — небанківська фінансова організація. Калькулятор: сума кредиту, термін, тип забезпечення. Результат — попередня ставка та щомісячний платіж. При відправці — лід у Бітрікс24 з повною деталізацією параметрів.
Складність: навантаження в пікові години — до 50 заявок на хвилину з різних рекламних кампаній. Пряма відправка до B24 API неможлива через ліміти.
Рішення: черга в PostgreSQL (сайт на нестандартному стеку), агент відправки кожні 15 секунд по 5 лідів, логування всіх відповідей B24. Паралельно — негайний лист клієнту з результатами розрахунку (щоб не чекати синхронізації з CRM). Менеджер бачить лід у B24 максимум через 15 секунд після відправки форми.
Додатково: при створенні ліда автоматично запускається бізнес-процес B24 «Первинна обробка заявки», який призначає лід менеджеру за кредитним продуктом і встановлює дедлайн першого контакту — 30 хвилин.
Що входить у розробку
- Розробка калькулятора (клієнтська та серверна частини)
- Створення користувацьких полів ліда/угоди в Бітрікс24
- Розробка обробника з чергою та повторними спробами
- Налаштування вхідного вебхука Бітрікс24
- Логування всіх запитів та відповідей API
- Моніторинг: алерт при накопиченні необробленої черги більше N записів
Терміни розробки
Калькулятор з інтеграцією CRM — від 4 до 10 робочих днів залежно від складності формули розрахунку та вимог до переданих даних. Базовий варіант (проста формула, лід з 5–10 полями, без черги) — 2–3 дні. З чергою, повторними спробами та моніторингом — 5–8 днів.







