Вебхуки (Webhooks)

Что такое Вебхуки (Webhooks)?

Вебхуки — это механизм автоматической отправки HTTP-запросов с одного сервера на другой в реальном времени при наступлении заданного события, заменяющий периодический опрос API и синхронизирующий данные мгновенно.

Индустриальный стандарт надёжности 2026 года — 99,95 % успешных доставок с первой попытки. Достигается это за счёт механизма повторных попыток с экспоненциальной задержкой, при котором критичный вебхук оплаты не должен иметь задержку доставки более 2 секунд от момента события.

Как это работает?

Издатель (WordPress) отслеживает внутренний хук действия, срабатывающий при изменении объекта — создании заказа, обновлении профиля, публикации поста. В момент активации хука система формирует HTTP POST-запрос к заранее заданному URL-адресу подписчика, упаковывая полезную нагрузку в формате JSON.

Подписчик принимает запрос, проверяет его подлинность через секретный токен в заголовке и возвращает HTTP-статус 2xx в течение тайм-аута. Если подписчик не отвечает или возвращает ошибку, издатель ставит запрос в очередь повторных попыток согласно настроенной стратегии.

WordPress реализует вебхуки через класс WP_Http, выполняя синхронные или асинхронные запросы в зависимости от конфигурации, не блокируя текущий процесс пользователя.

Метрики и стандарты

  • Процент успешных доставок: целевой показатель 99,95 %. Падение до 99,5 % означает потерю 1 из 200 событий и требует аудита сетевой доступности принимающего сервера.
  • Максимальная задержка: для событий реального времени (оплата, статус заказа) — не более 2 секунд. Превышение этой задержки ведёт к рассинхронизации данных и ручным корректировкам менеджерами.
  • Тайм-аут ожидания ответа: стандартно 5 секунд. Более длительный тайм-аут создаёт риск блокировки PHP-процессов на стороне издателя при недоступности подписчика.
  • Количество повторных попыток: отраслевая норма — 3–5 попыток с интервалом от 1 минуты до 6 часов, после чего вебхук помечается как неисполненный и требует ручного перезапуска.
  • Секретная подпись: обязательное присутствие заголовка X-WC-Webhook-Signature с HMAC-SHA256 хешем тела запроса, без которого подписчик обязан отклонить запрос.

Почему это важно для бизнеса?

Вебхуки обеспечивают мгновенную реакцию IT-инфраструктуры на бизнес-события без задержек, присущих cron-задачам и ручному экспорту. Данные о новом клиенте, заказе или отмене попадают во внешние системы в момент совершения действия, исключая временной лаг и повышая качество обслуживания.

Интеграции через вебхуки сокращают нагрузку на сервер по сравнению с постоянным опросом REST API: вместо тысяч холостых GET-запросов сервер отправляет только несколько POST-запросов в час по факту событий.

Маркетинговая и операционная эффективность растёт: заказы мгновенно попадают в доставку, клиенты получают триггерные письма, а складские запасы актуализируются, снижая риск перепродажи и возвратов.

Пример применения

Интернет-магазин электроники при создании каждого заказа отправляет вебхук в CRM-систему для регистрации сделки и во внутренний чат сотрудников в Telegram для оперативного сбора заказа.

При успешной оплате второй вебхук передаёт трек-номер в приложение лояльности для начисления бонусов. Менеджеры видят заказ в CRM через 1–2 секунды после оформления на сайте, а клиент получает бонусы одновременно с чеком об оплате. Ручной перенос данных исключён полностью, количество ошибок ручного ввода снизилось до нуля.

Как это реализуется в WordPress?

В WooCommerce вебхуки создаются штатно в разделе WooCommerce → Настройки → Продвинутые →Webhooks. Администратор указывает URL-адрес доставки, выбирает тему (событие), активирует доставку и задаёт секрет для подписи. WooCommerce автоматически отправляет POST-запрос при наступлении выбранного действия.

Для расширенной логики, не ограниченной WooCommerce, применяют плагин WP Webhooks или AutomatorWP. Они предоставляют визуальный конструктор триггеров (вход/регистрация, публикация поста) и действий (отправка вебхука), а также логирование всех запросов.

Кастомная разработка выполняется через хук wp_insert_post, woocommerce_order_status_changed и функцию wp_remote_post(). В целях безопасности URL вебхука проверяется через wp_http_validate_url(), а подпись генерируется с помощью hash_hmac(‘sha256’, $body, $secret).

На серверном уровне гарантируется, что allow_url_fopen включён, а исходящие соединения разрешены файерволом. Для мониторинга входящих вебхуков (если WordPress выступает приёмником) можно включить логирование через плагин WP Webhooks и отслеживать статусы ответов в Google Analytics как события.

Связанные понятия

  • REST API — синхронный метод получения данных по запросу клиента, который вебхук дополняет асинхронной отправкой событий.
  • Хук действия (Action Hook) — внутреннее событие WordPress, на которое можно подвесить функцию-отправщик вебхука.
  • Полезная нагрузка (Payload) — JSON-объект, содержащий сериализованные данные об объекте события, отправляемый в теле вебхука.
  • Повторная попытка (Retry) — автоматическая переотправка вебхука через заданные интервалы в случае сбоя доставки.
  • Секретный ключ (Secret) — строка, известная издателю и подписчику, используемая для создания и проверки HMAC-подписи запроса.