Open inspector →
developer guide

Receive a Webhook on Localhost Without an Account

Forward a public HTTPS webhook to 127.0.0.1 with the OpenWebhook CLI. No signup, no tunnel. The first URL expires in 24 hours.

A provider needs a public HTTPS URL. Your handler is on 127.0.0.1. You do not need an OpenWebhook account, a dashboard token, or a tunnel process for the first run.

The CLI watches one ingest URL and replays each request only to localhost. Permanent slugs, HTTPS forwards, and custom responses are Pro. This page is the no-signup path.

Listen

Start a local receiver on port 3001, then:

npx -y openwebhook listen --port 3001

The process prints a temporary URL:

https://hooks.openwebhook.co/YOUR_UUID

Paste that URL (optionally with a path such as /stripe) into the provider. Or send a probe yourself:

curl -X POST \
  'https://hooks.openwebhook.co/YOUR_UUID/localhost' \
  -H 'content-type: application/json' \
  --data '{"event":"probe"}'

The CLI forwards method, path, query, and body to http://127.0.0.1:3001. You should see the same JSON in your handler logs. No signup prompt. No ngrok binary.

The printed URL expires after 24 hours. The device token written to ~/.openwebhook/config.json does not. The next listen reuses that device and mints a fresh ingest URL.

What this is not

You still need the provider to reach hooks.openwebhook.co. The CLI does not expose your laptop on the public internet. It pulls events over SSE and POSTs them to 127.0.0.1 only.

If the provider requires a stable slug such as https://hooks.openwebhook.co/billing, that is an account. Until then, the anonymous URL is enough to write the handler.

Prefer a browser tab instead of a local process? Inspect headers and payload in one minute.

Related guides