Вебхуки (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-подписи запроса.
