Webhook Tester

Build and test webhook payloads for GitHub, Stripe, Slack, or custom events. Generate sample JSON payloads, headers, and ready-to-use curl commands.

Headers

Payload

cURL Command

curl -X POST 'https://your-server.com/webhook' \
  -H 'Content-Type: application/json' \
  -H 'X-GitHub-Event: push' \
  -H 'X-GitHub-Delivery: a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
  -H 'X-Hub-Signature-256: sha256=...' \
  -H 'User-Agent: GitHub-Hookshot/abc1234' \
  -d '{
  "ref": "refs/heads/main",
  "before": "0000000000000000000000000000000000000000",
  "after": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
  "repository": {
    "id": 123456789,
    "name": "my-repo",
    "full_name": "user/my-repo",
    "private": false,
    "html_url": "https://github.com/user/my-repo"
  },
  "pusher": {
    "name": "developer",
    "email": "[email protected]"
  },
  "sender": {
    "login": "developer",
    "id": 12345678,
    "avatar_url": "https://avatars.githubusercontent.com/u/12345678"
  },
  "commits": [
    {
      "id": "a1b2c3d4e5f6",
      "message": "feat: add new feature",
      "timestamp": "2026-03-24T10:00:00Z",
      "author": {
        "name": "Developer",
        "email": "[email protected]"
      },
      "added": [
        "src/feature.ts"
      ],
      "removed": [],
      "modified": [
        "src/index.ts"
      ]
    }
  ],
  "head_commit": {
    "id": "a1b2c3d4e5f6",
    "message": "feat: add new feature",
    "timestamp": "2026-03-24T10:00:00Z"
  }
}'

Webhook Tester

Build and test webhook payloads for GitHub, Stripe, Slack, or custom events. Generate sample JSON payloads, headers, and ready-to-use curl commands.

Features

  • Builds webhook payloads (GitHub, Stripe, Slack, generic) with realistic sample fields
  • Generates a `curl` command preconfigured with method, URL, headers, and body — copy and run from your terminal
  • Pure builder — this tool does NOT send the webhook itself, and it cannot receive one (browser-only, no backend)
  • For actually receiving / inspecting webhooks, use webhook.site, requestbin.com, or run a local tunnel (ngrok)
  • Runs entirely in your browser

How to use

  1. Select a webhook provider (GitHub, Stripe, Slack, or Custom) and event type.
  2. Edit the generated JSON payload and headers as needed for your use case.
  3. Copy the curl command and run it in your terminal to test your webhook endpoint.

Tips & Best Practices

  • This is a curl-command builder, not a webhook dispatcher. The "Target URL" field interpolates into the curl command; nothing is sent from your browser.
  • For receiving webhooks, you need a publicly-routable URL — webhook.site gives you a free inspector with a unique URL.
  • For local development, use ngrok or Cloudflare Tunnel to expose your dev server to the public internet so external services can call it.
  • Sample payloads match the canonical shapes for GitHub / Stripe / Slack — use them as starting points and customise fields as needed.
  • For full payload signing (e.g. Stripe's `stripe-signature`), this tool doesn't compute HMAC — generate the signature on the server side.

FAQ

Can I receive webhooks in this tool?

This tool is designed to help you build webhook payloads and generate curl commands for testing. Since it runs entirely in the browser, it cannot receive incoming webhooks. Use the generated curl command to send test payloads to your server.

Which webhook providers are supported?

The tool includes templates for GitHub (push, pull request, issue events), Stripe (payment intent, subscription), and Slack (message). You can also use the Custom provider to create any webhook payload.

Can I edit the webhook payload?

Yes. Both the payload and headers are fully editable JSON text areas. Any changes you make are automatically reflected in the generated curl command.

What is the X-Hub-Signature header?

X-Hub-Signature is a header used by GitHub to verify webhook authenticity. It contains an HMAC hash of the payload, computed using your webhook secret. The sample includes a placeholder value.

Is my data sent to any server?

No. All payload generation and curl command building happens entirely in your browser. No data is transmitted to any server. The curl command is for you to execute manually.

Can I use this with providers not listed?

Yes. Select the Custom provider and modify the headers and payload to match any webhook provider. You can set any headers and JSON structure you need.