Webhook
A webhook is an automatic HTTP request Stripe sends to your server when something happens, so you learn about events without polling the API.
A webhook is a way for one system to notify another the moment something happens, by sending an HTTP request to a URL you control. Instead of your app repeatedly asking Stripe "did anything change?", Stripe pushes a message the instant an event occurs — a payment succeeds, a subscription cancels, a dispute opens.
How webhooks work
- You register a URL — a webhook endpoint — with Stripe and tell it which event types you care about.
- When a matching event happens, Stripe sends an HTTP
POSTto that URL with a JSON body describing the event. - Your server processes the event and responds with a
2xxstatus code to acknowledge receipt. - If your endpoint fails or times out, Stripe retries with backoff over the following hours or days.
Because delivery can be retried, the same event may arrive more than once. Your handler should be idempotent — safely ignore a duplicate rather than acting on it twice. Stripe includes the event's unique id so you can dedupe.
Why webhooks matter
Some outcomes only become final asynchronously — a bank debit that settles days later, an invoice that Stripe retries, a dispute a cardholder files. There's no API response to catch these in the moment; a webhook is how you find out. Webhooks turn Stripe from a system you have to check into one that tells you what's going on.
Webhooks and ChargeBell
Handling Stripe webhooks yourself means standing up a public endpoint, verifying signatures, and mapping raw JSON into human-readable alerts. ChargeBell does that work for you: it listens to your Stripe events and posts plain-English messages to Slack, so you get the visibility a webhook provides without writing or maintaining any of the plumbing.
Related terms
Updated July 6, 2026