webhookenv

Docs

WebhookEnv is API-first: everything the dashboard does is a plain HTTP call. The capture sink accepts anything you throw at it.

1. Create a bin

curl -s -X POST http://localhost:8101/api/bins \
  -d '{"forward_url":"http://localhost:3000/hooks/stripe"}'

# → {"id":"890d9ce8afe0","token":"…","capture_url":"/w/890d9ce8afe0"}

The token is shown once - store it. It authorizes reads, replays and bin management.

2. Send webhooks at it

curl -X POST http://localhost:8101/w/890d9ce8afe0/stripe/evt_123 \
  -H "Stripe-Signature: t=1,v1=abc…" -d '{"type":"payment.succeeded"}'

Any method, any path suffix, query strings included. Everything is captured and (if set) forwarded to your URL with original headers.

3. Inspect

curl -s http://localhost:8101/api/bins/890d9ce8afe0/requests \
  -H "Authorization: Bearer $TOKEN" | jq '.requests[0]'

Newest first: method, path, query, decoded headers, base64 body, size, timing, source IP.

4. Replay with edits

curl -s -X POST http://localhost:8101/api/requests/$REQ_ID/replay \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"body":"{\"amount\":999}"}'

Re-issues to the forward URL (or an explicit url override). Replays are tagged in history so you never confuse them with live traffic.

Plan limits

Resource Free Pro $12/mo Team $39/mo
Bins 1 10 Unlimited
Retained requests / month 50 20,000 100,000
History window 24 hours 30 days 30 days
Max body size 256 KB 1 MB 1 MB
Replay & edit -
Forwarding
Shared team bins - - ✓ (5 seats)

Local development note: this site talks to the Go service at http://localhost:8101. Set APP_URL accordingly when deploying.