Как устроено подключение
CRM отправляет уведомление вашему серверному адаптеру. Адаптер проверяет источник, выбирает нужное действие, исключает повторы и передаёт в аналитику короткий JSON с приватным ключом. Контакты, тексты заявок и номера сделок в аналитику не передаются.
У Битрикс24 и amoCRM собственные форматы и способы проверки webhook. Потребуется настроить адаптер под выбранную CRM; готовых OAuth-коннекторов и синхронизации сделок в 0.4.0 нет. Одного адреса приёмника в настройках CRM недостаточно.
Событие учитывается по времени получения, UTC. Повторная доставка увеличивает счётчик повторно. Подавление повторов и очередь повторных попыток находятся на стороне адаптера.
Включить приёмник WordPress
- Установите плагин 0.4.0 и включите общий сбор в "Инструменты → Диванная аналитика".
- Добавьте в разрешённые события отдельное имя, например
crm_sale. Выберите разрешённую метку страницы. Если используете кампанию, канал и объявление, внесите их в списки. - В разделе "Серверные события и CRM" включите приём и сохраните настройки. Панель покажет новый ключ только один раз. Сохраните его в секретах серверного адаптера.
- Возьмите адрес endpoint из панели. Обычно это
https://example.ru/wp-json/dulesov-analytics/v1/webhook; WordPress с обычными постоянными ссылками может использовать адрес с?rest_route=.
Права manage_options требуются для настройки и ротации ключа. При ротации прежний ключ перестаёт работать. Сохранённый ключ в базе представлен SHA-256-хешем.
Включить приёмник PHP
- Выполните установку по инструкции PHP-пакета. Проверьте HTTPS и общий флаг
enabled. - В приватном
config.phpдобавьтеcrm_saleв списокevents, разрешите нужные метки. - Из приватного каталога установки выполните команду ниже. Она создаёт случайный ключ и его хеш, конфигурацию сама не меняет.
php bin/webhook-key.phpКоманда покажет секрет в терминале: отключите запись сессии, не пересылайте вывод в чат и не сохраняйте его в общих логах. Скопируйте ключ в секреты адаптера, а в приватный config.php внесите показанный хеш.
'webhook_enabled' => true,
'webhook_key_hash' => 'СЮДА_SHA256_ХЕШ_ИЗ_КОМАНДЫ',Адрес приёмника: https://stats.example.ru/webhook.php. Браузерный сниппет не должен содержать ни этот ключ, ни конфигурацию адаптера.
Формат события
Ваш сервер выполняет POST по HTTPS. Заголовки: Content-Type: application/json и Authorization: Bearer ВАШ_КЛЮЧ. Тело до 2 КиБ. Обязательны consent: true, разрешённое имя события и разрешённая метка страницы.
{
"consent": true,
"event": "crm_sale",
"path": "/contacts/",
"source": "telegram",
"device": "mobile",
"campaign": "autumn_2026",
"medium": "messenger",
"content": "post_15"
}Это пример, названия должны совпасть с вашей конфигурацией. Для маски страниц передавайте разрешённую метку, например /blog/*. Дополнительные поля отклоняются, включая email, телефон, поисковую фразу, сумму и ID сделки. Неизвестные рекламные метки также вызывают ошибку. Необязательные поля можно полностью пропустить; отсутствующий источник станет "Другой источник".
Флаг consent выставляет ваш адаптер по сохранённому выбору посетителя и правилам обработки. Сам флаг не доказывает получение согласия. По умолчанию серверную отправку при отказе или неизвестном согласии пропускайте. Для событий из CRM, происходящих позже, отдельно определите срок и порядок отзыва. Не выдумывайте источник, когда его нет в заявке.
Настройка адаптера для CRM
- Создайте обработчик уведомлений на своём HTTPS-сервере. Проверяйте запрос по правилам выбранной CRM до любого обращения к аналитике.
- Сопоставьте нужную стадию или действие с разрешённым событием. Сохраняйте сведения о согласии и разрешённые UTM-метки в своей CRM, если это предусмотрено вашей обработкой.
- В своей базе адаптера исключите повтор одного и того же уведомления или перехода стадии. Не передавайте дедупликационные ID в аналитику.
- Соберите JSON только из разрешённых полей, отправьте с серверным Bearer-ключом и обработайте ответ.
- Начните с тестовой сделки и отдельного имени события. Сверьте число событий в кабинете.
Битрикс24 описывает проверку исходящих уведомлений и application_token в документации webhook. Форматы amoCRM приведены в документации уведомлений. Способ авторизации и доступность событий проверяйте для вашей установки и тарифа.
Чтобы одна заявка не считалась дважды, разделяйте браузерное lead_sent и серверное crm_sale либо оставляйте один источник события. Счётчик не связывает события с уникальным человеком и не строит воронку сделки.
Проверка и ошибки
- 204
- Событие принято, тело ответа пустое.
- 400
- Некорректный JSON, имя события, страница, метка или лишнее поле. Исправьте данные, сохраните заявку у отправителя.
- 401 / 403
- Неверный ключ, приём выключен, запрос из браузера или неверная настройка HTTPS. Проверьте конфигурацию. PHP должен получать заголовок Authorization от веб-сервера.
- 413 / 415
- Превышен размер или неверный Content-Type.
- 429 / 503
- Лимит запросов или временная ошибка хранения. Повторяйте из очереди с задержкой и контролем дублей. При потере ответа после принятия повтор может увеличить счётчик.
Лимиты: 120 запросов в минуту на IP отправителя и общий предел 50 000 обращений в сутки на установку. CORS для этого endpoint выключен. Используйте его только на сервере, запросы с Origin или Sec-Fetch-Site отклоняются.
При TLS-прокси настройте доверенную HTTPS-схему на сервере. Параметр PHP-пакета secure_proxy допустим только при закрытом прямом доступе к PHP. Для WordPress требуется корректный is_ssl(). Не отключайте проверку TLS в адаптере.
Границы проверки
Приёмник проверен автоматическими тестами на PHP 8.1/8.3 и локальном WordPress. С рабочими аккаунтами CRM проверка ещё не проводилась. Текущая версия beta; перед подключением к продажам проверьте интеграцию на тестовой сделке.