Webhook Tester

Server assisted API Testing

Generate a temporary endpoint, point your webhook provider at it, and watch requests arrive with full headers, query parameters, raw and formatted bodies. Captures expire automatically after 24 hours.

Privacy: This tool sends the request through the Mutqan backend relay to reach the target. Only the target URL, headers and body you enter are transmitted, and nothing is stored.
Loading tool…

How to use Webhook Tester

  1. Press "Create capture URL" and copy the URL.
  2. Configure it as the webhook destination in your provider (or send a request with cURL / the sample command).
  3. Wait a moment — deliveries appear in the list; click one to inspect it.
  4. Use the Replay tab to build a cURL command that resends the delivery to your own server.
  5. Delete the endpoint when you are done (or let it expire).

Webhook Tester features

  • Unique capture URL created in one click, remembered across page refreshes, expiring after 24 h
  • Live polling every 3 s while the tab is visible; "Waiting for incoming request…" empty state
  • Request list with method, path, time and size; detail view with summary, grouped headers, body (JSON/form/raw/tree), query, raw HTTP and replay
  • Provider detection (Stripe, GitHub, Shopify, Slack, Twilio, PayPal, GitLab, Bitbucket…) with event type and signature header
  • Important-field and timestamp extraction, copy payload/headers/cURL, JSON export of all captures
  • Send-test-request button, open-in-new-tab, clear captures, delete endpoint with expiry countdown

Webhook Tester example

Capture a Stripe event

Input:

Stripe → POST https://www.mutqansoft.sa/api/v1/webhooks/in/3f9c…
Stripe-Signature: t=1725184801,v1=…
{"id":"evt_1PZx…","type":"payment_intent.succeeded",…}

Output:

POST /  12:00:01.120  1.4 KB
Provider: Stripe (high confidence) · Event: payment_intent.succeeded · Signature header: Stripe-Signature
Important fields: $.data.object.amount 19900 (199.00 if minor units) · $.data.object.created 1725184790 → 2024-09-01T10:39:50Z

Frequently asked questions about Webhook Tester

How long does my URL live?

Capture endpoints expire automatically after 24 hours. The URL is remembered in your browser session so a refresh keeps it; use "Delete endpoint" to remove it earlier.

How fast do requests appear?

The page polls every 3 seconds while the tab is visible and pauses when it is hidden, so deliveries show up almost immediately without wasting requests.

What is captured?

Method, path, query string, all headers, the raw body (JSON and form bodies are also shown decoded), size, client IP and the exact time received. Bodies above the relay limit are truncated and marked.

Can I replay a delivery to my own server?

Yes — the Replay tab builds a cURL command against the URL you enter, keeping the provider headers and signature so your verification code can be tested.

Does the endpoint respond to the provider?

It answers 200 OK with a small JSON body, which satisfies most providers' delivery checks.

Technical notes

The browser creates the endpoint with POST /api/v1/webhooks, keeps the id/token in sessionStorage and polls GET /api/v1/webhooks/:id/requests?after=<last timestamp> with the X-Webhook-Token header. Polling backs off on errors and stops when the tab is hidden.