Представьте: клиент оформил заказ в три часа ночи, а вы узнали об этом только утром, когда открыли почту. Товар на складе закончился, но система об этом не сообщила — пришлось звонить покупателю и извиняться. Знакомая ситуация? Всё это решается за полчаса, если правильно настроить вебхуки в WooCommerce.
Автоматизация — это не про «крупный бизнес с бюджетом на IT». Даже небольшой интернет-магазин на WordPress может получать мгновенные уведомления о заказах, синхронизировать данные с CRM, обновлять остатки и отправлять информацию в 1С без единой строчки ручной работы. И вебхуки — один из самых простых инструментов для этого.
Что такое вебхуки WooCommerce и зачем они нужны
Вебхук — это автоматический запрос, который WooCommerce отправляет на указанный URL при наступлении определённого события. По сути, это «звонок» вашему серверу или стороннему сервису: «Эй, тут что-то произошло — лови данные».
Сравним с альтернативой. Без вебхуков вы можете настроить cron-задачи, которые будут периодически проверять: «А появились ли новые заказы?» Это работает, но неэффективно — сервер тратит ресурсы на постоянные проверки, а задержка может составлять от нескольких минут до часа. Вебхуки же срабатывают мгновенно.
Какие события можно отслеживать
WooCommerce поддерживает десятки хуков, но для бизнеса особенно полезны следующие:
- Новый заказ (order.created) — мгновенное уведомление в Telegram, Slack или CRM
- Смена статуса заказа (order.updated) — отслеживание оплаты, отгрузки, доставки
- Создание или обновление товара (product.created / product.updated) — синхронизация каталога с маркетплейсами
- Удаление товара (product.deleted) — актуализация данных на сторонних площадках
- Новый клиент (customer.created) — добавление в базу для email-маркетинга
- Возврат (refund.created) — автоматическое уведомление бухгалтерии
По данным BuiltWith, WooCommerce установлен на более чем 28% всех интернет-магазинов в мире. При этом, по моим наблюдениям, большинство владельцев используют только базовые настройки и даже не подозревают, сколько процессов можно автоматизировать через вебхуки.
Настройка вебхуков WooCommerce через админку
В WooCommerce есть встроенный интерфейс для создания вебхуков. Никаких плагинов для базовых сценариев не нужно. Вот пошаговый процесс:
Зайдите в WooCommerce → Настройки → Дополнительно → Вебхуки. Нажмите «Добавить вебхук».
Заполнение параметров
Откроется форма с несколькими полями. Разберём каждое:
- Название — для вашего удобства. Называйте понятно: «Уведомления в Telegram», «Синхронизация с CRM», «Обновление остатков в 1С»
- Статус — «Активен» или «Приостановлен». Можно отключить вебхук, не удаляя его
- Топик — тип события. Выпадающий список с категориями: Заказы, Товары, Купоны, Клиенты
- URL доставки — адрес, куда WooCommerce будет отправлять данные. Это может быть URL вашего сервера, webhook-сервиса (Zapier, Make) или собственного обработчика
- Секрет — ключ для верификации запроса. Обязательно задайте — это защитит от поддельных запросов
- Версия API — оставьте WC API v3, если нет веских причин менять
После сохранения вебхук начнёт работать автоматически. Каждый раз, когда происходит выбранное событие, WooCommerce отправит HTTP POST-запрос на указанный URL с JSON-данными.
Что приходит в запросе
Пример данных при создании заказа (упрощённо):
{
"id": 1234,
"status": "processing",
"total": "5490.00",
"currency": "RUB",
"billing": {
"first_name": "Иван",
"last_name": "Петров",
"email": "ivan@example.com",
"phone": "+79001234567"
},
"line_items": [
{
"name": "Кроссовки Nike Air Max",
"quantity": 1,
"total": "5490.00"
}
]
}
Эти данные можно направить куда угодно: в CRM, бухгалтерскую систему, мессенджер или собственную базу данных.
Популярные сценарии автоматизации через вебхуки
Теория — это хорошо, но давайте к практике. Вот три сценария, которые я рекомендую настроить в первую очередь.
Мгновенные уведомления о заказах в Telegram
Это, пожалуй, самый простой и полезный кейс. Вы получаете сообщение в Telegram-канал сразу после оформления заказа — с суммой, именем клиента и списком товаров. Открываете приложение и видите всё, что нужно.
Реализация через Zapier или Make (бывший Integromat):
- Создаёте вебхук в WooCommerce с топиком «Заказ создан»
- В Zapier выбираете триггер «Webhooks by Zapier — Catch Hook»
- Копируете URL из Zapier и вставляете в настройки вебхука WooCommerce
- Добавляете действие «Telegram — Send Message»
- Форматируете сообщение с помощью данных из вебхука
На весь процесс уходит минут 15. И больше никаких «а вдруг заказ пришёл, а я не заметил».
Передача заказов в CRM
Если вы используете amoCRM, Bitrix24 или Мегаплан, каждый новый заказ автоматически создаёт сделку. Менеджер видит её в воронке, связывается с клиентом, ведёт историю общения.
Для amoCRM и Bitrix24 существуют готовые плагины-коннекторы для WooCommerce. Но если нужна гибкая настройка — вебхук + собственный обработчик на сервере дадут больше контроля. Особенно если вы хотите фильтровать заказы по сумме, городу или категории товаров перед отправкой в CRM.
Синхронизация остатков с 1С
Адский процесс, который без автоматизации превращается в ежедневную рутину. С вебхуками вы можете:
- Отправлять данные о новых заказах в 1С при создании
- Получать обновления статусов (оплачен, отгружен, доставлен) обратно в WooCommerce
- Синхронизировать остатки товаров при изменениях в учётной системе
Для двусторонней интеграции обычно используют промежуточный скрипт-обработчик или специализированные сервисы типа WooCommerce-1С синхронизация. Но вебхук со стороны WooCommerce — это первый шаг.
Создание собственного обработчика вебхуков
Для простых сценариев достаточно Zapier или Make. Но если нужен полный контроль, можно написать обработчик на PHP. Он будет принимать запросы от WooCommerce, проверять подпись и выполнять нужные действия.
<?php
// Принимаем вебхук от WooCommerce
$raw_post = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'] ?? '';
// Проверяем подпись
$secret = 'ваш_секретный_ключ';
$expected = base64_encode(hash_hmac('sha256', $raw_post, $secret, true));
if ($signature !== $expected) {
http_response_code(403);
exit('Подпись не совпадает');
}
$data = json_decode($raw_post, true);
// Отправляем уведомление в Telegram
$telegram_bot_token = 'YOUR_BOT_TOKEN';
$chat_id = 'YOUR_CHAT_ID';
$message = sprintf(
"🛒 Новый заказ #%d\nКлиент: %s %s\nСумма: %s ₽\nТелефон: %s",
$data['id'],
$data['billing']['first_name'],
$data['billing']['last_name'],
$data['total'],
$data['billing']['phone']
);
file_get_contents(sprintf(
'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&text=%s',
$telegram_bot_token,
$chat_id,
urlencode($message)
));
http_response_code(200);
echo json_encode(['status' => 'ok']);
Этот скрипт размещаете на вашем сервере, URL указываете в настройках вебхука WooCommerce. При каждом заказе в Telegram приходит сообщение. Легко расширить — добавьте запись в лог, отправку email, обновление Google Таблицы.
Безопасность — важный момент
Никогда не создавайте вебхуки без секретного ключа. Без него любой злоумышленник сможет отправить поддельный запрос на ваш URL. Также рекомендую:
- Использовать HTTPS для URL доставки
- Логировать входящие запросы для отладки
- Ограничить доступ к обработчику по IP (адреса WooCommerce-сервера, если он известен)
- Добавить обработку ошибок и повторные попытки
Отладка вебхуков: как проверить, что всё работает
WooCommerce хранит лог доставки вебхуков. Зайдите в WooCommerce → Статус → Логи и выберите лог вебхуков. Там вы увидите каждый запрос: время отправки, статус ответа, тело запроса и ответа.
Если вебхук возвращает ошибку, проверьте:
- Доступен ли URL извне (не заблокирован ли фаерволом)
- Правильно ли обрабатывается POST-запрос
- Не истёк ли таймаут (по умолчанию WooCommerce ждёт 5 секунд ответа)
- Корректна ли проверка подписи
Для тестирования удобно использовать Webhook.site — бесплатный сервис, который показывает все входящие запросы в реальном времени. Укажите его URL в настройках вебхука, создайте тестовый заказ и посмотрите, какие данные приходят.
Распространённые ошибки
| Проблема | Причина | Решение |
|---|---|---|
| Вебхук не срабатывает | Статус «Приостановлен» | Включить в настройках вебхука |
| 404 ошибка | Неверный URL или rewrite rules | Проверить пермалинки WordPress |
| Пустой ответ | Скрипт не читает php://input | Использовать file_get_contents для получения тела запроса |
| Дублирование событий | WooCommerce повторяет отправку при таймауте | Добавить обработку идемпотентности по ID заказа |
| Подпись не совпадает | Неверный секрет или кодировка | Проверить ключ, использовать base64 + HMAC-SHA256 |
Когда вебхуков недостаточно
Вебхуки отлично подходят для односторонних событий и простых интеграций. Но есть сценарии, где они не справляются:
- Двусторонняя синхронизация в реальном времени — если нужно не только отправлять, но и принимать данные от внешних систем через API
- Обработка больших объёмов — при тысячах заказов в день лучше использовать очереди сообщений (RabbitMQ, Redis)
- Сложные бизнес-логики — когда условий и ветвлений слишком много, имеет смысл вынести логику в отдельный микросервис
В таких случаях мы в WeNesis обычно проектируем полноценную архитектуру интеграции: вебхуки как триггер, очередь сообщений как буфер, отдельный обработчик с бизнес-логикой. Это надёжнее и масштабируемее.
Практический чеклист перед запуском
Прежде чем включать вебхуки в продакшен, пройдитесь по этому списку:
- Определите, какие события действительно нужны — не стоит настраивать вебхук на каждый чих
- Создайте
Добавить комментарий