Automatisering · 5 min lezen

Wat is een webhook?

Door Remco · 11 oktober 2026 · ☕ 5 min

Een webhook is een HTTP-bericht dat een leverancier naar een door jou ingestelde URL stuurt zodra er iets gebeurt. Je hoeft dan niet steeds zelf te vragen of er al nieuws is.

Je komt vaak tegen zodra je webshop, betaalprovider, boekhouding of CRM met elkaar moet praten. Het klinkt technischer dan het is. Zie het als een automatisch seintje van systeem A naar systeem B.

Het belangrijke verschil met een gewone -aanroep: bij een API-aanroep vraag jij iets op. Bij een webhook krijg jij een bericht zodra er iets gebeurt. Dat scheelt onnodig controleren, maar het vraagt wel om een ontvanger die betrouwbaar werkt.

Hoe werkt het met een bestelling?

Stel, je hebt een fictieve webwinkel: voorbeeld.nl.

Een klant plaatst een bestelling. Je webshop maakt die bestelling aan. Daarna stuurt de webshop automatisch een webhook naar een URL die jij hebt ingesteld, bijvoorbeeld:

https://voorbeeld.nl/api/webhooks/bestelling

Bij Shopify kan dat bijvoorbeeld via het topic orders/create. Shopify stuurt HTTPS-webhooks als POST-verzoeken naar je endpoint. Je endpoint moet een 2xx HTTP-status teruggeven, anders telt de bezorging niet als succesvol.

Een simpel webhookbericht kan er zo uitzien:

{
  "event": "orders/create",
  "order_id": "abc123",
  "total": "betaald via betaalprovider"
}

In de praktijk wil je daarna vaak nog iets ophalen via een API. Mollie doet dit heel bewust bij klassieke payment webhooks. Mollie stuurt alleen het betalings-ID mee als POST-parameter id. Daarna moet jouw systeem zelf via de Mollie API controleren wat de actuele betaalstatus is.

Dat lijkt omslachtig, maar het is juist verstandig. Een betaalstatus kan veranderen tussen het versturen en ontvangen van de webhook. Verwerk een bestelling daarom niet blind op basis van alleen het webhookbericht.

Webhook versus API-aanroep

Een webhook en een API-aanroep zijn familie, maar ze lossen een ander probleem op.

KenmerkWebhookAPI-aanroep
Wie begintDe leverancier stuurt jou een berichtJij vraagt zelf iets op
MomentZodra er iets gebeurtWanneer jouw systeem daarom vraagt
VoorbeeldNieuwe bestelling triggert berichtBestelstatus ophalen bij betaalprovider
RisicoOntvanger kan down zijnJe kunt te vaak of te laat controleren

Mijn beslisregel: gebruik een webhook voor het seintje dat er iets is gebeurd. Gebruik een API-aanroep om de actuele details te controleren voordat je iets definitiefs doet.

Wil je eerst de basis van dat tweede deel snappen, lees dan ook wat een API-koppeling is.

Waarom het ertoe doet

Als je webhooks negeert, ga je vaak onnodig pollend werken. Polling betekent dat jouw systeem steeds vraagt: is er al iets nieuws? Dat kan prima zijn bij simpele koppelingen, maar bij bestellingen en betalingen wil je meestal sneller en gerichter reageren.

Andersom is een webhook ook geen magische zekerheid. Een 200- of 2xx-response betekent vooral: technisch ontvangen. Het betekent niet automatisch dat je bestelling inhoudelijk netjes is verwerkt, je voorraad klopt, je mail is verzonden en je boekhouding is bijgewerkt.

Daarom moet je onderscheid maken tussen ontvangen en verwerken. Je webhookontvanger moet snel en correct antwoorden. De echte verwerking mag daarna gecontroleerd gebeuren.

Bij betaaldata of besteldata komt daar nog veiligheid bij. Als een Nederlandse webshop persoonsgegevens van klanten via een webhook naar een externe dienst stuurt die namens de webshop verwerkt, heb je volgens de AVG een verwerkersovereenkomst nodig. Dat is geen technisch detail, maar een praktische randvoorwaarde.

Waar het in de praktijk misgaat

De ontvanger is even down.
Dit is de klassieker. Je webhook-URL geeft geen succesvolle 2xx-status terug. Shopify probeert een mislukte bezorging in totaal 8 keer opnieuw over een periode van 4 uur. Daarna kan de webhooksubscription worden verwijderd. WooCommerce zet een webhook automatisch op disabled na 5 opeenvolgende mislukte bezorgpogingen waarbij de response geen succesvolle 2xx-status is. Stripe probeert mislukte live webhooks automatisch opnieuw te bezorgen met exponential backoff gedurende maximaal 3 dagen.

Je verwerkt dubbele berichten alsof ze nieuw zijn.
Webhooks garanderen meestal niet precies-één-keer verwerking. Door retries kan hetzelfde event nog een keer binnenkomen. Sla daarom op welk event of object je al hebt verwerkt. Werk met object-ID’s, niet met het gevoel dat elk binnenkomend verzoek nieuw zal zijn.

Je vertrouwt op de volgorde van binnenkomst.
Stripe garandeert niet dat webhook-events in dezelfde volgorde aankomen als waarin ze zijn aangemaakt. Dat is belangrijk. Als een betaling en orderupdate kort na elkaar gebeuren, moet jouw systeem niet blind varen op wat als eerste binnenkomt. Controleer de actuele status via de API voordat je een bestelling verwerkt.

Je controleert de afzender niet.
Een webhook zonder handtekeningcontrole of gedeeld geheim is niet veilig genoeg voor bestel- of betaaldata. Shopify adviseert om de X-Shopify-Hmac-Sha256 header te valideren. Daarmee controleert je ontvanger of het verzoek echt van Shopify komt.

Verschil per platform

  • —
    Shopify: werkt met webhooktopics zoals orders/create. Je endpoint krijgt een POST-verzoek en moet een 2xx-status teruggeven. Controleer de HMAC-header.
  • —
    WordPress met WooCommerce: WooCommerce stuurt webhooks via HTTP POST naar de ingestelde Delivery URL. Let op mislukte bezorgingen, want na 5 opeenvolgende fouten kan de webhook disabled worden.
  • —
    : hier bouw je meestal zelf de ontvangende URL. De belangrijkste keuze is niet het framework, maar wat je endpoint doet: snel ontvangen, afzender controleren, dubbele verwerking voorkomen en daarna pas de echte actie uitvoeren.
✦
Check dit zelf in een paar minuten: open je webhookinstellingen, kijk naar de Delivery URL, controleer of HTTPS aanstaat, zoek de laatste bezorgpogingen op en kijk of je 2xx-responses ziet.

Een webhook is vooral geschikt als startschot. Niet als enige waarheid. Voor bestellingen en betalingen raad ik bijna altijd aan: webhook ontvangen, afzender controleren, actuele status ophalen via API, dan pas verwerken.

Werk je aan koppelingen tussen webshop, betaalprovider, voorraad of administratie, dan valt dit onder automatisering voor MKB. REBUS Digital Solutions helpt ook met automatisering en koppelingen als je wilt dat dit netjes wordt uitgezocht en gebouwd.

Veelgestelde vragen

Wat is het verschil tussen een webhook en een API-aanroep?

Bij een API-aanroep vraag jij zelf informatie op bij een ander systeem. Bij een webhook stuurt dat systeem jou vanzelf een bericht zodra er iets gebeurt. Een webhook is dus handig voor meldingen, terwijl een API-aanroep vaak nodig blijft om actuele details op te halen.

Waar gebruik je webhooks voor?

Webhooks worden vaak gebruikt bij bestellingen, betalingen, formulieren en voorraadupdates. Bijvoorbeeld: je webshop krijgt een bestelling en stuurt automatisch een bericht naar je boekhouding, magazijn of mailtool. Je hoeft dan niet handmatig te controleren of er iets nieuws is.

Is een webhook veilig?

Een webhook is pas veilig genoeg als je controleert wie het verzoek stuurt. Shopify adviseert bijvoorbeeld om de X-Shopify-Hmac-Sha256 header te valideren. Zonder handtekeningcontrole of gedeeld geheim kan je ontvanger niet betrouwbaar weten of het verzoek echt is.

Wat gebeurt er als mijn webhook even niet bereikbaar is?

Dat hangt af van het platform. Shopify probeert een mislukte webhook in totaal 8 keer opnieuw te bezorgen over 4 uur. WooCommerce zet een webhook uit na 5 opeenvolgende mislukte bezorgpogingen. Stripe probeert live webhooks maximaal 3 dagen opnieuw te bezorgen.

Bronnen: shopify.dev/docs/apps/build/webhooks · shopify.dev/docs/apps/build/webhooks/subscribe/… · shopify.dev/docs/api/webhooks · shopify.dev/docs/apps/build/webhooks/troublesho… · woocommerce.com/document/webhooks · docs.mollie.com/docs/webhooks

R

Remco

Webontwikkelaar & eigenaar, REBUS Digital Solutions

Remco bouwt maatwerk websites, webshops en SEO-strategieën voor MKB door heel Nederland. REBUS Digital Solutions is zijn eenmanszaak in Den Haag.

LinkedIn →Meer over mij →

Klaar om te bouwen?

Laten we jouw project bespreken

Geen salesgesprek. Gewoon kijken of er een match is en wat je kunt verwachten.

Gesprek plannen →

Meer over Automatisering

GidsSoftware koppelen: ook als er geen API isZeven manieren om systemen te koppelen, van kant-en-klare app tot scherm uitlezen. Met een beslisboom en per route wat er misgaat.BegripWat is een API-koppeling?Een API-koppeling is een technische verbinding waarmee twee systemen gegevens kunnen ophalen, versturen of bijwerken volgens vaste afspraken.Gidsn8n of Zapier kiezen: welke tool past bij jou?Kies n8n, Zapier of Make op beheer, hosting, privacy en schaal. Niet op prijs, want die verandert te vaak.BegripWat is een AI-agent?Een AI-agent is software die namens een gebruiker taken uitvoert door een AI-model, tools en instructies te combineren. Het verschil met een chatbot zit vooral in acties uitvoeren.

Uit de blog

BlogAPI-koppeling: wat kost het en wat levert het op?Wil je systemen automatiseren met een API koppeling? Ik leg uit wat het kost, wat de valkuilen zijn en wanneer je het beter niet kunt doen voor je MKB-bedrijf.BlogWorkflow automatisering: 3 voorbeelden voor MKBStop met handmatig werk. Ik laat zien hoe workflow automatisering jouw MKB-bedrijf tijd en geld bespaart met voorbeelden uit de praktijk.

Uit het nieuws

NieuwsAI-workflows zonder code: prima voor een POC, niet voor productieOpleiders beloven dat je met Zapier, n8n, Cursor en Replit zonder code AI-workflows bouwt. Dat klopt, voor een proefversie. Waarom een productieomgeving meer vraagt.NieuwsClaude Opus 5.5: wat de nieuwe Claude AI betekent voor MKBClaude Opus 5.5 van Anthropic is sneller en 40% goedkoper dan Opus 5. Wat de nieuwe Claude AI betekent voor automatisering in het MKB.

← Alle artikelen over Automatisering & AI