Skip to content

Что такое Webhook

Коротко:

Webhook ("веб-хук") — механизм, при котором сервис А делает HTTP POST-запрос на ваш URL когда что-то происходит. Противоположен polling: вместо "вы спрашиваете каждые N сек есть ли новое" — "сервис сам шлёт уведомление". Типичные use-case: платежи (Stripe/YooKassa webhook на /payment/completed), CI/CD (GitHub push → Jenkins), мониторинг (Enterno → ваш webhook при падении сайта).

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Receiver — публичный URL принимающий POST с JSON
  • HMAC-подпись заголовок (X-Signature-256) — защита от подделки
  • Replay-protection: timestamp + nonce в payload
  • Retry с exponential backoff — не все receivers всегда доступны
  • Idempotency: receiver должен быть готов получить тот же webhook 2+ раза

Пример

POST /webhook HTTP/1.1
X-Signature-256: sha256=abc...
Content-Type: application/json

{"event":"payment.succeeded","id":"pi_123"}

Смежные термины

Больше по теме

Часто задаваемые вопросы

Webhook или polling?

Webhook = почти realtime + меньше нагрузки на обе стороны. Polling = проще для тестов + работает через firewall (outgoing only). Для production — webhook.

Как проверить что webhook от того сервиса?

Проверяйте HMAC-подпись через shared secret. Stripe/YooKassa документируют конкретный алгоритм (обычно HMAC-SHA256).

Что делать если receiver был down?

Сервис должен retry 3-5 раз с exponential backoff. После финального fail — сохранить в dead-letter queue.