Skip to main content
Billing happens while nobody is looking. A period opens at midnight, a collection confirms three blocks later, a retry succeeds on day six. Webhooks are how your application hears about all of it without polling.
An event delivered three times, failing twice with 502 and succeeding with 200 on the third attempt.An event delivered three times, failing twice with 502 and succeeding with 200 on the third attempt.

Delivery is retried until your endpoint answers

Setting up an endpoint

Create one in the dashboard under Developers, then Webhooks, or through the API:
The response includes a signing secret, shown once. Store it where your service can read it and nowhere else.
The secret is shown once, at creation. If you lose it, roll it with POST /v1/webhooks/{id}/secret and update your service.

What a delivery looks like

Responding

Return 2xx quickly. Anything else counts as a failure and the delivery is retried.
Acknowledge before you do the work. A handler that provisions an account, sends an email and writes to three tables before replying is a handler that will time out and receive the same event again.

Retries

A paused endpoint is not a deleted one. Fix the handler, resume it, and replay the deliveries you missed.

Replaying

Every delivery is visible in the dashboard with its request, its response and its timing. Replay one from there, or through the API:
A bad deploy should not cost you a day of events.

Before your endpoint exists

The events are stored either way. List them while you are still building: