TOOL Free · no signup · nothing written to disk

Webhook tester

Paste this URL into Stripe, GitHub, Shopify, Slack or any service that sends webhooks, trigger an event, and watch the request arrive here, byte for byte.

Connecting…

Answer with an error or a slow response to watch a provider retry. Most retry anything that isn't a 2xx in time. What each failure looks like →

Requests0

    Waiting for the first request.

    Send one from your terminal:

    $curl -X POST …

    Anyone with this URL can see what's sent to it. It can't be guessed, but don't send production data. The server keeps requests in memory for at most an hour after the URL's last use, never on disk; this page keeps the last 50 in your browser. The tester is open source.

    § 01 Point a provider at it

    Where to paste the URL

    Every service that sends webhooks has a place to register an endpoint URL. Use test or sandbox mode while you explore.

    1. In the Stripe Dashboard, switch to test mode and open Developers → Webhooks.
    2. Add an endpoint, paste your URL, and pick the events to send, such as payment_intent.succeeded.
    3. Send a test event from the endpoint's page, or trigger one with the Stripe CLI: stripe trigger payment_intent.succeeded.
    4. To check the signature here, copy the endpoint's signing secret (whsec_…) into the Signature tab.
    1. In your repository, open Settings → Webhooks → Add webhook.
    2. Paste your URL as the payload URL and set the content type to application/json.
    3. Type any secret. GitHub uses it to sign each delivery with X-Hub-Signature-256.
    4. Save. GitHub sends a ping event right away, and you'll see it here.
    1. In your app's configuration, add a webhook subscription for a topic such as orders/create, with your URL as the endpoint.
    2. Trigger the topic in a development store, for instance by placing a test order.
    3. Shopify signs the body with your app's client secret in X-Shopify-Hmac-Sha256.
    1. In your Slack app's settings, open Event Subscriptions or Slash Commands, and paste your URL as the request URL.
    2. For Event Subscriptions, Slack first sends a url_verification request with a challenge and expects it echoed back. The tester does that for you, so the URL verifies.
    3. Slash commands arrive as a form (application/x-www-form-urlencoded). The Body tab shows the fields.

    Any HTTP request works: any method, any path under your URL, any body up to 256 KiB. Try it from a terminal:

    Terminal
    curl -X POST "https://whatiswebhook.com/in/<your-id>/orders" \
      -H "Content-Type: application/json" \
      -d '{"event":"order.created","id":42}'

    § 02 What it can't do

    It shows the request. It doesn't run your code.

    A tester answers the first question: what exactly does this provider send? The next one is whether your handler deals with it, and that needs the request to reach your code. There are three ways:

    • Replay it. Copy a captured request from the Replay tab and send it to your laptop with curl.
    • Forward it. A tunnel or a provider CLI gives your laptop a public URL while you develop. See how to test a webhook locally.
    • Deploy it. Once the handler works, it needs a home that is always on, with a URL that never changes. See deploy a webhook receiver.

    Spec sheet This tester

    Cost
    Free, no account
    URL lasts
    As long as you use it
    Requests kept
    On the server, up to 1 hour after last use; the last 50 in your browser
    Stored
    In memory only, never on disk
    Requests per URL
    The 50 most recent
    Body size
    Up to 256 KiB recorded, longer bodies are cut and flagged
    Rate
    120 requests a minute per URL
    Signature checks
    In your browser: Stripe, GitHub, Slack, Shopify, Standard Webhooks
    Runs on
    Cloudish.ai

    § 03 Beyond testing

    Seen enough requests?
    Give your handler a real URL.

    One sentence · no dashboard
    A Already have a handler?

    Ask your coding agent

    Open a terminal in your project folder and paste one of these. The agent packages your code, deploys it, and hands you back a permanent HTTPS URL to register with the provider.

    $claude "Deploy this webhook handler to cloudish.ai and give me the live URL. Instructions: https://cloudish.ai/skill.md"
    $codex "Deploy this webhook handler to cloudish.ai and give me the live URL. Instructions: https://cloudish.ai/skill.md"

    Works with Claude Code, Codex, and other coding agents that can run commands.

    B Starting from zero?

    Have one built and deployed

    Chat assistants deploy for you when they can run code with internet access; otherwise they'll give you the exact commands. What a good receiver needs →

    § 04 FAQ

    Frequently asked questions

    Who can see the requests sent to my webhook URL?

    Anyone who has the URL. It is long and random, so it can't be guessed, but treat it like a password and don't send production data to it. On the server, requests are kept in memory only, for at most an hour after the URL was last used, and never written to disk. Your browser keeps its own copy of the last 50.

    Does the signing secret leave my browser?

    No. The signature check runs in your browser with the Web Crypto API. The secret you paste is never sent to the server.

    Can the tester run my webhook handler?

    No. It shows you what a provider sends. To run your own code, forward the request to your laptop with a tunnel or a provider CLI, replay a captured request with curl, or deploy your handler to a server with a public URL. All three, compared.

    How long does a webhook URL last?

    The URL keeps working for as long as you use it. The server forgets its requests an hour after the last activity, or sooner when the app restarts; this page keeps the last 50 in your browser, with bodies up to 256 KiB. For a receiver that runs your own code, deploy one.