Your webhook failed.
Now you know why.
HookWatch gives you one place to inspect every webhook delivery, read the request and the 500, group repeated failures, and replay safely
once the bug is fixed.
StripeGitHubTelegramShopifyPaddle- Attempt 1 500 · server error 2m ago
- Attempt 2 500 · server error 1m ago
- Next retry scheduled in 2m
- every delivery captured
- replay-safe debugging
- failure reason always visible
- slack + webhook alerts
Webhook failures are small — until they aren't.
A single dropped webhook can mean an unpaid invoice or an order that never ships — the hard part is finding out.
- A provider sends
invoice.paid. - Your endpoint returns
500and the event is dropped. - The provider retries a few times, then stops — webhooks are not retried forever.
- You find out when a customer opens a support ticket.
Logs aren't enough
One line among millions — no payload, no response, and no way to re-run it.
The provider dashboard isn't enough
A red attempt and a generic message — not your request, retry history, or a safe replay.
A failed delivery's path back to delivered.
HookWatch captures the failure the moment it happens, shows you exactly why, and replays the exact payload once you've fixed it — the four states of every recovered webhook.
- Failed 500invoice.paid
Your endpoint errors and the provider gives up retrying.
- Captured 500invoice.paid
The failed delivery is recorded — never silently dropped.
- Inspected analyzedmissing signature header
Request, response, headers and the attempt history.
- Replayed re-sentPOST /webhooks/stripe
The exact captured payload, once your handler is fixed.
- Delivered 200184ms
Your endpoint returns 2xx and the event lands.
Recover a failed webhook in one flow.
Every delivery in one list — the failed one open with its payload, response, and a replay one click away.
500 Internal Server Error Replay queued Recovered in 184ms| Status | Event | Code | Latency | Age |
|---|---|---|---|---|
| Delivered | payment.succeeded | 200 | 142ms | 2m |
| Failed | invoice.paid | 500 | 88ms | now |
| Retrying | charge.refunded | — | — | 1m |
| Rate limited | customer.created | 429 | — | 4m |
| Delivered | payout.paid | 200 | 201ms | 9m |
1{2 "id": "evt_3PdX2cK9aQ",3 "type": "invoice.paid",4 "created": 1719772800,5 "data": {6 "object": {7 "id": "in_1Q2wF8",8 "amount_paid": 4200,9 "currency": "usd",10 "status": "paid"11 }12 }13}
Sit HookWatch in front of your webhooks.
HookWatch receives each webhook, records it, and forwards it to your app — so every delivery is captured without changing how your provider sends them.
Point your provider's webhook here. HookWatch captures every delivery, then forwards it to your app.
Everything you need to run webhooks in production.
Capture and replay are the start. HookWatch also handles the retry, rate-limit, grouping, and alerting work that turns a dropped webhook from an outage into a non-event.
Delivery capture
Every webhook is recorded with status, provider, response code, and attempt count.
Replay & retry
Re-send a captured delivery after a fix — no recreating the event by hand.
Failure analysis
Each failed delivery is categorised by reason, so you know what broke.
Alerts & channels
Route incidents to Slack or a webhook — before your users notice.
See the pattern, not just the row.
Repeated failures are grouped into incidents, so a flaky endpoint shows up as one problem instead of forty identical rows. Route incidents to Slack or a webhook and hear about them before users do.
Notification channels in beta: Slack and webhook.
- Severity
- high
- Endpoint
- /webhooks/stripe
- Failures
- 14 in 12m
- Response
- 500
Logs tell you it broke. HookWatch tells you what to do.
The same four jobs, with and without a place built for webhook deliveries.
Wherever a dropped webhook quietly hurts.
HookWatch works with any service that sends HTTP webhooks. These are the places teams reach for it first.
HookWatch is early, but security is already part of the design.
Webhook payloads, secrets, and delivery history deserve careful handling — so the boundaries were built in from the start.
Workspace isolation
Nothing crosses a workspace boundary — checked again on every server request.
Secrets stay masked
Write-only. Once saved, a secret is never sent back to the browser.
Encrypted at rest
Notification secrets are sealed before they ever touch disk.
Outbound safety
Forwarding and alerts can’t be pointed at your own internal network.
Debug your first webhook in minutes.
Create an endpoint, send a test webhook, and watch the delivery land. Free during beta.