Разработка калькулятора с сохранением результата в 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 дней.







