Webhook payload inspector

A webhook is an HTTP request a system sends to your endpoint when an event happens, usually signed with an HMAC so the receiver can confirm who sent it.

Inspect webhook headers and JSON payloads, build the HMAC signing string, and check timestamps against a replay window. Runs entirely in your browser.

Browser-sideNo accountCopy, download, or print

Last reviewed

Your inputs are saved as a draft in this browser only. Nothing is uploaded.

Jump to result
Interactive workspace

Inputs

Result

More export options

Provider profilegithub
Method / eventPOST order.updated
Payloadvalid JSON
Headers3
Structure depth2
Replay window5 min

Signature verification and replay checks run in your receiver; this preview inspects structure and signing inputs only.

Headers

HeaderValue
Content-Typeapplication/json
X-GitHub-Eventorder.updated
X-Hub-Signature-256sha256=replace-with-signature

Payload top-level keys

Key
eventId
eventType
occurredAt
order

Receiver checklist

Check
Verify signature before parsing business action
Reject stale timestamps outside replay window
Persist raw payload and normalized event ID
Make processing idempotent by eventId
Separate source failure from consumer failure
Signing string (github):
{
  "eventId": "evt_1001",
  "eventType": "order.updated",
  "occurredAt": "2026-07-30T10:30:00Z",
  "order": {
    "orderId": "O-1001",
    "status": "packed",
    "sourceSystem": "SAP"
  }
}

Compute HMAC-SHA256 over the signing string with your shared secret and compare (constant-time) to the "X-Hub-Signature-256" header. This tool never transmits or verifies your secret.

How to use it

  1. Pick a provider profile — GitHub-style, Stripe-style, generic HMAC SHA-256, or no signature — and set the HTTP method and event name.
  2. Paste the headers as name: value and the JSON payload from your webhook delivery log.
  3. Name the signature and timestamp headers and set the replay window minutes your receiver enforces.
  4. Review the payload structure, signing string, and receiver checklist, then copy the output for your runbook.

Questions

Does this tool verify the webhook signature?
No. It builds the exact signing string for the chosen provider profile — timestamp.payload for Stripe-style, the raw payload for GitHub-style and generic — so your receiver can compute the HMAC-SHA256 and compare it to the signature header. Verification itself runs in your receiver, and your shared secret is never transmitted.
What is a webhook replay window?
It is the number of minutes your receiver accepts a timestamped delivery before rejecting it as stale, which limits replayed events. Set the replay window minutes to record what your receiver enforces, and the checklist reminds you to reject timestamps outside it.
Is my webhook payload or secret sent anywhere?
No. The inspection runs entirely in your browser and nothing is uploaded; headers, payload, and the optional shared secret stay on your machine.
How should a receiver verify a webhook?
Compute the HMAC-SHA256 of the exact raw body (or timestamp.body for Stripe-style signatures) with the shared secret, compare it to the signature header in constant time, reject timestamps outside the replay window, and only then parse the payload.