Интеграция веб-форм 1С-Битрикс с CRM Битрикс24
Мы часто видим одну и ту же боль: на сайте настроена удобная форма обратной связи, но менеджеры работают в Битрикс24, а заявки приходят на почту. Данные теряются, воронка продаж не строится, аналитика отсутствует. Например, сотрудник заполняет форму, а менеджер узнаёт о нём через час — лид устарел. Без автоматической передачи лидов каждый звонок или заявка — ручная работа, а конкуренты уже в CRM. Оценки показывают: потери заявок могут достигать 30%.
Стандартный модуль веб-форм 1С-Битрикс (bitrix:main.feedback, bitrix:form.result.new) хранит результаты в таблице b_form_result и отправляет уведомления на почту. Без интеграции с CRM данные остаются в базе сайта — менеджеры не видят их в Битрикс24, история коммуникаций не строится. Согласно официальной документации 1С-Битрикс, событие OnAfterResultAdd модуля form позволяет перехватить данные результата до отправки уведомления.
Почему нативные веб-формы лучше CRM-форм?
CRM-формы Битрикс24 проще в настройке, но их размещение на стороннем домене (b24-cdn.bitrix24.by) негативно влияет на SEO и скорость загрузки. Кроме того, вы не можете кастомизировать внешний вид под дизайн сайта без iframe-обёртки. Нативная веб-форма остаётся на вашем домене, передаёт все UTM-метки и cookie, а стили полностью контролируются шаблоном сайта. По нашему опыту, конверсия таких форм выше на 20–30%.
Как настроить интеграцию: 6 шагов
- Аудит текущих форм и CRM — определяем, какие формы отправляют данные, и какие поля нужны в CRM.
-
Создание обработчика — подписываемся на событие
OnAfterResultAddвinit.php. - Маппинг полей — настраиваем соответствие полей формы и полей лида в конфигурационном массиве.
- Создание пользовательских полей — через REST API
crm.userfield.addдля нестандартных данных. - Дедупликация — проверяем существующих лидов по email/телефону перед созданием.
- Тестирование и деплой — проверяем передачу, файлы и бизнес-процессы.
Обработчик результата веб-формы
Битрикс предоставляет событие OnAfterResultAdd модуля form. Подписываемся в init.php:
AddEventHandler('form', 'OnAfterResultAdd', function($formId, $resultId, $fields) { // Только для нужных форм $targetForms = [3, 7, 12]; // ID форм: заявка, консультация, партнёрство if (!in_array($formId, $targetForms)) return; $answers = CFormResult::GetDataByID($resultId, [], $arrResult); $mapped = mapFormAnswers($formId, $answers); $b24 = new B24Sender(getenv('B24_WEBHOOK_URL')); $b24->sendLead($mapped); }); Маппинг полей формы в поля лида
Поля веб-формы хранятся в b_form_field, ответы — в b_form_result_answer. Связь через FIELD_ID. Маппинг настраивается в конфиге:
$formMapping = [ 3 => [ // форма «Заявка на звонок» 'q_name' => 'NAME', 'q_phone' => 'PHONE', 'q_comment' => 'COMMENTS', 'utm_source'=> 'UTM_SOURCE', ], 7 => [ // форма «Партнёрство» 'q_company' => 'COMPANY_TITLE', 'q_contact' => 'NAME', 'q_email' => 'EMAIL', 'q_direction' => 'COMMENTS', ], ]; Кейс: многошаговая форма заявки
Из нашей практики — сайт IT-интегратора, форма заявки на проект: 4 шага (тип проекта, бюджет, сроки, контакты). Стандартный модуль веб-форм хранит все ответы в b_form_result_answer. Задача: создать квалифицированный лид в Битрикс24 с заполненными полями и правильной воронкой.
Решение: шаги 1–3 сохраняются в сессию, на шаге 4 отправляется полная форма. В обработчике OnAfterResultAdd собираем все поля, создаём лид с нестандартными полями CRM:
$leadFields = [ 'TITLE' => 'Проект: ' . $answers['project_type'], 'OPPORTUNITY' => $answers['budget_from'], // бюджет — в сумму лида 'CURRENCY_ID' => 'RUB', 'UF_CRM_PROJECT_TYPE' => $answers['project_type'], 'UF_CRM_DEADLINE_WEEKS' => $answers['deadline'], // UF_CRM_* — пользовательские поля лида в Б24 ]; Пользовательские поля (UF_CRM_*) предварительно создаём в Битрикс24 через crm.userfield.add. После создания лида — автоматически запускаем бизнес-процесс в Б24 через bizproc.workflow.start. Это гарантирует, что ни одна заявка не потеряется.
Как передать файлы из формы в CRM?
Если форма содержит поле загрузки файла (техзадание, бриф), файл нужно передать в Битрикс24. REST API crm.lead.add не поддерживает бинарную загрузку напрямую — используем disk.folder.uploadfile для загрузки в «Диск» Битрикс24, затем прикрепляем к лиду через crm.activity.add с типом DOCUMENT. Файл появляется в карточке лида, менеджер сразу видит вложение.
Дедупликация лидов
Одна и та же компания нередко заполняет форму несколько раз. Проверяем по email и телефону перед созданием:
$existing = $b24->call('crm.duplicate.findByComm', [ 'type' => 'EMAIL', 'values' => [$email], 'entity_type' => 'LEAD', ]); if (!empty($existing['result']['LEAD'])) { // Добавляем активность к существующему лиду, не создаём новый $b24->call('crm.activity.add', [...]); } Что входит в работу
| Этап | Длительность | Результат |
|---|---|---|
| Аудит текущих веб-форм и CRM | 1–2 ч | Схема полей, список форм, требования |
| Настройка обработчика и маппинг | 3–5 ч | Рабочий обработчик для 1 формы |
| Создание пользовательских полей в CRM | 2–4 ч | Поля для нестандартных данных |
| Дедупликация и логика повторных обращений | 4–6 ч | Защита от дублирования лидов |
| Передача файлов из форм | 4–6 ч | Файлы прикрепляются к лиду |
| Запуск бизнес-процессов по лиду | 3–5 ч | Автоматическая обработка заявок |
| Документация и обучение | 1–2 ч | Инструкция для администратора |
Пример настройки пользовательских полей
Допустим, нужно передать тип проекта и желаемые сроки. Через REST API создаём поля `UF_CRM_PROJECT_TYPE` (список) и `UF_CRM_DEADLINE_WEEKS` (число). В обработчике маппинг на эти поля.Все работы выполняются с гарантией — мы отвечаем за стабильность интеграции и бесперебойную передачу данных. Окупаемость интеграции — от 2 до 4 месяцев в зависимости от нагрузки. Экономия времени менеджеров — до 2 часов ежедневно. Если у вас остались вопросы, свяжитесь с нами — оценим проект за 1 день и предложим оптимальное решение. Закажите интеграцию с гарантией качества.







