API Evangelist API Evangelist
Guidance
API Learnings
APIs
API Governance
API Solutions
API Discovery
API Building Blocks
API Evangelist LLC

Webhooks

HTTP callbacks that push events from producer to consumer

Webhooks are the simplest and most widely adopted form of event-driven API, and I’ve described them for years as “APIs in reverse.” Where a normal API has the consumer calling the provider to ask for data, a webhook flips that: the provider calls the consumer when something happens. You register a URL with a provider, and when an event occurs — a payment is processed, a file is uploaded, a commit is pushed — the provider sends an HTTP POST to your URL with the details. That’s it. The simplicity is the genius: a webhook is just an HTTP request going the other direction, which means any developer who understands HTTP already understands the mechanics. This accessibility is why webhooks became ubiquitous while heavier event-driven technologies stayed niche. Webhooks are most developers’ first and often only taste of event-driven architecture, and they solve a huge swath of real problems with almost no new conceptual overhead.

The reverse-API framing is the right way to understand webhooks, and I leaned on it explicitly. I wrote in 2017 about where to begin with webhooks for the Human Services Data API, describing webhooks as APIs in reverse and studying how Box, Gumroad, Venmo, and GitHub implemented them. The conceptual elegance is that webhooks require no new protocol, no new client, no new infrastructure — they use the same HTTP that everything else uses, just pointed the other way. The consumer stands up an endpoint, the provider posts to it. This is why webhooks solved the polling problem so accessibly: instead of a consumer repeatedly asking “has anything changed yet?”, the provider just tells them when it does, using the HTTP every developer already knows. The reverse-API simplicity is what made webhooks the gateway to event-driven thinking for the broad developer population.

The building blocks of good webhooks are knowable, and I documented them by studying the best implementations. Webhook events are the core — I wrote in 2017 about making sense of API activity with webhook events, studying how GitHub, Box, Stripe, and Slack structured their event types, because the catalog of events a provider exposes reveals what they think matters about their platform. Wildcard webhook events, like GitHub’s ability to subscribe to all events at once, add flexibility. Ping events, which GitHub uses to let you test that your webhook is set up correctly, are a thoughtful building block for verifying connectivity. Responding to a webhook properly matters too — I wrote in 2017 about the importance of returning a 2xx status to acknowledge receipt and complete the loop. And the delivery headers, like GitHub’s X-GitHub-Event, X-Hub-Signature, and X-GitHub-Delivery, are how webhooks carry the metadata for identification and security verification. These building blocks — events, wildcards, ping events, proper responses, delivery headers — are the difference between a webhook implementation developers love and one that frustrates them.

Webhook security is a real concern precisely because of how webhooks work, and the building blocks address it. Because a webhook is an inbound HTTP request to your endpoint from the outside world, you have to verify it actually came from the provider and wasn’t forged. The signature headers — like GitHub’s X-Hub-Signature — are how providers let you cryptographically verify that a webhook payload is authentic and unmodified. This is essential, because acting on a forged webhook could cause real damage. The security model of webhooks — sign the payload, verify the signature on receipt — is straightforward but non-optional, and the providers that do webhooks well make this verification easy and well-documented. The same delivery headers that identify the event also carry the security context, which is part of why studying real implementations like GitHub’s was so instructive: the good implementations bake security into the basic mechanics.

Webhooks sit at the foundation of the event-driven landscape, and their relationship to the broader event-driven world is worth understanding. Webhooks are the simplest event-driven pattern, suited to discrete notifications — something happened, here are the details. For higher-volume, streaming, or more sophisticated event needs, you move up to Server-Sent Events, WebSockets, and message brokers like Kafka. But webhooks handle an enormous proportion of real event-driven use cases perfectly well, which is why they’re so pervasive. I’ve written about how webhooks fit alongside API quotas and Server-Sent Events, and about the value of API-driven events that webhooks enable. The maturation of webhooks into a first-class, specifiable concept is reflected in OpenAPI’s webhook support — and the Adyen webhook implementation I praised in 2025 as a good use of OpenAPI webhooks shows webhooks graduating from an afterthought bolted onto a REST API into a documented, contractual part of the API definition. Webhooks describable in OpenAPI is webhooks becoming a governed, first-class citizen of the API lifecycle.

The enduring relevance of webhooks is something I keep returning to, especially as new automation paradigms arrive. I wrote in 2026 about why you need agents when you have requests, CRON jobs, and events — and webhooks are central to that argument. For an enormous range of automation, you don’t need anything sophisticated: a webhook fires when an event happens, your endpoint does something in response, done. The webhook is the honest, durable, accessible automation primitive that predates the hype and will outlast it. Before agents, before complex event-streaming infrastructure, the humble webhook was quietly handling event-driven automation across the entire web, and it still is. The webhook proves that you don’t always need the newest, most sophisticated technology — sometimes the simplest thing, an HTTP request going the other direction, solves the problem completely. Webhooks are the reverse API that taught the whole developer population how to think about events, the simplest member of the event-driven family, and one of the most quietly important and enduring patterns in the entire API toolkit. Their genius was never sophistication; it was accessibility, and that accessibility is exactly why they won and why they endure.

References