Quickstart
Before you start
You need a Splithook account. Sign up for free — no credit card required. The Free plan gives you one endpoint and 100 requests/day, which is plenty for this guide.
Step 1 — Create an endpoint
After registration, your workspace is created automatically. Click New endpoint in the sidebar and give it a name (e.g. stripe-dev). Splithook generates a unique slug:
https://splithook.com/e/ab3dkf7z
Copy that URL — it's what you'll point your provider at.
Step 2 — Send a test webhook
You don't need an actual Stripe account to try this. Fire a raw curl from your terminal:
curl -X POST https://splithook.com/e/ab3dkf7z \
-H "Content-Type: application/json" \
-H "X-GitHub-Event: push" \
-d '{"ref":"refs/heads/main","commits":[{"id":"abc123","message":"fix: typo"}]}'
Switch back to the Splithook dashboard. The webhook appears instantly in the live feed — no refresh needed.
Step 3 — Inspect the payload
Click the event row. You get:
- Headers — every HTTP header the provider sent, including the signature header.
- Body — syntax-highlighted JSON with collapsible nested objects.
- Metadata — method, IP, received timestamp, inferred provider and event type.
- Schema — the TypeScript interface inferred from the payload shape.
Step 4 — Forward to localhost
Now let's get the webhook to your local handler. You have two options:
Option A — HTTP destination (ngrok / cloudflare tunnel)
Start an existing tunnel and grab its public URL, then add a destination:
- Open the endpoint, click Add destination.
- Choose HTTP, enter your local URL (e.g.
https://abc.ngrok.io/webhooks/github). - Click Save.
Any new webhook that arrives at the endpoint is immediately forwarded there.
Option B — Splithook Tunnel (no ngrok needed)
Install the CLI and authenticate once:
# macOS / Linux
curl -fsSL https://splithook.com/install.sh | sh
splithook auth
Then start a tunnel that forwards directly to your local port:
splithook tunnel --endpoint ab3dkf7z --to localhost:3000
The CLI connects over a persistent Mercure channel. No open ports, no firewall rules.
Step 5 — Replay with re-signing
Replay any past event to your destination with one click:
- Click the event in the feed.
- Hit Replay (top right of the inspector).
- Splithook re-signs the payload with your destination's signing secret and fresh timestamp.
- Your handler receives a valid, verifiable webhook — as if it just arrived from the provider.
To configure re-signing, add a Signing secret to the destination: Settings → Signing secrets → New, then attach it in the destination editor.
What's next
- Destinations — fan-out, filters, retry policies.
- Signing & verification — per-provider setup for Stripe, GitHub, Shopify, Twilio, Svix.
- Replay engine — bulk replay, diff view, dead-letter queue.
- Schemas & types — export TypeScript interfaces from inferred shapes.