Skip to content

Term

What is a webhook? A message one app sends another

How a payment, a form or a request lands in your own software at once, without it asking every minute.

A developer at a desk with several screens, where webhook messages from other apps arrive and get processed
Webhook
A webhook is a message an app sends automatically to a web address of another app the moment something happens, so that app does not have to keep asking for news.
Also calledwebhook URLHTTP callbackweb hook

By , Founder and CEO

5 min read
On this page
  1. 01Asking again and again, or being told
  2. 02A 59 euro order, second by second
  3. 03Mollie and Stripe each do it differently
  4. 04The bill: per payment, not per message

Asking again and again, or being told

A webhook is about who starts the conversation. Without one, your software keeps asking another service whether anything changed: has that payment arrived, was that form filled in? That is polling. With a webhook the other service tells you itself, the moment it happens. You enter a web address once, for instance in your payment provider's dashboard, and from then on every message arrives there as a plain HTTP POST.

With a regular API integration you ask and the other side answers. With a webhook the other side speaks and you listen. In practice the two work together: the message says something happened, the API supplies the details.

Programmer Jeff Lindsay coined the name in May 2007. His comparison: on the Unix command line you have been able to chain programs with pipes since 1973, the output of one becoming the input of the next. The web had nothing like it; you had to keep checking yourself. "If you could avoid polling, you probably would", he wrote. Two years later GitHub showed how it works in practice, posting to an address of your choice on every code change. Today payment providers, accounting tools, CRMs and automation platforms all work this way. When a webhook alone is not enough, the four ways to connect two systems are on API integration services.

One hour of an online store: twelve requests or one message

One hour in an online store, between 14:00 and 15:00

Polling: ask every 5 minutes

paid

12 requests, 11 times nothing new. The payment of 14:23 shows up at 14:25.

Webhook: the payment provider tells you

14:23

1 message, at the moment it happens.

How a Mollie webhook runs

  1. 01The customer paysBy card or Bancontact, at 14:23.
  2. 02Mollie sends a POSTTo your webhook URL, carrying only the payment id.
  3. 03Your server fetches the statusThrough the Mollie API, with your own key. Nobody can fake a payment that way.
  4. 04Reply 200 OKWithin 15 seconds. Otherwise Mollie retries, up to 10 times over about 26 hours.
  5. 05The order is marked paidThe confirmation email goes out, the warehouse sees the order.

Polling keeps asking whether something changed. A webhook turns that around: the other app tells you the moment it happens.

A 59 euro order, second by second

Say an online store sells bike locks and takes payments through Mollie, a European payment provider. At 14:23 a customer pays 59 euros by card.

  1. Within seconds Mollie posts to the store's webhook URL. The message holds only the payment id, not the status.
  2. The store fetches the status itself through the Mollie API, with its own key. Someone posting a fake message to the address cannot mark an order as paid that way.
  3. The store replies 200 OK within 15 seconds. If it does not, Mollie retries, up to 10 times, the last attempt about 26 hours later.
  4. The order is marked paid, the confirmation email goes out and the warehouse sees the order.

Without a webhook the store asks Mollie whether anything changed. Every five minutes, as in the figure, that is 288 requests a day, and the payment shows up as much as five minutes late. Every minute it is 1,440 a day and about 43,200 a month, for perhaps a few hundred payments. GitHub's own documentation puts it plainly: querying every resource separately quickly hits an API's rate limit.

Mollie and Stripe each do it differently

ProviderWhat the message holdsHow you know it is genuineWhen your side fails
MollieOnly the payment idYou fetch the status yourself through the API10 attempts, the last after about 26 hours
StripeThe full event as JSON, e.g. that a payment succeededA signature in the Stripe-Signature header, HMAC with SHA-256Retries for up to three days, with growing pauses

So read the provider's documentation before you build. Whatever the provider, polling and a webhook differ on five points:

QuestionPollingWebhook
Who startsYour software asksThe other service reports
SpeedAs slow as your intervalNear instant
LoadMany empty requestsOne message per event
When your server is downYou ask again laterThe service retries, up to a limit
Choose it forServices without webhooks, or a nightly exportPayments, forms, status changes

The bill: per payment, not per message

Mollie charges 1.80% plus 0.25 euros for a European consumer card and 0.32 euros for an iDEAL payment in the Netherlands; the webhook itself is free. On the 59 euro lock that is 1.31 euros by card. The work sits on your side: an address that receives the messages over https with a valid SSL certificate, checks them and processes them.

Choose an automation tool if the message only needs to land in another package, such as a row in a spreadsheet or a contact in your CRM. Which tool needs which plan is in Make, Zapier or n8n.

Choose an endpoint in your own software if the message has to do something there: create an order, prepare an invoice, update a case file. That is a small, well-defined job next to building a web application or a client portal.

When a SaaS tool offers no webhooks and no API, sometimes only RPA is left, a robot that clicks where a person clicked. And giving an AI assistant access to your systems increasingly runs through MCP.

An endpoint that misses nothing: what your developer checks

  • The address runs on https only, with a valid certificate.
  • Every message is verified: a signature recomputed, or the status fetched from the provider.
  • The server answers 200 at once and does the work in a queue afterwards, so a slow step causes no timeout.
  • Duplicate messages do no harm: each event id is stored and nothing is booked twice.
  • Order does not matter: a payment that arrives before its order still links up correctly.
  • Every message is logged, so you can see later what came in and what failed.
  • A nightly check through the API catches whatever an outage made you miss.

What developers and owners ask

What is a webhook URL?

The web address in your software where the other service sends its messages, for example https://yourstore.com/webhooks/mollie. You enter it with the provider. Treat it like a door: https only, and verify every message that comes in.

What happens when my server is offline?

Most providers retry. Mollie does so up to 10 times over about 26 hours, Stripe for up to three days. If your server stays down longer you lose messages; a nightly check through the API catches them.

Can someone send a fake message?

Anyone who knows the address can post to it. That is why you verify the signature when the provider sends one, or fetch the status yourself as Mollie asks. Never trust the content of the message blindly.

Do I need a developer?

Not if the message only has to become a spreadsheet row or a CRM contact: an automation tool does that. If it has to book something in your own software, yes.

AI automation

How VBS connects your apps with webhooks

We connect the services you already use to your own software, with webhooks where the provider offers them and a nightly check as a safety net. The same pattern runs in the platform we built for DA Logistics: a driver's request for leave, a receipt or a damage report drops straight into the right one of five office queues, and a mail layer with fourteen kinds of messages tells everyone what happened. See AI automation for links between packages, custom software when the message must land in your own platform, or book a call.

Which two apps still talk through someone's keyboard?

Tell us which services you use. We find out which webhooks they offer and what your own software can do with them.

Optional, if you prefer a call.

What do you want to achieve, and what is already there?

We only use your details to reply to you.