What is a webhook?

An HTTP request one system fires to another the moment something happens, carrying the details of that event.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

app.salescrew.io/inbox
The unified reply inbox with classified threads

WebhookA webhook is an HTTP request one system sends to another when an event happens — a form submission, a booking, a deal won — carrying the event's data. It is the simplest way to connect systems without polling.

Why it matters

Two systems that need to stay in sync have two basic options: one can repeatedly ask the other "has anything changed yet", which is polling, or the system where the event happens can simply tell the other system the moment it occurs. A webhook is that second approach: when an event fires, such as a form submission, a booking, or a deal being marked won, the source system sends an HTTP request to a URL the receiving system provided in advance, carrying the event's data in the request body. The receiving system does not have to ask; it is told.

Two things separate a reliable webhook integration from a fragile one. The first is signing: without a way to verify a webhook actually came from the system it claims to, anyone who guesses or discovers the receiving URL can send fake events. The second is retrying: a webhook is a single HTTP request, and if the receiving system is briefly down or the request fails to deliver, an unretried webhook simply drops that event with no second attempt, silently. A webhook integration that skips either of these looks like it works in testing and then quietly loses data in production the first time something goes wrong.

How a webhook delivery works

  1. 1

    A receiving URL is registered

    The destination system provides a URL to receive events in advance.

  2. 2

    An event occurs

    Something happens in the source system, such as a form being submitted.

  3. 3

    The source system sends a request

    An HTTP request carrying the event's data is sent to the registered URL.

  4. 4

    The request is signed

    A signature lets the receiver verify the request genuinely came from the source.

  5. 5

    Failed deliveries are retried

    If the request fails, it is attempted again rather than dropped silently.

The mistake to watch for

Not signing or retrying. An unsigned webhook can be forged; an unretried one silently drops events.

Questions

How is a webhook different from an API call?
A webhook is a push: the system where the event happened sends data to the receiver without being asked. A typical API call is a pull: the receiving system has to actively request data, often by polling repeatedly to check for changes.
Why does a webhook need to be signed?
Without a signature, anyone who discovers or guesses the receiving URL can send fake events that look legitimate. A signature lets the receiver verify the request actually came from the claimed source before acting on it.
What happens if a webhook delivery fails?
Without a retry mechanism, a failed delivery is simply lost, and the receiving system never learns the event happened. A reliable webhook system retries failed deliveries rather than treating one failed attempt as final.