Веб-сервис отправляет вам данные сам, без запроса с вашей стороны - это и есть вебхук простыми словами. Механизм работает так: на сервере-источнике происходит событие (пришла оплата, создан заказ, изменился статус), и сервер сразу отправляет HTTP-запрос на указанный вами URL. Никто ничего не проверяет вручную, интернет-сервис сам сообщает о событии в момент, когда оно произошло.
На клиентских проектах я регулярно настраиваю такие связки: WooCommerce отправляет вебхук в CRM при новом заказе, платёжный сервис уведомляет о поступлении оплаты, форма на сайте передаёт заявку в мессенджер менеджера. Срабатывает вебхук именно в момент наступления события на сервере-источнике, не раньше и не с задержкой на опрос.
Вебхук - это HTTP-запрос, который сервер-источник отправляет автоматически на заданный URL при наступлении конкретного события, без участия и запроса со стороны получателя.
Статья о вебхуках в контексте типовых бизнес-задач: интернет-магазины, CRM, автоматизация через сервисы вроде n8n или Albato. Про низкоуровневую разработку собственных API здесь речи не идёт, это отдельная тема для программистов.
Коротко:
- Вебхук - это HTTP-запрос, который сервер отправляет автоматически при наступлении события, без участия получателя.
- Данные передаются чаще всего методом POST в формате JSON на заранее указанный URL.
- Главное отличие от API - вебхук работает по модели push (сервер сам отправляет), а классический API - по модели pull (клиент запрашивает).
- Polling (регулярный опрос сервера) требует постоянных запросов клиента, а вебхук уведомляет мгновенно и без лишней нагрузки.
- Типичное применение - уведомления о заказах, оплатах и заявках, которые связывают сайт с CRM или мессенджером без ручной проверки.
Что такое вебхук простыми словами
Представим ситуацию: вы ждёте посылку и можете либо каждый час звонить в пункт выдачи и спрашивать «пришла?», либо просто подождать, пока курьер сам постучит в дверь. Вебхук - это как раз второй вариант. Приложение или сервис не заставляет вас проверять статус, оно само сообщает о событии, когда оно произошло.
Технически webhook (вебхук) - это механизм обратного вызова через HTTP. Вы регистрируете в сервисе-источнике конкретный URL, адрес, на который нужно отправлять данные. Как только на стороне сервиса происходит нужное событие: новый заказ, изменение статуса, поступление платежа, он автоматически формирует HTTP POST-запрос и отправляет данные на этот адрес.
Данные обычно передаются в формате JSON - это текстовый формат, где информация записана парами «ключ: значение» и легко читается любым языком программирования. Например, при новом заказе в интернет-магазине в теле запроса придёт номер заказа, сумма, товары и контакты покупателя - всё, что нужно принимающей системе для дальнейшей обработки.
На одном из проектов нашей студии «Мельница» мы настраивали именно такую схему: WooCommerce при оформлении заказа отправляет вебхук в n8n, а тот раскладывает данные по Google Таблице и CRM без участия менеджера. Работает надежно, если правильно указать URL и формат данных на обеих сторонах. Если в такой цепочке передаются контакты покупателя, это стоит отразить в политике конфиденциальности сайта и заранее проверить, где хранятся данные - того требует 152-ФЗ.
Важный нюанс: вебхук - это не отдельный сервис, а способ взаимодействия между двумя системами. Настроить его можно почти в любом современном приложении, от платёжных систем до конструкторов сайтов, было бы поле для указания URL в настройках.
Чем вебхук отличается от API и polling
Разница между вебхуком, API и polling в том, кто выступает инициатором запроса. При обычном API (application programming interface, программном интерфейсе приложения) клиент сам отправляет запрос и спрашивает: «есть новые данные?». Это модель pull, клиент активно запрашивает информацию со стороны сервера, когда ему это нужно.
Вебхук работает наоборот, по модели push. Сервер сам отправляет данные, как только событие происходит, без единого запроса с вашей стороны. Клиенту не нужно ничего запрашивать и проверять, принимающая сторона просто принимает входящий запрос на указанном URL и обрабатывает его, когда он приходит.
Polling (регулярный опрос) отличается от вебхука постоянными опросами сервера вместо мгновенного уведомления. Программа с определённым интервалом, раз в минуту, раз в пять минут, отправляет запрос и проверяет: изменилось что-то или нет. В большинстве случаев ответ будет «ничего нового», и это впустую расходует ресурсы сервера и канал интернет-соединения.
Я сам проверял это на практике на одном из клиентских проектов: замена polling на вебхук при интеграции с платёжным сервисом убрала сотни лишних запросов в час и ускорила появление статуса оплаты в CRM с минуты-двух почти до мгновенного отклика. Вебхук отличается от API именно тем, что не требует регулярных запросов клиента: экономится и нагрузка на сервер, и скорость доставки данных.
| Параметр | Вебхук | API (обычный запрос) | Polling |
| Кто инициирует | Сервер-источник | Клиент | Клиент |
| Частота обращений | Только при событии | По требованию клиента | Постоянно, по расписанию |
| Нагрузка на сервер | Минимальная | Средняя | Высокая при частом опросе |
| Скорость получения данных | Мгновенно при событии | Зависит от момента запроса | С задержкой до интервала опроса |
Типичная картина у малого бизнеса: сайт годами опрашивает платёжный сервис через API каждую минуту, хотя оплаты приходят раз в час. Достаточно один раз настроить вебхук, и та же задача решается без лишней нагрузки на хостинг и без риска пропустить событие между опросами.
Как работает вебхук: пошаговая схема

Процесс вебхука разбивается на понятные шаги, и я обычно объясняю его клиентам именно так. Сначала получатель (ваш сервер, CRM или сценарий в n8n) регистрирует URL вебхука - это адрес, куда сервис-источник будет отправлять уведомления. Указывает его либо в настройках интеграции, либо получает автоматически при создании сценария.
Дальше происходит событие: оплата, новый заказ, изменение статуса сделки. В этот момент источник формирует запрос: собирает данные о событии в формате JSON и отправляет его методом POST на зарегистрированный URL. Внутри запроса обычно есть тип события (event), идентификатор объекта (id) и служебные поля: время, подпись, источник.
Сервер получателя принимает запрос, обрабатывает данные и возвращает код ответа. Код ответа 200 подтверждает успешное получение вебхука сервером, источник считает доставку завершённой и не повторяет отправки. Если приходит ошибка (например, 500), большинство сервисов пробуют отправить вебхук повторно через какое-то время.
Упрощённо структура запроса выглядит так:
POST /webhook-handler HTTP/1.1
Content-Type: application/json
{
"event": "order.paid",
"id": "48213",
"amount": 3200,
"status": "success"
} В моей практике именно на этапе разбора JSON новички чаще всего ошибаются: забывают, что тело запроса нужно явно распарсить на сервере, и получают пустой объект вместо данных. Простая проверка на стороне сервера сразу показывает, пришли ли реальные поля или запрос ушёл пустым.
Где применяют вебхуки: практические примеры
После того как разобрались, как технически устроена отправка, полезно посмотреть, где вебхуки реально работают на бизнес-задачи. Чаще всего я встречаю их в интернет-магазинах: магазин уведомляет CRM или Telegram-бота о смене статуса заказа, оплачен, собран, передан в доставку. Клиент видит актуальный статус товара без обновления страницы.
Платёжная система - ещё один классический случай. После успешной оплаты сервис отправляет вебхук на сайт, и заказ автоматически переводится в статус «оплачен» без ручной проверки менеджером. Вебхук применяется в CRM-системах для уведомления о новой заявке: лид с сайта или из мессенджера сразу попадает в сделку, минуя ручной ввод.
Отдельная область - разработка. GitHub поддерживает настройку вебхуков в разделе репозитория Webhooks: например, при отправке изменений (push) в ветку автоматически запускается сборка проекта или развёртывание на сервере. А для маршрутизации входящих вебхуков между сервисами удобно использовать n8n: он принимает запрос, разбирает JSON и раскладывает данные по нужным системам без единой строчки кода.
| Сценарий применения | Какое событие | Что получает получатель |
| Интернет-магазин | Смена статуса заказа | Обновление в CRM и уведомление клиенту |
| Платёжная система | Успешная оплата | Автоматический перевод заказа в «оплачен» |
| CRM-система | Новая заявка с сайта | Создание сделки и назначение менеджера |
| Чат-бот в мессенджере | Сообщение от пользователя | Запуск сценария ответа или передача оператору |
| Репозиторий кода | Пуш в ветку | Запуск сборки или развёртывания |
| Аналитика продаж | Завершение сделки | Запись данных в таблицу или дашборд |
Мы в студии «Мельница» на проектах B2B-клиентов часто связываем именно заявки с сайта и amoCRM через вебхук, это убирает задержку между отправкой формы и появлением лида у менеджера.
Как настроить вебхук: пошаговая инструкция
Настройка вебхука почти всегда идёт по одной и той же схеме, независимо от того, какой сервис выступает источником. Разберём универсальный путь, который подходит и для платёжных систем, и для CRM, и для конструкторов сайтов.
- Получите URL получателя - адрес, на который будут приходить запросы. Это может быть эндпоинт вашего сервера, ссылка от n8n или другого конструктора автоматизации.
- Откройте настройки интеграции у источника события - обычно раздел называется «Webhooks», «Интеграции» или «API».
- Укажите URL вебхука и выберите события, при которых он должен сработать: оплата, новый заказ, изменение статуса.
- Выберите формат передачи данных - в большинстве сервисов это JSON, реже - form-data.
- Сохраните настройки и активируйте вебхук - без этого шага сервис не начнёт отправки, даже если URL указан верно.
- Обновите страницу настроек и посмотрите лог последних отправок, если сервис его показывает - так сразу видно, доходят ли запросы.
Если своего сервиса-интегратора нет или разбираться с кодом руками не хочется, можно использовать Albato: в нём вебхук настраивается через готовый конструктор, без написания обработчика на своём сервере. Для новичков это удобный способ начать автоматизацию и быстро стать увереннее в теме, минуя техническую часть.
Начать стоит с одного тестового события, а не сразу со всех - так проще понять, где искать проблему, если что-то пойдёт не так. В большинстве популярных сервисов вебхуки настраивают в одном и том же разделе, «Интеграции» или «API», и такой раздел обычно доступен даже на бесплатном тарифе.
Из своей практики: чаще всего вебхук не работает не из-за ошибки в коде, а из-за неверно указанного пути в URL, лишний слэш или опечатка в адресе, и запросы просто уходят в никуда.
Как проверить и протестировать вебхук
После настройки нельзя просто понадеяться, что всё заработало, нужно проверить вебхук на реальном тестовом событии, прежде чем полагаться на него в рабочем процессе. Проще всего сначала убедиться, что запрос вообще уходит и приходит в нужном виде, а уже потом смотреть, корректно ли его обрабатывает принимающая сторона. Проверять вебхук стоит не только сразу после настройки, но и после каждого значимого изменения в интеграции: сменился URL или формат данных, и старая проверка уже не гарантирует, что всё работает.
Для первичной проверки удобно использовать webhook.site, применяется для тестирования входящих вебхуков без написания кода. Сервис выдаёт временный URL, вы вставляете его вместо адреса рабочего сервера в настройках источника и смотрите, что реально приходит: заголовки, тело запроса, формат данных. Это быстро показывает состояние интеграции - работает она вообще или запросы никуда не уходят.
Второй инструмент - Postman, используется для отправки тестовых HTTP-запросов вручную, в том числе имитации вебхука в обратную сторону, когда нужно проверить, как обработчик реагирует на разные структуры данных. Я в своей практике часто гоняю через Postman заведомо «плохой» запрос: без обязательного поля или с неверным типом данных, чтобы увидеть, как обработчик себя ведёт при ошибках, а не только в идеальном сценарии.
Если тестовое событие пришло, но результата в целевой системе не видно, порядок проверки такой:
- Посмотреть логи сервиса-отправителя - там обычно виден статус доставки и код ответа
- Проверить логи принимающего сервера или интегратора - иногда запрос доходит, но падает при обработке
- Убедиться, что URL вебхука указан без опечаток и с правильным протоколом
- Отправить событие повторно вручную, если сервис это позволяет, не дожидаясь следующего реального события
При сбоях в работе вебхука почти всегда помогает именно последовательная проверка каждого звена цепочки, а не попытка угадать причину сразу.
Безопасность вебхуков: как защититься от подделки

Вебхук - это открытый URL, на который может отправить запрос кто угодно, если узнает адрес. Без дополнительной защиты ничто не мешает третьей стороне подделать запрос и, например, инициировать в CRM создание фиктивной сделки или изменить состояние заказа. Поэтому вопрос аутентификации входящих запросов - не опциональная настройка, а обязательный этап при работе с реальными данными.
Базовый минимум - это HTTPS, он защищает передачу данных вебхука от перехвата по пути к серверу. Дальше нужна проверка подлинности самого запроса: её обеспечивает HMAC-подпись, она используется для проверки подлинности входящего запроса и формируется из содержимого запроса и секретного ключа, известного только отправителю и получателю. Если подпись не совпадает, запрос отклоняется, даже если он пришёл по правильному адресу.
Более простой, хотя и менее надёжный вариант - секретный токен в самом URL вебхука. Он предотвращает приём поддельных запросов от тех, кто не знает точный адрес, но при утечке ссылки в логах или переписке защита теряется полностью. Дополнительно стоит настроить IP-фильтрацию, она ограничивает доступ и оставляет приём запросов только с доверенных адресов, если сервис-отправитель публикует список своих IP.
| Мера защиты | От какого риска защищает | Как реализовать |
| HTTPS | Перехват данных при передаче | SSL-сертификат на сервере, ссылка вебхука только со схемой https |
| HMAC-подпись | Подделка тела запроса | Секретный ключ в настройках сервиса, проверка подписи на сервере |
| Секретный токен в URL | Случайные и неавторизованные запросы | Уникальный непредсказуемый путь вебхука |
| IP-фильтрация | Запросы с чужих серверов | Список разрешённых IP из документации сервиса-отправителя |
| Логирование | Отсутствие данных при разборе инцидента | Сохранение всех входящих запросов с телом и заголовками |
На практике я советую клиентам не выбирать что-то одно, а сочетать хотя бы HTTPS и HMAC-подпись, это закрывает основные риски без сложной инфраструктуры шифрования на стороне получателя. Логирование запросов при этом нужно всегда: без него найти причину сбоя постфактум будет почти невозможно, особенно если ошибки носят разовый характер, а не системный.
Ограничения вебхуков и типичные ошибки
При всех плюсах у вебхуков есть ограничения, которые важно понимать до того, как строить на них критичный процесс обмена данными. Главное - отсутствие гарантии доставки. Если сервер-получатель в момент отправки недоступен из-за сбоя, перегрузки или технических работ, событие может просто потеряться, и отправитель не всегда об этом узнает.
Решает эту проблему retry-механизм, он повторяет отправку вебхука при отсутствии ответа сервера в течение заданного времени. Но у повторов есть обратная сторона: без идемпотентности один и тот же заказ или платёж может обработаться дважды. Идемпотентность предотвращает повторную обработку одного и того же события: на стороне получателя нужно проверять уникальный идентификатор запроса и отбрасывать дубли.
В моей практике частая ошибка - вообще не думать про очередь запросов. При большом потоке событий (например, во время распродажи в интернет-магазине) сервер-получатель может не успевать обрабатывать вебхуки, и часть из них просто отваливается по таймауту. Здесь помогает буферизация через очередь сообщений на стороне приёма, а не попытка обработать каждый запрос синхронно и мгновенно. Нагрузка на сервер-получатель резко растёт из-за большого потока событий, и без заранее продуманной очереди сбои в пиковые часы почти неизбежны. Об этой необходимости стоит помнить в любом проекте, а не только в крупных интернет-магазинах.
Ещё одна слабость - сложность отладки. Если вебхук не сработал, разработчику часто не хватает информации: не всегда очевидно, ушёл ли запрос вообще, был ли он отклонён по ошибке подписи или сервер-получатель просто не ответил. Поэтому для критичных данных, платежей, статусов заказов, я рекомендую не полагаться на надежность одних только вебхуков, а дополнительно сверяться с данными через API раз в несколько часов.
Вебхук - это про скорость, а не про стопроцентную гарантию доставки. Для денег и критичных по последствиям событий всегда нужна подстраховка в виде сверки.
Итог: с чего начать работу с вебхуками
Если у вас нет разработчика под рукой, начинать проще всего с no-code платформы (без написания кода) вроде Albato: там вебхук настраивается через готовый интерфейс, а логи и повторные отправки уже встроены. Зарубежные аналоги вроде Zapier или Make работают похоже, но обычно не принимают оплату российскими картами, поэтому для читателя из России Albato - более практичный вариант: оплата в рублях и без лишних сложностей с доступом. По моему опыту, такие инструменты закрывают большинство типовых задач автоматизации процессов между сервисами и подходят для большинства небольших и средних бизнесов.
Если интеграция сложных систем требует собственной логики (CRM, склад, биллинг), тогда без разработчика не обойтись, но сама идея вебхука остаётся той же: события передаются мгновенно, а не по расписанию опроса. Современных решений для этого достаточно, и выбор конкретного инструмента зависит от того, какие платформы участвуют в обмене данными. Удобно, что автоматизировать процесс можно поэтапно: не обязательно сразу выстраивать сложные решения на все сценарии, начните с одного вебхука и постепенно расширяйте поддержку новых событий.
Перед тем как запускать вебхук в бою, пройдите короткий чек-лист. Во-первых, включите HTTPS для всех запросов без исключений. Во-вторых, добавьте HMAC-подпись или секретный токен для проверки подлинности отправителя. В-третьих, отправьте пару тестовых событий и убедитесь, что данные приходят и обрабатываются корректно. В-четвёртых, настройте логирование запросов - это самое дешёвое, что повышает надежность интеграции и экономит часы на поиске причины сбоя в будущем.
Данная статья основана на личном опыте автора и актуальна на момент публикации. Интерфейсы сервисов и алгоритмы поисковых систем регулярно меняются - рекомендую проверять актуальность инструкций на официальных ресурсах. Если у вас остались вопросы - задайте их в комментариях.
Список литературы
- n8n Docs - Webhook node documentation // docs.n8n.io
- Google for Developers - Notifications for resource changes (Google Drive API) // developers.google.com
- Stripe Docs - Receive Stripe events in your webhook endpoint
- GitHub Docs - About webhooks











