Webhook to HTTP request wysyłany automatycznie przez system A do endpointu systemu B gdy zdarzenie się wydarzy. Push-based komunikacja — przeciwieństwo polling (gdzie ty pytasz co X minut "czy coś nowego?").
Typowy flow:
- Rejestrujesz URL endpoint u providera (Stripe, GitHub, Slack)
- Gdy zdarzenie się dzieje (payment, push, message) — provider wysyła POST request z payload JSON do twojego URL
- Twój endpoint odbiera, przetwarza, odpowiada 200 OK
- Jeśli endpoint zwróci błąd lub timeout — większość providerów retry-uje (exponential backoff)
Webhook vs polling:
- Webhook: real-time (latency <1s), efficient (zero requests gdy nic się nie dzieje), wymaga public endpoint
- Polling: latency = poll interval (5min, 1h), wastes requests, działa za firewallem
Security considerations:
- Signature verification — providers signują payload, weryfikuj signature zanim trustujesz
- Idempotency — webhooks często deliverowane multiple times, używaj idempotency keys
- Replay protection — sprawdzaj timestamp żeby zablokować old payloads
- IP allowlist — jeśli provider publikuje stałe IPs
W automation: webhooks są preferred sposób na near-real-time data flow. Polling jako fallback gdy provider nie wspiera webhooks.