Webhook Tester & Inspector

Generate a temporary webhook URL, capture incoming payloads live, and validate GitHub, Stripe, Shopify, Slack and Twilio signatures. Free, in-browser.

Advertisement

Free Online Webhook Tester and Inspector

This webhook tester gives you a temporary, unique endpoint URL, captures every HTTP request sent to it, and lets you inspect the method, headers, query string and body of each one in real time. It also validates the cryptographic signatures that GitHub, Stripe, Shopify, Slack and Twilio attach to their webhooks, so you can confirm a payload is authentic before you trust it. Generate an endpoint, point your provider at it, and watch requests arrive with live polling — no local tunnel, no ngrok, no server to stand up.

Webhooks are how services tell your application that something happened: a payment succeeded, a pull request opened, an order shipped. The hard part of building a webhook consumer is that you cannot see what the provider actually sends until it sends it. This tool makes the invisible visible. You get the real headers, the real raw body and the real signature, which is exactly what you need to write and debug the handler on your side.

What This Inspector Shows You

  • A live request feed. New requests are polled automatically every couple of seconds and highlighted briefly as they arrive, so you can trigger an event and see it land.
  • Full request detail. For each captured request you see the HTTP method, the full header set, the query parameters, the content type and the raw request body exactly as sent.
  • Signature validation. Choose the provider and paste your signing secret, and the tool recomputes the HMAC and compares it to the signature header — x-hub-signature-256 for GitHub, stripe-signature for Stripe, x-shopify-hmac-sha256 for Shopify, x-slack-signature with its timestamp for Slack, and x-twilio-signature for Twilio.
  • Export. Save any captured request as JSON, as a ready-to-run curl command, or as a HAR file. A toggle controls whether sensitive headers (such as authorization and signature values) are included in the export.

Generated endpoints are temporary. Each one lives for 24 hours, which is long enough to debug an integration without leaving a permanent open collector on the internet.

How to Use the Webhook Tester

  1. Generate an endpoint. Click generate and the tool creates a unique URL for you and copies it to the clipboard.
  2. Register it with your provider. Paste the URL into the webhook settings of GitHub, Stripe, Shopify, Slack, Twilio or any service that posts HTTP callbacks.
  3. Trigger an event. Push a commit, run a test payment, place a test order — whatever fires the webhook. The request appears in the live feed within a couple of seconds.
  4. Inspect the request. Select it to read the method, headers, query and raw body. This is the ground truth your handler has to parse.
  5. Validate the signature. Pick the provider, paste your signing secret, and confirm the signature is valid before you build logic that trusts the payload.
  6. Export for your codebase. Download the request as JSON, copy it as a curl command to replay against your local server, or grab a HAR file for a bug report.

Why Signature Validation Matters

A webhook endpoint is a public URL, so anyone who learns it can post to it. Signature validation is what separates a genuine event from a forged one. Providers compute an HMAC of the raw request body (and, for Slack and Stripe, a timestamp) using a secret only you and they know, and send the result in a header. Your handler must recompute that HMAC over the exact raw bytes received and compare. Two subtleties bite people constantly: you must sign the raw body, not a re-serialised version, because JSON key order and whitespace change the hash; and timestamped schemes reject old signatures to prevent replay, so a large clock skew will fail validation even with the right secret. This tool performs the same computation the provider expects, which lets you confirm your secret and your understanding are correct before you write a line of handler code.

A Worked Example: GitHub

GitHub signs each webhook with HMAC-SHA256 over the raw body using your webhook secret and sends it as x-hub-signature-256: sha256=.... Register the generated URL as a repository webhook, set a secret, and push a commit. The captured request shows the x-hub-signature-256 header and the raw JSON body. Paste your secret into the validator, choose GitHub, and the tool recomputes the HMAC and tells you whether it matches. If it matches here but not in your app, the bug is almost always that your app hashed a parsed-and-re-serialised body instead of the raw bytes.

Frequently Asked Questions

How long does a generated endpoint last?

Each endpoint is valid for 24 hours. After that it expires and stops collecting requests. Generate a new one whenever you need a fresh collector.

Which providers' signatures can it validate?

GitHub, Stripe, Shopify, Slack and Twilio. Each uses the provider's own header and HMAC scheme, and Slack and Stripe additionally check the request timestamp.

Do I need ngrok or a local tunnel?

No. The endpoint is hosted for you, so any external service can reach it directly. You only need a tunnel when you want the provider to reach a server on your own machine.

Is my signing secret sent anywhere?

Signature validation is performed against the captured request, and the secret is used only to recompute the HMAC for comparison. Treat any secret as sensitive and rotate it after debugging if you are cautious.

Can I export a captured request?

Yes — as JSON, as a curl command, or as a HAR file. A toggle decides whether sensitive headers are included in the export.

Why does my signature validate here but fail in my app?

Almost always because your app hashes a re-serialised body rather than the raw bytes received, or because of clock skew on timestamped schemes. Sign the exact raw payload and keep your clock in sync.

Can I replay a captured webhook against my local server?

Yes. Export the request as a curl command and run it against your local endpoint to reproduce the exact request during development.

Related Developer Tools

Use the webhook payload generator to craft sample payloads for providers, the JWT decoder when a webhook carries a signed token, and the hash generator to compute HMAC and SHA digests by hand while you debug signature logic.

What Is Webhook Testing

Webhooks are HTTP callbacks that deliver real-time notifications from one application to another when specific events occur. Unlike polling (repeatedly checking for updates), webhooks push data instantly — making them the backbone of modern integrations between SaaS platforms, payment processors, CI/CD systems, and communication tools.

Testing and debugging webhooks is notoriously difficult because they require a publicly accessible URL to receive the callback, the sending service controls when events fire, and payload formats can be complex. This tool provides a webhook endpoint for receiving, inspecting, and debugging webhook payloads.

How Webhooks Work

  1. Registration — You register a callback URL with the sending service (e.g., Stripe, GitHub, Slack)
  2. Event occurs — Something happens in the sending service (payment completed, code pushed, message posted)
  3. HTTP POST — The service sends an HTTP POST request to your URL with event data in the body
  4. Processing — Your endpoint receives the payload, validates it, and processes the event
  5. Response — Your endpoint returns a 2xx status code to acknowledge receipt

Common Webhook Providers

ProviderEventsPayload FormatSignature Verification
StripePayment, subscription, invoice eventsJSONHMAC-SHA256 signature header
GitHubPush, PR, issue, release eventsJSONHMAC-SHA256 signature header
SlackMessage, reaction, channel eventsJSONRequest signing secret
TwilioSMS, call, recording eventsForm-encoded or JSONRequest validation token
ShopifyOrder, product, customer eventsJSONHMAC-SHA256 signature header

Common Use Cases

  • Integration development: Test webhook endpoints during development by receiving real or simulated payloads and inspecting their structure
  • Debugging delivery failures: When webhooks are not being received, test the endpoint directly to determine if the issue is network, authentication, or parsing
  • Payload format analysis: Inspect the exact JSON structure, headers, and metadata that a webhook provider sends to document integration requirements
  • Retry behavior testing: Understand how providers handle failed deliveries (retry intervals, exponential backoff, dead letter queues) by simulating error responses
  • Security validation: Verify that your webhook signature verification logic correctly validates authentic payloads and rejects tampered ones

Best Practices

  1. Always verify webhook signatures — Never trust webhook payloads without cryptographic verification. Providers include HMAC signatures that prove the payload was sent by them and not tampered with.
  2. Return 200 quickly — Process webhooks asynchronously. Return a 200 status immediately and process the event in a background job. Slow responses cause providers to retry or disable your endpoint.
  3. Handle duplicate deliveries — Webhooks can be delivered multiple times (provider retries, network issues). Use idempotency keys or event IDs to prevent processing duplicates.
  4. Log all payloads — Store raw webhook payloads before processing. When something goes wrong, you need the original data for debugging and replay.
  5. Implement retry handling — Design your endpoint to handle the provider's retry behavior. If your endpoint fails, the provider will retry — potentially delivering the same event multiple times.

Frequently Asked Questions

What is a webhook tester and why do I need one?+

A webhook tester is a tool that generates a temporary URL to receive and inspect incoming HTTP requests from webhook providers like GitHub, Stripe, Shopify, Twilio, or Slack. It allows developers to debug integrations, verify payload structures, and validate webhook signatures without setting up a local server or exposing internal systems to the internet.

How long do webhook endpoints stay active?+

Each generated webhook endpoint remains active for 24 hours from the time it is created. The endpoint can capture up to 100 requests during this period. You can also manually delete an endpoint at any time to immediately wipe all captured data if you finish testing early.

Can I validate webhook signatures from different providers?+

Yes, this tool automatically detects and validates signatures from GitHub, Stripe, Shopify, Twilio, and Slack. Enter your signing secret in the validation panel and the tool will verify the signature locally in your browser. Your secrets are stored only in your browser session and are never sent to our servers.

What export formats are available for captured requests?+

You can export captured webhook requests in three formats: JSON for programmatic use, cURL script for replaying requests from the command line, and HAR file for importing into browser developer tools or API testing platforms. Each export option lets you choose whether to include sensitive headers.

Is my webhook data stored securely?+

Webhook payloads are stored temporarily for the 24-hour endpoint lifetime and then automatically deleted. Signing secrets you enter for validation remain entirely in your browser session storage and are never transmitted to our servers. All signature validation computations happen locally in your browser for maximum security.

How do I filter and search through captured requests?+

The tool provides filtering by HTTP method (GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD) and a search field that matches against request bodies, headers, and query parameters. You can combine filters to quickly find specific requests among multiple captured webhooks.

This tool is provided for informational and educational purposes only. All processing happens in your browser — no data is sent to or stored on our servers. While we strive for accuracy, we make no warranties about the completeness or reliability of results.