Debug GitHub webhooks
GitHub deliveries include useful headers (X-GitHub-Event, X-Hub-Signature-256, X-GitHub-Delivery). Capture them once, then replay while you iterate on your handler.
Setup
- Create a ReplayHooks endpoint.
- In your GitHub repo → Settings → Webhooks → Add webhook.
- Payload URL:
https://hook.replayhooks.com/x/<your-token> - Content type:
application/json - Choose events (or “Send me everything”).
- Save and click Redeliver on a recent delivery, or push a commit.
curl -X POST https://hook.replayhooks.com/x/<your-token> \
-H 'Content-Type: application/json' \
-H 'X-GitHub-Event: push' \
-H 'X-GitHub-Delivery: 1234-5678' \
-d '{"ref":"refs/heads/main","repository":{"full_name":"acme/api"}}'
◈ inspector · github
Events
POST/github
just now
POST/…
PayloadHeadersQueryRaw
X-GitHub-Event: push
{
"ref": "refs/heads/main",
"repository": { "full_name": "acme/app" }
}Common failures
- Signature mismatch — compare the raw body bytes ReplayHooks captured with your HMAC input.
- Timeouts — set a custom response delay on the endpoint to practice retry handling.
- Wrong event — filter the event list by path or search the JSON tree for
action.