Self-hosted webhook inspector

See every webhook as it arrives.

Create a catch URL, point any service at it, and inspect the method, headers, query parameters, and body in real time. Webhook Inspector runs on your own Postgres, so requests stay in your database.

One URL per endpoint. The last 100 requests are kept.

A captured request, as it appears in your dashboard.

Sample delivery

Showing the Stripe payment sample request.

POST/api/v1/stripe-hookjust now

Headers

content-type
application/json
x-stripe-signature
sha256=9f2c...4a1b
user-agent
stripe/1.0

Body

{
  "type": "payment_intent.succeeded",
  "data": {
    "object": {
      "amount": 4200,
      "currency": "usd"
    }
  }
}

What you get

Live request stream

New requests appear as soon as they are stored. The dashboard listens to Postgres notifications over SSE, so you do not wait for a poll.

Full payload captured

Headers, query parameters, and the body are stored per request: JSON, form-urlencoded, text, and multipart text fields. Open any request to inspect it as a tree or raw JSON.

One URL per endpoint

Every endpoint gets its own catch URL. Requests are scoped to your account in SQL, so another user cannot read what your test sent.

Privacy by default

Self-hosted: no third-party analytics. Better Auth owns account email and name, and every request query is locked to its owner.

How it works

1. Create an endpoint

Sign in, create an endpoint, and copy its URL.

2. Point any service at it

Paste it into an integration that sends webhooks: Stripe, GitHub, a CI pipeline, a payment gateway, your own code.

3. Inspect what arrives

Watch the request appear in real time and inspect method, headers, query, and body. Delete, deactivate, or change the endpoint slug anytime.

Start inspecting your first request

Create an account, copy a URL, send a request.