Skip to content
Capture · Debug · Replay

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.

Free during beta · No credit card · Works with any HTTP webhook
Works with StripeGitHubTelegramShopifyPaddle
Deliveries · Stripe production live
invoice.paid Failed
POST /webhooks/stripe
500 Internal Server Error
missing signature header
Attempts
  • Attempt 1 500 · server error 2m ago
  • Attempt 2 500 · server error 1m ago
  • Next retry scheduled in 2m
Incident created
  • every delivery captured
  • replay-safe debugging
  • failure reason always visible
  • slack + webhook alerts
The problem

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.

  1. A provider sendsinvoice.paid.
  2. Your endpoint returns500 and the event is dropped.
  3. The provider retries a few times, then stops — webhooks are not retried forever.
  4. 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.

The fix

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.

  1. Failed 500
    invoice.paid

    Your endpoint errors and the provider gives up retrying.

  2. Captured 500
    invoice.paid

    The failed delivery is recorded — never silently dropped.

  3. Inspected analyzed
    missing signature header

    Request, response, headers and the attempt history.

  4. Replayed re-sent
    POST /webhooks/stripe

    The exact captured payload, once your handler is fixed.

  5. Delivered 200
    184ms

    Your endpoint returns 2xx and the event lands.

The tool

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.

Failed Stripe webhook 500 Internal Server Error Replay queued Recovered in 184ms
Recent deliveries live
StatusEventCodeAge
Deliveredpayment.succeeded2002m
Failedinvoice.paid500now
Retryingcharge.refunded1m
Rate limitedcustomer.created4294m
Deliveredpayout.paid2009m
invoice.paid Failed payload
500 · server error
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}
How it works

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.

Endpoint URL Active
https://hooks.hookwatch.dev/ep_8f2a3c

Point your provider's webhook here. HookWatch captures every delivery, then forwards it to your app.

Capabilities

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.

delivered · failed · retrying · rate_limited

Replay & retry

Re-send a captured delivery after a fix — no recreating the event by hand.

manual + automatic retry

Failure analysis

Each failed delivery is categorised by reason, so you know what broke.

signature · timeout · 5xx · rate limit

Alerts & channels

Route incidents to Slack or a webhook — before your users notice.

Slack · webhook
Incidents & alerts

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.

Incident grouped failures
invoice.paid · 500
POST /webhooks/stripe
high
14 failed deliveries · since 12m ago
Alert · Slack sent
HW HookWatch APP · now
Incident: invoice.paid is failing
Severity
high
Endpoint
/webhooks/stripe
Failures
14 in 12m
Response
500
Why HookWatch

Logs tell you it broke. HookWatch tells you what to do.

The same four jobs, with and without a place built for webhook deliveries.

Use cases

Wherever a dropped webhook quietly hurts.

HookWatch works with any service that sends HTTP webhooks. These are the places teams reach for it first.

Trust

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.

Get started

Debug your first webhook in minutes.

Create an endpoint, send a test webhook, and watch the delivery land. Free during beta.