Skip to content
HookDeploy
On this page

Introduction

What HookDeploy is, who it's for, and the core concepts behind webhook capture and replay.

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:

  1. Validates the endpoint exists and isn’t paused
  2. Applies protective ingestion and plan payload-size limits
  3. Stores the captured request metadata and, when storage is available, its body
  4. Optionally forwards a copy to your real server if you’ve configured a forward URL
  5. Returns 200 with a request_id to 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