Передача заявки с сайта в CRM на первый взгляд выглядит простой задачей: пользователь заполнил форму, значит нужно создать сделку в Битрикс24 и передать туда имя и телефон.
На практике интеграция быстро становится сложнее. На сайте может быть несколько разных форм, у каждой свой набор полей. Пользователь может прикрепить файл, повторно обратиться с тем же номером телефона, заполнить квиз или перейти на сайт из рекламы с UTM-метками.
Поэтому при интеграции сайта с CRM важно решить не только вопрос «как создать сделку», но и определить, какие данные должны попасть в Битрикс24, как искать существующего клиента, как избежать дублей и как сохранить информацию об источнике обращения.
Какими способами можно передавать заявки с сайта в Битрикс24
Универсального варианта нет. Способ интеграции зависит от сайта, количества форм, требований к интерфейсу и того, насколько глубоко нужно управлять создаваемыми объектами CRM.
1. Встроенные CRM-формы Битрикс24
Самый простой вариант - создать форму непосредственно в Битрикс24 и встроить ее на сайт.
Этот вариант хорошо подходит, когда форма не имеет сложной внутренней логики и сайт можно адаптировать под механизм Битрикс24.
Плюсы такого подхода:
- не требуется писать отдельную интеграцию;
- форма уже связана с CRM;
- меньше собственного кода, который нужно поддерживать;
- базовая логика обработки обращения находится на стороне Битрикс24.
Но если на проекте уже работают собственные формы с индивидуальным дизайном, калькуляторы, квизы, загрузка файлов и другая логика, заменять их CRM-формами не всегда удобно.
2. Готовый модуль или коннектор
Еще один вариант - использовать готовый модуль CMS или внешний сервис интеграции.
Такой посредник получает данные формы и передает их в Битрикс24. Это позволяет запустить интеграцию быстрее и практически без собственной разработки.
Подход удобен для типовых сценариев, но появляется дополнительный слой между сайтом и CRM. Возможности интеграции зависят от того, какие поля и сценарии поддерживает конкретный модуль или сервис.
3. Передача через почту
Самый простой технически сценарий - отправлять результаты формы на электронную почту и уже дальше работать с письмом.
Для уведомления сотрудника этого достаточно, но такой вариант плохо подходит для полноценной интеграции. Письмо является текстовым сообщением, а не структурированным набором полей CRM.
4. Собственный серверный обработчик и REST API Битрикс24
Самый гибкий вариант - оставить формы на стороне сайта и после их успешной отправки самостоятельно передавать данные в Битрикс24 через REST API.
В этом случае сайт сам решает, какие формы передавать, какие поля использовать, как искать существующего клиента, какой объект создавать в CRM, какие данные записывать в таймлайн, как работать с файлами, UTM-метками и повторной обработкой.
Именно этот вариант мы использовали в проекте.
Почему выбрали собственную интеграцию через REST API
На сайте уже существовали рабочие формы на 1С-Битрикс. Причем это были не одинаковые формы с полями «Имя» и «Телефон», а несколько разных сценариев.
Одна форма может содержать имя, телефон и сообщение. Другая - параметры расчета. В третьей пользователь загружает файл. Отдельно работает квиз, в котором несколько ответов собираются в единый блок данных.
Переносить все эти сценарии на внешние CRM-формы означало бы перестраивать уже работающую часть сайта.
Поэтому мы оставили пользовательский интерфейс сайта без изменений и добавили единый серверный слой, который работает как окно между всеми формами сайта и CRM.
Как устроена интеграция на стороне 1С-Битрикс
В основе решения используется событие модуля веб-форм 1С-Битрикс.
После того как пользователь успешно отправил форму и ее результат сохранен, срабатывает обработчик onAfterResultAdd. В него передаются идентификатор формы и идентификатор созданного результата.
Это удобная точка интеграции: мы работаем уже не с данными браузера, а с результатом, который действительно сохранен системой.
Одна интеграция для разных форм
Вместо отдельного PHP-обработчика для каждой формы используется единый класс.
Для каждой формы задается конфигурация: ее идентификатор, название, набор полей, подписи для CRM и правило определения имени контакта.
Если на сайте появляется новая форма, не требуется создавать интеграцию с нуля. В большинстве случаев достаточно добавить ее конфигурацию и определить, какие данные необходимо передавать.
Как получаем данные заполненной формы
После срабатывания события обработчик получает сохраненный результат веб-формы через механизм 1С-Битрикс и приводит поля разных форм к единому внутреннему формату.
Для каждого поля сохраняются его символьный код, название, одно или несколько значений и итоговое значение для передачи.
Нормализуем номер телефона
Перед поиском контакта номер приводится к единому формату. Это снижает риск создать нового контакта только потому, что тот же телефон раньше был записан в другом виде.
Сначала ищем контакт, потом создаем новый
Для поиска используется REST-метод crm.duplicate.findbycomm. Он позволяет искать существующие контакты по коммуникациям, в нашем случае по номеру телефона.
Если подходящий контакт найден, используется его ID. Если контакт отсутствует, создается новый.
Создаем сделку и связываем ее с клиентом
После определения контакта создается сделка. В нее передаются название, ответственный, источник и ссылка на найденный или созданный контакт.
В результате менеджер получает обычную структуру CRM: контакт клиента -> сделка -> история обращения.
Данные формы помещаем в таймлайн сделки
Не каждое поле формы имеет смысл превращать в отдельное пользовательское поле CRM. Поэтому подробности конкретного обращения записываются отдельным комментарием в таймлайн.
Для этого используется REST-метод crm.timeline.comment.add.
Менеджер сразу видит, какая форма была заполнена, какие значения указал клиент, комментарий, параметры расчета и другую информацию обращения.
Передаем файлы вместе с заявкой
Если форма поддерживает загрузку файлов, они также передаются в таймлайн сделки.
Перед передачей проверяется доступность файла и его размер. В интеграции установлен предел общего объема файлов одной заявки, чтобы слишком большая загрузка не блокировала передачу всего обращения.
Отдельная задача - сохранить рекламный источник
Кроме самой формы, нам важно понимать, откуда пришел пользователь.
Если посетитель перешел на сайт из рекламы, URL может содержать utm_source, utm_medium, utm_campaign, utm_content и utm_term.
Но нельзя просто прочитать эти параметры в момент отправки формы. Пользователь может прийти из рекламы, посмотреть несколько страниц и оставить заявку позже.
Как сохраняются UTM-метки
При заходе пользователя на сайт проверяются параметры URL. Если присутствуют рекламные метки, они сохраняются на стороне сайта в сессии и cookie.
Когда позже пользователь отправляет любую из подключенных форм, обработчик получает сохраненные значения и передает их вместе со сделкой.
UTM передаются в стандартные поля Битрикс24
Используется соответствие между метками сайта и штатными полями сделки Битрикс24: utm_source -> UTM_SOURCE, utm_medium -> UTM_MEDIUM, utm_campaign -> UTM_CAMPAIGN, utm_content -> UTM_CONTENT, utm_term -> UTM_TERM.
При соответствующей настройке источников эти данные можно использовать в дальнейшей аналитике рекламных каналов.
Защищаем CRM от повторного создания сделки
Для каждого результата веб-формы создается локальная блокировка. После успешной передачи сохраняется отметка о том, что конкретный результат формы уже обработан, вместе с ID созданной сделки.
При повторном запуске система обнаруживает эту отметку и не создает вторую сделку.
Почему в итоге выбрали именно такую архитектуру
Встроенная форма Битрикс24 была бы проще, если бы на сайте требовалась одна стандартная форма. Готовый коннектор позволил бы сократить разработку, если бы достаточно было просто передать несколько типовых полей.
Но здесь уже существовало несколько форм с разной логикой, собственным интерфейсом, квизами, файлами и дополнительными данными.
Поэтому собственный серверный обработчик через REST API позволил оставить существующие формы, собрать всю интеграцию в одном месте и использовать единый механизм для разных сценариев.
Что получилось
- разные формы сайта используют единое окно передачи в Битрикс24;
- телефон приводится к единому формату;
- существующий контакт ищется до создания нового;
- сделка связывается с контактом;
- данные конкретной формы сохраняются в таймлайне;
- прикрепленные пользователем файлы передаются в CRM;
- UTM-метки сохраняются и записываются в стандартные поля сделки;
- повторная обработка одного результата не создает еще одну сделку.
Ценность
Главная ценность такого решения не в самом REST-запросе на создание сделки.
Мы получаем единое управляемое окно между сайтом и CRM, в котором можно определить весь жизненный цикл обращения: от заполнения формы до появления структурированной информации у менеджера.
Сотруднику не приходится переносить данные вручную. Контакт не создается заново при каждом обращении. Файлы и подробности заявки находятся непосредственно в карточке сделки.
Дополнительно вместе с обращением сохраняется рекламный источник. Поэтому сайт, CRM и маркетинговая аналитика работают как части одного процесса.