Разработка калькулятора с сохранением результата в CRM Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка калькулятора с сохранением результата в CRM Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка калькулятора с сохранением результата в 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"}. Типичная реализация без обработки лимитов теряет лиды при пиковой нагрузке.

Правильная реализация:

  1. Сохранение данных калькулятора в таблицу очереди на стороне Битрикс (b_hl_* highload-блок или отдельная таблица)
  2. Агент Битрикс, который каждые 30 секунд отправляет записи из очереди в CRM пачками с учётом лимитов
  3. Повторная отправка при ошибке (с exponential backoff — 1с, 2с, 4с, 8с)
  4. Флаг 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 дней.