Подключения · 0.4.0 beta

События из CRM и вашего backend

Защищённый приёмник считает заданные события, полученные от вашего сервера. Он уже входит в WordPress-плагин и PHP-пакет. По умолчанию приём выключен.

Как устроено подключение

CRM отправляет уведомление вашему серверному адаптеру. Адаптер проверяет источник, выбирает нужное действие, исключает повторы и передаёт в аналитику короткий JSON с приватным ключом. Контакты, тексты заявок и номера сделок в аналитику не передаются.

У Битрикс24 и amoCRM собственные форматы и способы проверки webhook. Потребуется настроить адаптер под выбранную CRM; готовых OAuth-коннекторов и синхронизации сделок в 0.4.0 нет. Одного адреса приёмника в настройках CRM недостаточно.

Событие учитывается по времени получения, UTC. Повторная доставка увеличивает счётчик повторно. Подавление повторов и очередь повторных попыток находятся на стороне адаптера.

Включить приёмник WordPress

  1. Установите плагин 0.4.0 и включите общий сбор в "Инструменты → Диванная аналитика".
  2. Добавьте в разрешённые события отдельное имя, например crm_sale. Выберите разрешённую метку страницы. Если используете кампанию, канал и объявление, внесите их в списки.
  3. В разделе "Серверные события и CRM" включите приём и сохраните настройки. Панель покажет новый ключ только один раз. Сохраните его в секретах серверного адаптера.
  4. Возьмите адрес endpoint из панели. Обычно это https://example.ru/wp-json/dulesov-analytics/v1/webhook; WordPress с обычными постоянными ссылками может использовать адрес с ?rest_route=.

Права manage_options требуются для настройки и ротации ключа. При ротации прежний ключ перестаёт работать. Сохранённый ключ в базе представлен SHA-256-хешем.

Включить приёмник PHP

  1. Выполните установку по инструкции PHP-пакета. Проверьте HTTPS и общий флаг enabled.
  2. В приватном config.php добавьте crm_sale в список events, разрешите нужные метки.
  3. Из приватного каталога установки выполните команду ниже. Она создаёт случайный ключ и его хеш, конфигурацию сама не меняет.
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

  1. Создайте обработчик уведомлений на своём HTTPS-сервере. Проверяйте запрос по правилам выбранной CRM до любого обращения к аналитике.
  2. Сопоставьте нужную стадию или действие с разрешённым событием. Сохраняйте сведения о согласии и разрешённые UTM-метки в своей CRM, если это предусмотрено вашей обработкой.
  3. В своей базе адаптера исключите повтор одного и того же уведомления или перехода стадии. Не передавайте дедупликационные ID в аналитику.
  4. Соберите JSON только из разрешённых полей, отправьте с серверным Bearer-ключом и обработайте ответ.
  5. Начните с тестовой сделки и отдельного имени события. Сверьте число событий в кабинете.

Битрикс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; перед подключением к продажам проверьте интеграцию на тестовой сделке.