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

  1. Create a ReplayHooks endpoint.
  2. In your GitHub repo → Settings → Webhooks → Add webhook.
  3. Payload URL: https://hook.replayhooks.com/x/<your-token>
  4. Content type: application/json
  5. Choose events (or “Send me everything”).
  6. 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
GitHub push webhook payload

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.