Een webhook is een omgekeerde API-aanroep: in plaats van dat jij een dienst steeds vraagt of er iets gebeurd is, stuurt de dienst zélf een HTTP-request naar jouw URL zodra er iets gebeurt. "Don't call us, we'll call you."
| Polling | Webhook | |
|---|---|---|
| Wie neemt initiatief | Jij, elke X seconden | De dienst, bij een event |
| Vertraging | Tot een heel polling-interval | Vrijwel direct |
| Verspilling | Veel lege antwoorden | Alleen verkeer bij events |
Je registreert een URL bij de dienst ("stuur events hierheen"). Bij een event doet de dienst een HTTP POST naar die URL, meestal met JSON in de body. Jouw kant is dus een kleine webserver die deze requests ontvangt en verwerkt.
Bekende voorbeelden: een git push die een CI/CD-pipeline start, een betaalprovider die "betaling gelukt" meldt, en monitoring die een alert in de chat zet.
Jouw webhook-URL is een publiek bereikbaar endpoint — iedereen kan er iets naartoe POSTen. Diensten ondertekenen hun requests daarom met een gedeeld geheim (een HMAC-handtekening in een header); controleer die altijd voordat je de inhoud vertrouwt. Verwerk events daarnaast idempotent: dezelfde melding kan dubbel bezorgd worden.