WooCommerce: как использовать webhook'и для автоматизации задач

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

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

Диагностика: почему webhook не срабатывает?

Если webhook не работает, нужно проверить несколько моментов:

  • Правильность и доступность URL для приёма POST-запросов.
  • Статус webhook в админке WooCommerce — должен быть активным.
  • Логи сервера и WooCommerce — не возникает ли ошибок 4xx или 5xx при отправке.
  • Наличие SSL-сертификата на принимающем сервере (желательно HTTPS).
  • Нет ли ограничений по IP или User-Agent на принимающем сервере.

Пошаговое создание webhook в WooCommerce

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

Перейдите в WooCommerce → Настройки → Дополнительно → Вебхуки и нажмите "Добавить webhook".

Заполните поля:

  • Название: любое понятное имя, например "Заказы в CRM".
  • Статус: активен.
  • Тема: выберите событие, например order.created или order.updated.
  • URL доставки: URL вашего обработчика (например, https://example.com/webhook-handler.php).
  • Метод доставки: POST (стандарт).

2. Создание простого обработчика webhook

Ниже пример PHP-скрипта, который принимает webhook и логирует данные в файл:

<?php
// webhook-handler.php
$payload = file_get_contents('php://input');
$logFile = __DIR__ . '/webhook.log';
file_put_contents($logFile, date('Y-m-d H:i:s') . " - " . $payload . "\n", FILE_APPEND);
http_response_code(200);
echo json_encode(['status' => 'ok']);
?>

Разместите этот скрипт на вашем сервере по URL, указанному в webhook.

3. Тестирование webhook

В админке WooCommerce нажмите «Отправить тестовое уведомление» рядом с вашим webhook. Если всё настроено правильно, в файл webhook.log должны записаться данные.

Как проверить, что webhook работает корректно

  • Проверьте, что в лог-файле (или в базе, если записываете туда) появляется новая запись после события.
  • Проверьте HTTP-ответ от вашего обработчика — WooCommerce ожидает код 200.
  • Проверьте логи WooCommerce в wp-content/uploads/wc-logs на наличие ошибок по webhook.
  • Для сложных интеграций используйте сервисы типа RequestBin или webhook.site, чтобы отследить, что именно отправляет WooCommerce.

Частые ошибки при работе с webhook в WooCommerce и их исправление

  • Ошибка 404 или 403 при доставке: URL обрабатывает сервер, но либо страница не найдена, либо доступ запрещён. Проверьте настройки .htaccess, файрволлы, права на файл.
  • Отсутствие ответа 200: если скрипт не возвращает HTTP 200, WooCommerce считает доставку неудачной и пытается повторить.
  • Неверный формат данных: WooCommerce отправляет JSON, убедитесь, что обработчик правильно его читает через php://input.
  • Проблемы с SSL: если принимающий URL не использует HTTPS или сертификат недействителен, запросы могут блокироваться.
  • Таймауты: длительная обработка на стороне приёма может привести к таймауту. Оптимизируйте скрипт, разделите логику.

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

  • Проверка подписи webhook: WooCommerce отправляет заголовок X-WC-Webhook-Signature для проверки подлинности — реализуйте проверку HMAC SHA256 с вашим секретом.
  • Используйте HTTPS для URL вебхуков, чтобы защитить данные от перехвата.
  • Асинхронная обработка: не выполняйте тяжелую логику в момент получения webhook, а ставьте задачи в очередь.
  • Логи и мониторинг: ведите отдельные логи и настройте оповещения на ошибки webhook.
  • Ограничение доступа: при возможности ограничьте IP адреса WooCommerce (их можно найти в документации) на сервере обработки.

Таблица сравнения способов обработки webhook

СпособПлюсыМинусыКогда использовать
Прямой PHP-скриптПростота, быстрое развёртываниеНевозможность масштабирования, нет защитыМаленькие проекты, тестирование
Обработка через очередь (RabbitMQ, Redis)Высокая производительность, отказоустойчивостьСложность настройкиБольшие проекты с нагрузкой
Использование внешних сервисов (Zapier, Integromat)Минимум кода, множество интеграцийЗависимость от сторонних сервисов, ценаБыстрые интеграции без разработчиков
Как создать собственный виджет в WordPress: практическое руководство
10.11.2025
Как удалить версию WordPress из header и footer: защита сайта от уязвимостей
16.11.2025
Как создать автоматический вывод оценок на основе WPMeta в WordPress
13.03.2026
Как добавить автоматическое отслеживание изменений в WordPress
13.04.2026
WooCommerce: как автоматически удалить товар при отсутствии на складе
18.05.2026

Совсем скоро здесь откроется ресурс о вордпресс.