HookDeploy is webhook infrastructure for capturing, inspecting, forwarding, and replaying HTTP callbacks from any service.
Who HookDeploy is for
HookDeploy is built for developers and small teams who integrate with webhook-based APIs — Stripe, GitHub, Shopify, Clerk, and dozens of others. If you’ve ever pasted a webhook URL into a provider dashboard, waited for an event, and then tried to reproduce it locally, HookDeploy is for you.
Common use cases:
- Local development — Capture production-like webhook payloads without deploying your app.
- Debugging integrations — Inspect full headers, body, and timing when something breaks.
- Team collaboration — Share endpoints and request history with your team instead of passing around curl commands.
- CI and automation — Manage endpoints and replay requests via the REST API at
api.hookdeploy.dev.
How it works
Every HookDeploy account belongs to an organization. When you create an endpoint, HookDeploy assigns it a unique slug and gives you a public URL:
https://hookdeploy.dev/h/{slug}
When a sender POSTs (or GETs, PUTs, etc.) to that URL, HookDeploy:
- Validates the endpoint exists and isn’t paused
- Applies protective ingestion and plan payload-size limits
- Stores the captured request metadata and, when storage is available, its body
- Optionally forwards a copy to your real server if you’ve configured a forward URL
- Returns
200with arequest_idto the sender
You inspect captured requests in the dashboard at app.hookdeploy.dev or via the REST API.
Core concepts
Endpoints
An endpoint is a named webhook receiver. Each endpoint has:
- A slug — the 16-character ID in your public URL (
k3p9xabc7m2q8r4t) - A name and optional description — for your own organization
- An optional forward URL — where HookDeploy proxies incoming webhooks automatically
- A paused flag — when paused, incoming requests return
423 Locked
Requests
Every HTTP call to your endpoint becomes a request record. HookDeploy captures:
- HTTP method
- All headers (except stripped proxy headers on replay)
- Query string parameters
- Content type and body size
- Source IP address
- Timestamp
Stored request data follows your plan’s retention period: 7 days on Free, 30 days on Starter, 90 days on Team, and 365 days on Enterprise.
Forwarding
Auto-forwarding sends a copy of every incoming webhook to a URL you configure — typically your staging server or a tunnel like ngrok. HookDeploy logs the forward attempt, status code, response time, and any error. Your sender still gets a normal 200 response from HookDeploy regardless of whether the forward succeeded.
Forwarding is fire-and-forget from the sender’s perspective. If your forward target is down, the webhook is still captured.
Replay
Replay is a manual action: you pick a captured request and re-send its stored captured representation to an HTTPS URL — usually your local handler through a secure tunnel. Replay adds diagnostic headers:
x-hookdeploy-replay: 1
x-hookdeploy-original-request-id: {request-id}
Replay is different from forwarding. Forwarding happens automatically on every incoming webhook. Replay is on-demand and targets a URL you choose per action.
Next steps
- Quickstart — Capture your first webhook in under five minutes
- Your first endpoint — Deep dive into the inspector
- Endpoints — Slugs, pausing, and forward URLs