WooCommerce: установка и настройка webhook для интеграции с внешними сервисами

Что такое webhook в WooCommerce и зачем он нужен

Webhook — это механизм уведомления внешних сервисов о событиях в WooCommerce (например, создание заказа, смена статуса заказа, обновление товара). Вместо постоянного опроса API внешний сервис получает данные сразу после события. Это экономит ресурсы и обеспечивает мгновенную реакцию.

Диагностика: как понять, что webhook не работает

Если интеграция с внешним сервисом не срабатывает после событий в WooCommerce, нужно проверить:

  • Создан ли webhook в админке WooCommerce и активен ли он.
  • Правильный ли URL указан для приема webhook.
  • Доступен ли сервер для приема POST-запросов (нет ли блокировок, например, по IP или firewall).
  • Логи ошибок в WooCommerce и на сервере вебхуков.
  • Отправляются ли вообще запросы — можно использовать расширения браузера или tcpdump.

Пошаговое решение: настройка webhook в WooCommerce

1. Создание webhook через админку WooCommerce

Перейдите в WooCommerce > Настройки > Продвинутые > Вебхуки и нажмите «Добавить вебхук».

  • Название: например, Order Created Hook
  • Статус: Активен
  • Событие: выберите нужное, например, Создание заказа (Order created)
  • Адрес доставки: URL вашего внешнего сервиса, который принимает POST-запрос
  • Секрет: установите секретный ключ, который поможет подтвердить подлинность запроса

2. Проверка отправки webhook

Используйте сервисы типа webhook.site, чтобы временно указать URL и посмотреть, что именно WooCommerce отправляет при событии. Это поможет убедиться, что webhook срабатывает.

3. Обработка webhook на стороне сервиса

Пример простого PHP-скрипта для приема webhook и проверки подписи:

<?php
$input = file_get_contents('php://input');
$secret = 'ваш_секретный_ключ';
$signature = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'] ?? '';

$calculated_signature = base64_encode(hash_hmac('sha256', $input, $secret, true));

if (!hash_equals($calculated_signature, $signature)) {
    http_response_code(401);
    echo 'Unauthorized';
    exit;
}

$data = json_decode($input, true);
// Логика обработки данных
http_response_code(200);
echo 'OK';
?>

Проверка результата после внедрения

  • Создайте или обновите заказ в WooCommerce, которое должно вызвать webhook.
  • Проверьте логи входящих запросов на сервисе-получателе (или на webhook.site).
  • Убедитесь, что в WooCommerce в разделе вебхуков нет ошибок отправки (статус 200).
  • Если используется кастомный обработчик, проверьте, что данные корректно обработаны (например, запись в базу, отправка письма).

Частые ошибки и как их исправить

  • Неверный URL в webhook: Убедитесь, что URL начинается с https:// и доступен извне.
  • Проблемы с секретом: Если подпись не совпадает, проверьте, что секрет совпадает в WooCommerce и на сервере.
  • Блокировка запросов сервером: Проверьте настройки firewall и доступность порта.
  • Отсутствие ответа 200: Вебхук считается неуспешным, если сервер не возвращает HTTP 200. Проверьте код ответа.
  • Ошибки сериализации данных: Проверьте, что данные корректно декодируются в JSON на стороне получателя.

Практические советы по безопасности и производительности

  • Используйте HTTPS: Всегда указывайте HTTPS URL для webhook, чтобы данные передавались по защищённому каналу.
  • Проверяйте подпись: Настройте секрет и проверяйте подпись на сервере, чтобы исключить подделку запросов.
  • Обрабатывайте webhook асинхронно: Чтобы не замедлять работу WooCommerce, обработку данных на сервисе делайте вне основного запроса, например, через очередь задач.
  • Логируйте ошибки: Реализуйте системный лог ошибок обработки webhook, чтобы быстро находить и исправлять проблемы.
  • Ограничьте IP: При возможности разрешайте запросы только с IP WooCommerce (можно узнать из документации или логов).

Сравнение вариантов настройки webhook

МетодПреимуществаНедостаткиКогда использовать
Встроенный WooCommerce webhookПростота настройки, интеграция с событиямиОграниченная кастомизация, нет ретраевСтандартные интеграции, базовые уведомления
Плагин типа WP WebhooksБольше возможностей, ретраи, расширенные триггерыДополнительная нагрузка, зависит от плагинаСложные интеграции, многократные события
Кастомное решение через hooks и REST APIМаксимальная гибкость и контрольТребует разработки и поддержкиУникальные бизнес-процессы и интеграции
Как синхронизировать записи пользователей и метаданные в WordPress между сайтами
11.12.2025
Использование REST API для синхронизации пользователей и ролей WooCommerce между сайтами WordPress
23.05.2026
Автоматическая синхронизация изображений WordPress между сайтами
24.02.2026
Синхронизация полей ACF между сайтами WordPress по условию
06.01.2026
Обратный синхрон в WordPress: решение проблем и пример кода
18.03.2026