Webhooks WooCommerce — один из самых удобных способов передавать события магазина во внешнюю CRM, ERP, склад, Telegram-бот, систему аналитики или собственный API. Магазин сообщает о событии сам, поэтому внешнему сервису не нужно постоянно опрашивать REST API и спрашивать: «появился ли новый заказ?».
Но простая схема «указали Delivery URL и забыли» хорошо работает только до первого таймаута, дубля, временного 500 или недоступной CRM. В production-интеграции нужно проектировать не только успешный запрос, но и повторную доставку, проверку подлинности, защиту от дублей, журналирование и восстановление после сбоя.
Разберём практическую архитектуру для WooCommerce, где webhook не теряет заказ из-за кратковременной ошибки внешнего сервиса и при этом не создаёт второй заказ при повторной доставке.
Как WooCommerce отправляет webhook
В WooCommerce webhook привязывается к событию: например, созданию или обновлению заказа, товара, купона или покупателя. Для заказов типичные topics — order.created, order.updated и order.deleted. Можно использовать и WooCommerce actions, если нужен более специфичный триггер.
При срабатывании WooCommerce формирует JSON payload и отправляет HTTP POST на настроенный Delivery URL. В запрос добавляются служебные заголовки, среди которых:
X-WC-Webhook-Topic— тип события;X-WC-Webhook-Resource— ресурс, напримерorder;X-WC-Webhook-Event— событие, напримерupdated;X-WC-Webhook-Signature— HMAC-SHA256 подпись payload;X-WC-Webhook-ID— ID webhook;X-WC-Webhook-Delivery-ID— ID конкретной доставки.
Штатная доставка выполняется в фоне. WooCommerce также ведёт delivery logs, где можно увидеть URL, длительность запроса, request/response и HTTP-код. Это важный источник диагностики, а не просто технический журнал.
Почему ответ 200 ещё не означает надёжную интеграцию
Представим простую обработку: CRM принимает webhook, создаёт заказ и отвечает 200 OK. Всё работает, пока нет ошибок сети и повторных запросов.
Теперь внешний сервер успел создать заказ, но соединение оборвалось до того, как WooCommerce получил ответ. С точки зрения WooCommerce доставка не подтверждена. Повторная попытка может прийти с тем же бизнес-обработка вынесена в очередь/worker;
Когда нужна кастомная интеграция
Готовый коннектор подходит, если CRM принимает стандартный заказ WooCommerce без сложного маппинга. Но при нескольких складах, нестандартных статусах, вариациях, B2B-ценах, split payments, внешнем fulfillment или двусторонней синхронизации обычно нужен отдельный интеграционный слой.
A.S Groups разрабатывает и дорабатывает интеграции WordPress/WooCommerce с CRM, ERP, API и внутренними сервисами: от webhook endpoint до очередей, reconciliation и диагностики нестабильного обмена. Если нужно разобрать конкретную схему, можно описать задачу и текущие системы.
Обсуждение
Вопросы и комментарии
Можно уточнить детали статьи или поделиться своим опытом. Первый комментарий проходит проверку.