Webhooks sturen automatisch HTTP-callbacks wanneer events plaatsvinden, voor real-time notificaties en event-driven integraties tussen systemen.
Een webhook is een HTTP-callback die automatisch een POST-request met een event-payload stuurt naar een vooraf geconfigureerde URL wanneer een specifieke gebeurtenis plaatsvindt in een bronsysteem. Webhooks maken real-time, event-driven communicatie mogelijk tussen applicaties zonder dat de ontvanger continu hoeft te pollen naar updates. Ze vormen de ruggengraat van moderne integraties tussen SaaS-platforms, betaalproviders, CI/CD-systemen en interne microservices, en vervangen de inefficiente aanpak van periodiek controleren op wijzigingen.

Een webhook is een HTTP-callback die automatisch een POST-request met een event-payload stuurt naar een vooraf geconfigureerde URL wanneer een specifieke gebeurtenis plaatsvindt in een bronsysteem. Webhooks maken real-time, event-driven communicatie mogelijk tussen applicaties zonder dat de ontvanger continu hoeft te pollen naar updates. Ze vormen de ruggengraat van moderne integraties tussen SaaS-platforms, betaalproviders, CI/CD-systemen en interne microservices, en vervangen de inefficiente aanpak van periodiek controleren op wijzigingen.
Webhooks volgen een publisher-subscriber model over HTTP. Wanneer een event optreedt (een betaling slaagt, een commit wordt gepusht, een formulier wordt ingediend), serialiseert het bronsysteem de eventdata als JSON-payload en verstuurt deze als HTTP POST naar een of meer door de subscriber geregistreerde URL's. De ontvanger bevestigt ontvangst door een 2xx-statuscode te retourneren. Als de ontvanger onbereikbaar is of een 5xx-fout retourneert, zou de verzender opnieuw moeten proberen met exponential backoff (bijvoorbeeld na 1 minuut, 5 minuten, 30 minuten, daarna elk uur) om tijdelijke storingen op te vangen. Beveiliging is niet onderhandelbaar: elke webhook moet worden geverifieerd via een HMAC-signature. De verzender berekent een hash (doorgaans SHA-256) van de ruwe request body met een gedeeld geheim en voegt deze toe in een header (bijvoorbeeld Stripe-Signature of X-Hub-Signature-256). De ontvanger herberekent de hash en weigert het request als deze niet overeenkomt, waardoor gespoofde events van kwaadwillende actoren worden geblokkeerd. Naast HMAC omvatten best practices het afdwingen van HTTPS, het valideren van het payload-schema, het controleren van timestamp-versheid om replay-aanvallen te voorkomen, en IP-allowlisting wanneer de provider zijn egress-IP's publiceert. Idempotentie is cruciaal omdat retries betekenen dat hetzelfde event meerdere keren kan aankomen. Ontvangers moeten een uniek event-ID opslaan en verwerking overslaan als dat ID al is verwerkt. Voor systemen met hoge doorvoer ontkoppelt een message queue (Redis, RabbitMQ, SQS) ontvangst van verwerking, wat verkeerpieken absorbeert en voorkomt dat webhook-timeouts de verzender blokkeren. Monitoring van webhook-levering met dashboards die succespercentages, latency-percentielen en faalredenen bijhouden helpt integratieproblemen te signaleren voordat ze bedrijfsprocessen beinvloeden. Moderne webhook-infrastructuurtools zoals Svix, Hookdeck en ngrok vereenvoudigen ontwikkeling, testen en productiebeheer. Standaarden zoals CloudEvents bieden een leverancier-onafhankelijk formaat voor event-payloads, waardoor integraties eenvoudiger worden wanneer meerdere bronnen events versturen naar dezelfde ontvanger. Webhook-registratie via self-service portalen stelt klanten in staat om zelf endpoints toe te voegen, events te selecteren en leveringshistorie in te zien zonder tussenkomst van het development team.
MG Software implementeert webhooks als het standaard integratiemechanisme in de applicaties die we bouwen. We ontvangen betaalwebhooks van Stripe en Mollie met HMAC-verificatie en idempotente eventverwerking, triggeren CI/CD-deployments via GitHub webhooks, synchroniseren CRM-records via HubSpot event-callbacks en pushen real-time orderupdates naar klant-ERP-systemen. Elk webhook-endpoint dat we bouwen bevat signature-verificatie, gestructureerde logging, dead-letter handling voor gefaalde events en monitoring-alerts voor leveringsanomalieeen. We gebruiken een queue-gebaseerde architectuur waarbij inkomende webhooks direct worden geaccepteerd en in een achtergrondproces worden verwerkt. Dit garandeert snelle response-tijden naar de verzender en voorkomt dat piekbelasting onze verwerking blokkeert. Voor lokale ontwikkeling gebruiken we ngrok om webhooks naar de ontwikkelomgeving te tunnelen, en Stripe CLI om testevents te genereren zonder echte transacties. Onze webhook-endpoints zijn ontworpen om horizontaal te schalen: bij hoge volumes verdeelt een load balancer inkomende requests over meerdere workers die onafhankelijk events verwerken uit de queue, waardoor piekbelasting geen invloed heeft op de leveringsbetrouwbaarheid.
Push-gebaseerde integraties reageren op events in seconden in plaats van minuten, en elimineren de verspilde rekenkracht van constant pollen. Voor betalingen, voorraad en klantgerichte workflows kan het verschil tussen een polling-interval van dertig seconden en een directe webhook het verschil zijn tussen een bevestigde bestelling en een verwarde klant. Webhooks verlagen de serverbelasting aan beide kanten: de verzender hoeft geen polling-requests af te handelen, en de ontvanger verbruikt alleen resources wanneer er daadwerkelijk iets is veranderd. Dit maakt webhooks bijzonder geschikt voor integraties tussen systemen die in verschillende snelheden opereren. Betrouwbare webhook-afhandeling met correcte verificatie, retries en idempotentie is wat productieklare integraties onderscheidt van fragiele lijmcode die bij de eerste de beste storing omvalt. Daarnaast verlagen webhooks de complexiteit van systeemintegraties: in plaats van elke applicatie polling-logica te laten implementeren, stuurt het bronsysteem updates naar alle geregistreerde ontvangers via een enkel, gestandaardiseerd mechanisme.
HMAC-signatureverificatie overslaan, waardoor iedereen die de endpoint-URL ontdekt nep-events kan injecteren. Webhooks synchroon verwerken in de request-handler in plaats van ze in een queue te plaatsen, wat leidt tot timeouts bij piekbelasting. Idempotentie negeren zodat opnieuw verstuurde events dubbele bestellingen of dubbele afschrijvingen veroorzaken. Geen monitoring instellen op leveringssuccespercentages, waardoor gefaalde integraties onopgemerkt blijven tot een klant klaagt. Webhook-URL's hardcoden zonder omgevingsspecifieke configuratie, zodat productie-events per ongeluk naar staging-endpoints worden gestuurd. Geen dead-letter queue implementeren voor events die herhaaldelijk falen, waardoor ze permanent verloren gaan. Het webhook-geheim delen via onbeveiligde kanalen (e-mail, chat) in plaats van het op te slaan in een secrets manager zoals Vault of AWS Secrets Manager. Veel teams implementeren ook onvoldoende logging rond webhook-verwerking, waardoor het onmogelijk wordt om de oorzaak van gefaalde events te achterhalen wanneer problemen dagen later aan het licht komen.
Dezelfde expertise die u leest, zetten wij in voor klanten.
Ontdek wat wij kunnen doenWat is een API? Betekenis, werking en toepassing in moderne software
Een API (Application Programming Interface) koppelt softwaresystemen via gestandaardiseerde protocollen: van betaalintegraties en CRM-koppelingen tot real-time data-uitwisseling tussen apps, microservices en externe platformen.
REST API uitgelegd: architectuur, HTTP-methoden en best practices voor webservices
REST APIs gebruiken standaard HTTP-methoden (GET, POST, PUT, DELETE) en resource-gebaseerde URLs om gestructureerd data uit te wisselen. Ontdek de architectuurprincipes, beveiligingsmethoden en best practices achter de meest gebruikte API-stijl ter wereld.
Alles wat je moet weten over een Message Queue
Vaak onderschat, groot effect: Message queues ontkoppelen systeemcomponenten via asynchrone communicatie, bijvoorbeeld met RabbitMQ en Kafka voor…
Het verschil tussen Kafka en RabbitMQ uitgelegd
Kafka houdt gigantische logs met replay; RabbitMQ routeert jobs en commands met bewezen patronen. Kies naar volgorde versus flex.