Содержание
- Что даёт интеграция
- Ключевые сценарии
- Подходы к интеграции: что выбрать
- Архитектура обмена данными
- UTM-метки, источники и сквозная аналитика
- Дедупликация и маршрутизация лидов
- Безопасность и соответствие требованиям (GDPR/DSGVO)
- Пошаговый план внедрения
- Примеры кода и настройки
- Чек-лист тестирования
- Типовые ошибки и как их избежать
- KPI интеграции: как понять, что всё работает
- FAQ
- Шаблон ТЗ на интеграцию
Что даёт интеграция
- Автоматический сбор и распределение заявок с сайта в Битрикс24.
- Сквозная аналитика: UTM-метки, источники, эффективность каналов.
- Единая база контактов и историй коммуникаций.
- Контроль SLA: статусы, сроки, напоминания, роботы и триггеры.
- Сокращение ручного труда: меньше ошибок, быстрее реакция продаж.
- Прозрачность: отчёты по конверсии, времени ответа, стоимости лида.
Ключевые сценарии
- Формы на сайте → Лиды/Сделки
Любые формы захвата (заявка, «перезвоните», подписка) создают лид, контакт и, при необходимости, сделку. - Корзина/чекаут интернет-магазина → Сделки и товары
Передача состава заказа, цен, скидок, купонов, статусов оплаты/доставки. - Онлайн-чат и виджет обратной связи
Подключение чата/Открытых линий, автоматическое создание лидов по диалогам. - Запись на услуги / бронирование
Слоты времени, локации, ресурс — в Битрикс24 как смарт-процессы или сделки по воронке «Бронирование». - Звонки и коллтрекинг
Номера и сессии звонков связываются с лидами, звонки логируются в CRM-карточках. - Подписки и контент-магниты
Сегментация, автоматические рассылки и цепочки nurture.
Подходы к интеграции: что выбрать
| Подход | Когда уместен | Плюсы | Минусы |
|---|---|---|---|
| CRM-формы Битрикс24 (вставка на сайт) | Быстрый старт, лендинги, Tilda/WordPress/самопис | За минуты, UTM и согласия собираются «из коробки», антиспам | Дизайн/верстка завязаны на виджет; ограниченная кастомизация |
| Вебхуки (входящие/исходящие) | Простые формы, малый объём, без OAuth | Легко настроить, не нужен полноценный «приложение-интегратор» | Ограничения прав/скорости, нет рефреша токенов |
| REST API + OAuth (приложение) | Сложные сценарии, двусторонний обмен, товары/каталоги | Гибкость, устойчивость, расширяемость, Webhook-события | Сложнее разработка, управление токенами |
| Готовые плагины CMS | WordPress/Shopify/Tilda/Bitrix CMS | Быстро, минимум кода | Функциональные рамки плагина |
| Импорт/экспорт через файлы/интеграционные шины | Большие объёмы, ERP связки | Контроль очередей/реплеев | Не «онлайн», сложнее поддержка |
Рекомендация:
- Для быстрого MVP — CRM-форма или входящий вебхук.
- Для продакшена и масштабирования — REST API + OAuth, очереди, ретраи, логирование.
Архитектура обмена данными
Минимум полей для лида: TITLE, NAME, PHONE, EMAIL, COMMENTS, SOURCE_ID, UTM_*, ASSIGNED_BY_ID.
Для сделок: стадия воронки, бюджет, товары (PRODUCT_ROWS).
Карточка товара: ID, артикул, цена, количество, скидка.
Паттерны надёжности:
- Идемпотентность: передавайте
external_id/request_idи проверяйте дубликаты. - Ретраи с экспоненциальной задержкой при 429/5xx.
- Очередь сообщений (например, фоновые задачи) для всплесков трафика.
- Логирование запросов/ответов и маскирование персональных данных в логах.
- Валидация на бэке, антибот-проверки на фронте.
UTM-метки, источники и сквозная аналитика
Храните и передавайте минимум:
utm_source,utm_medium,utm_campaign,utm_term,utm_contentgclid/gbraid,fbclid,yclid— если применимо- Страницу входа (
landing_page), страницу отправки формы (current_page), реферер
Как собирать на сайте:
- При первом заходе пишите UTM в
localStorage/cookie. - При отправке формы прокидывайте значения в скрытые поля.
- В Битрикс24 — свяжите поля формы с UTM-полями лида.
- Источник лида (
SOURCE_ID) задавайте по логике: UTM > реферер > «Website».
Дедупликация и маршрутизация лидов
Дедуп по телефону и e-mail. При совпадении:
- обновляйте контакт/компанию,
- создавайте новую сделку в нужной воронке,
- логируйте историю обращений.
Маршрутизация:
- по гео (страна/город),
- по продукту/услуге (из формы),
- по каналу (utm_source),
- по расписанию (кто сейчас на линии),
- по приоритетам клиентов (VIP, повторные).
Используйте роботов и триггеры: автозадача менеджеру, напоминание, SLA по первому ответу, авто-e-mail клиенту.
Безопасность и соответствие требованиям (GDPR/DSGVO)
- Явное согласие на обработку данных, чекбокс + ссылка на политику.
- Сбор только необходимых полей (data minimization).
- Передача по HTTPS, HSTS.
- Защита от ботов: honeypot, тайм-токен, капча при аномалиях.
- Сроки хранения и право на удаление/экспорт данных.
- DPA с подрядчиками и журнал доступа к данным.
- Шифрование токенов интеграции, ротация ключей, ограничение прав.
Пошаговый план внедрения
- Требования и схема данных: какие формы, какие сущности, какие поля.
- Выбор подхода: CRM-форма / вебхук / REST + OAuth.
- Маршрутизация и воронки: кто принимает, какие статусы, SLA.
- UTM-архитектура: где хранить, как передавать, как отчёт строить.
- Разработка и тесты: код, очереди, ретраи, логи.
- Роботы и уведомления: автозадачи, письма, напоминания.
- Аналитика и дашборды: конверсия форм, время ответа, CPL.
- Документация и обучение: видео/скринкасты для продажников.
- Запуск и гипотезы улучшений: A/B формы, тексты, поля, скрипты.
Примеры кода и настройки
1) Входящий вебхук: создание лида (cURL)
curl -X POST "https://<your_portal>.bitrix24.ru/rest/<user_id>/<webhook>/crm.lead.add.json" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"TITLE": "Заявка с сайта",
"NAME": "Иван",
"PHONE": [{"VALUE": "+49123456789", "VALUE_TYPE": "WORK"}],
"EMAIL": [{"VALUE": "user@example.com", "VALUE_TYPE": "WORK"}],
"COMMENTS": "Сообщение с формы",
"SOURCE_ID": "WEB",
"UTM_SOURCE": "google",
"UTM_MEDIUM": "cpc",
"UTM_CAMPAIGN": "brand_search",
"UTM_TERM": "crm bitrix24",
"ORIGIN_ID": "site_form_1",
"ORIGINATOR_ID": "website"
}
}'
2) PHP: приём формы и отправка в Битрикс24 (вебхук)
<?php
$data = [
'fields' => [
'TITLE' => 'Заявка с сайта',
'NAME' => $_POST['name'] ?? '',
'PHONE' => [['VALUE' => $_POST['phone'] ?? '', 'VALUE_TYPE' => 'WORK']],
'EMAIL' => [['VALUE' => $_POST['email'] ?? '', 'VALUE_TYPE' => 'WORK']],
'COMMENTS' => $_POST['message'] ?? '',
'SOURCE_ID' => 'WEB',
'UTM_SOURCE' => $_POST['utm_source'] ?? '',
'UTM_MEDIUM' => $_POST['utm_medium'] ?? '',
'UTM_CAMPAIGN' => $_POST['utm_campaign'] ?? '',
'UTM_TERM' => $_POST['utm_term'] ?? '',
'UTM_CONTENT' => $_POST['utm_content'] ?? '',
'ORIGIN_ID' => $_POST['request_id'] ?? uniqid('req_', true),
'ORIGINATOR_ID' => 'website'
]
];
$ch = curl_init("https://<your_portal>.bitrix24.ru/rest/<user_id>/<webhook>/crm.lead.add.json");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE)
]);
$response = curl_exec($ch);
http_response_code(curl_getinfo($ch, CURLINFO_HTTP_CODE));
curl_close($ch);
echo $response;
3) JS: сохранение UTM и прокидывание в скрытые поля формы
<script>
(function() {
const params = new URLSearchParams(location.search);
const utms = ['utm_source','utm_medium','utm_campaign','utm_term','utm_content','gclid','fbclid','yclid'];
// сохранить в localStorage
utms.forEach(k => {
const v = params.get(k);
if (v) localStorage.setItem(k, v);
});
// проставить значения в скрытые поля
window.addEventListener('DOMContentLoaded', function() {
utms.forEach(k => {
const el = document.querySelector('input[name="'+k+'"]');
if (el && !el.value) el.value = localStorage.getItem(k) || '';
});
const lp = document.querySelector('input[name="landing_page"]');
if (lp) lp.value = sessionStorage.getItem('landing_page') || (function(){
const v = location.href; sessionStorage.setItem('landing_page', v); return v;
})();
const ref = document.querySelector('input[name="referrer"]');
if (ref && document.referrer) ref.value = document.referrer;
});
})();
</script>
4) Добавление товаров к сделке (REST)
# Создать сделку
DEAL_ID=$(curl -s -X POST "https://<portal>/rest/<user>/<hook>/crm.deal.add.json" \
-H "Content-Type: application/json" \
-d '{"fields":{"TITLE":"Заказ #1024","CATEGORY_ID":2,"STAGE_ID":"C2:NEW","OPPORTUNITY":199.90,"CURRENCY_ID":"EUR"}}' \
| jq -r '.result')
# Добавить товарные позиции
curl -s -X POST "https://<portal>/rest/<user>/<hook>/crm.deal.productrows.set.json" \
-H "Content-Type: application/json" \
-d '{
"id": '"$DEAL_ID"',
"rows": [
{"PRODUCT_NAME":"CRM лицензия","PRICE":99.95,"QUANTITY":1},
{"PRODUCT_NAME":"Внедрение","PRICE":100.00,"QUANTITY":1}
]
}'
5) Внедрение CRM-формы Битрикс24 на любой сайт
В интерфейсе Битрикс24 создайте CRM-форму → «Опубликовать на сайте» → вставьте скрипт:
<script data-b24-form="inline/12/abc123" data-skip-moving="true">
(function(w,d,u){var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/180000|0);
var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);
})(window,document,'https://cdn.bitrix24.ru/b123456/crm/form/loader_12.js');
</script>
Форма автоматически сохранит UTM, согласие, IP и создаст лид.
Чек-лист тестирования
- Все формы создают лиды/сделки с нужными полями.
- UTM/реферер/landing корректно заполняются.
- При повторной заявке — обновляется контакт, создаётся новая сделка.
- Роботы запускаются: задача назначается, SLA отсчитывается.
- Уведомления менеджеру работают (web/push/e-mail).
- Создаются товары и бюджет сделки.
- Ошибки/429 ретраятся, запросы логируются.
- Согласие на обработку данных сохраняется.
- Отчёт по конверсии форм видит новые лиды с источниками.
- Нагрузочный тест: 100–500 отправок подряд без потерь.
Типовые ошибки и как их избежать
- Потерянные UTM — сохраняйте при первом заходе в
localStorageи прокидывайте в форму. - Дубликаты — используйте
ORIGIN_ID/внешнийrequest_id, включайте дедуп по телефону/e-mail. - 429/лимиты — очередь и ретраи, распределение запросов.
- Сломанные вебхуки — не храните токены в коде, используйте переменные окружения, ротацию.
- Нет маршрутизации — чёткие правила назначения ответственного по каналу/гео/продукту.
- Нет SLA — настраивайте роботов и KPI «Время до первого ответа».
- Отсутствие логов — храните минимум: timestamp, endpoint, статус, masked payload, correlation-id.
KPI интеграции: как понять, что всё работает
- CR формы → лид: ≥ 95% заявок создаются без ошибок.
- Время до первого ответа: ≤ 15 минут (или ваш SLA).
- Доля корректных UTM: ≥ 90%.
- Доля дубликатов: ≤ 5% от всех обращений.
- CPL по каналам: прозрачность и сравнимость в отчётах.
- Скорость обработки: 95-й перцентиль < 3 секунды до ответа API.
FAQ
Можно ли отправлять заявки в конкретную воронку сразу как сделку, минуя лид?
Да: используйте crm.deal.add и свяжите с Контактом/Компанией. Лиды можно отключить или конвертировать автоматикой.
Как передать файлы/вложения из формы?
Загрузите файл на свой бэкенд, затем в CRM — через disk.folder.uploadfile или сохраните ссылку в поле комментария.
Как связать оплату с CRM?
Передавайте статусы из платёжного шлюза вебхуком/REST и меняйте стадию сделки; при необходимости используйте «Чек»/«Оплата» в Маркетплейсе.
Что делать с бот-трафиком?
Honeypot-поле, тайм-токен, ограничение частоты, фильтр по IP/ASN, поведенческие сигналы.
Шаблон ТЗ на интеграцию
1. Сайт и страницы: список форм/страниц, где собираются лиды.
2. Сущности в CRM: лид/сделка/смарт-процесс, воронки/стадии.
3. Поля и маппинг: таблица «поле формы → поле CRM», включая UTM и техполя.
4. Маршрутизация: правила назначения ответственного/группы.
5. Дедупликация: по каким полям, стратегия обновления.
6. Роботы и SLA: автоуведомления, задачи, сроки, эскалации.
7. Аналитика: какие отчёты, дашборды, какие KPI.
8. Безопасность: согласия, хранение токенов, логирование, ротация.
9. Надёжность: ретраи, очереди, идемпотентность, мониторинг.
10. Тест-план: что и как тестируем, критерии приёмки.
11. Сопровождение: кто поддерживает, регламенты изменений, контактные лица.
Набор полей (пример маппинга)
| Поле формы | Поле CRM | Обязательное | Примечание |
|---|---|---|---|
| name | NAME | ✓ | Имя клиента |
| phone | PHONE | ✓ | Формат E.164 |
EMAIL | Проверка MX желательна | ||
| message | COMMENTS | Текст заявки | |
| product | UF_CRM_PRODUCT | Пользовательское поле | |
| utm_source | UTM_SOURCE | Автозаполнение | |
| utm_medium | UTM_MEDIUM | ||
| utm_campaign | UTM_CAMPAIGN | ||
| utm_term | UTM_TERM | ||
| utm_content | UTM_CONTENT | ||
| landing_page | UF_CRM_LANDING | Пользовательское поле | |
| referrer | UF_CRM_REFERRER | Пользовательское поле | |
| request_id | ORIGIN_ID | ✓ | Для идемпотентности |
Итог
Грамотная интеграция сайта с Битрикс24 — это не только «перекинуть форму в CRM». Это продуманная архитектура данных, надёжность, безопасность и аналитика, которая позволяет управлять продажами на основе фактов. Начинайте с простого (CRM-формы или вебхуки), но проектируйте с прицелом на масштаб: REST API, очереди, ретраи, KPI и отчёты.
