No signup required

Slack Events API and Interactivity Webhook Tester

Use CatchHook as the Request URL for a Slack app. Inspect Events API callbacks, retries, slash commands, shortcuts, modal submissions, and block actions without confusing them with Slack incoming-webhook message URLs or CatchHook's outgoing Slack App.

Your Slack Request URL Test Endpoint

Slack events detected automatically
Expires in2 days
npx @catchhook/tunnel ep_prKyqLVYjnXBsJzyZ89kn576 --key tkey_68acdbd2a942585264662e11be25d69e --port 3000
Test Your Endpoint
curl -X POST https://temp.catchhook.app/hooks/ep_prKyqLVYjnXBsJzyZ89kn576 \
  -H "Content-Type: application/json" \
  -d '{
  "type": "event_callback",
  "team_id": "T_TEST_WORKSPACE",
  "api_app_id": "A_TEST_APP",
  "event_id": "Ev_TEST_EVENT",
  "event_time": 1785348000,
  "event": {
    "type": "app_home_opened",
    "user": "U_TEST_USER",
    "channel": "D_TEST_HOME",
    "event_ts": "1785348000.000100"
  }
}'

Or

to see it appear in real time below.

Live Webhook Requests

Watch requests stream in automatically with full headers, payloads, and timestamps.

Streaming Live

Updates automatically

Waiting for your first webhook...

Send a test request using the cURL command above or configure Slack to use your endpoint URL.

How to test Slack webhooks with Catchhook

Follow these steps to start receiving Slack events on your temporary endpoint.

1

Create or open your Slack development app

Use Slack's app settings for the app whose Events API, slash-command, or interactivity requests you want to inspect. CatchHook does not install or host that app.

2

Save a permanent CatchHook endpoint

Slack Request URLs must remain stable. Save the temporary endpoint before registering it with Slack.

app_home_opened link_shared
3

Configure the Slack app signing secret

In the endpoint signature settings, choose Slack and enter the Signing Secret from the app's Basic Information page. Do not use a bot token, client secret, verification token, response URL, or incoming-webhook URL.

4

Register the CatchHook Request URL

Paste the permanent endpoint URL into Event Subscriptions, Interactivity & Shortcuts, or the slash-command Request URL. A correctly signed Events API challenge receives an automatic plaintext challenge response.

5

Trigger and inspect a real request

CatchHook keeps the exact captured request while promoting only bounded workspace, app, event, user, channel, action, view, and retry identifiers for summaries, filters, Actions, comparisons, REST, and MCP.

Slack request families to test

Events API callbacks

  • event subscriptions
  • retry and idempotency handling
  • App Home and link-unfurl workflows
type: event_callback

Slash commands

  • command routing
  • fast acknowledgments
  • expired response-context diagnostics
command: /your-command

Block Kit interactions

  • button and menu actions
  • shortcuts
  • modal submissions
payload.type: block_actions

Events API URL verification

  • Request URL registration
  • signing-secret validation
  • response evidence
type: url_verification

Common Slack webhook problems this helps debug

Catchhook helps you diagnose these issues before they reach production.

Slack rejects the Request URL

  • The CatchHook endpoint is permanent and publicly reachable over HTTPS
  • The endpoint has the correct Slack app Signing Secret enabled
  • The challenge request contains both Slack signature headers
  • CatchHook recorded a verified provider_handshake response with HTTP 200

Signature verification fails

Slack signs v0:{timestamp}:{exact raw body}. Form decoding, JSON reformatting, character-encoding changes, a timestamp outside five minutes, or the wrong app signing secret can all make verification fail. CatchHook verifies the original bytes before provider enrichment.

Slack retries the event

Inspect Slack retry and delivery identity together:

  • X-Slack-Retry-Num identifies the retry attempt
  • X-Slack-Retry-Reason explains why Slack retried
  • event_id remains the logical Events API identity
  • Return HTTP 200 quickly and make side effects idempotent

A replay behaves differently

Captured Slack signatures expire after five minutes. Preserve mode is historical, strip mode removes both Slack signature headers, and re-sign mode generates a fresh timestamp and v0 signature. trigger_id values expire after three seconds and response_url values are sensitive historical context; CatchHook never invokes either automatically.

What you get for free

Free / no signup

  • temporary unsigned Events API demonstration
  • live request and header inspection
  • Slack event-family detection
  • bounded event and retry context
  • generated cURL test
  • localhost tunnel command
  • short-lived request history

Signup / free trial

  • permanent Slack Request URL
  • Slack signing-secret verification and rotation
  • automatic verified URL challenge responses
  • fresh replay signature generation
  • Replay Cases and semantic comparison
  • Endpoint Actions using privacy-safe Slack fields
  • alerts and production monitoring
  • REST and MCP diagnostics

When to create a permanent endpoint

Save the endpoint before registering it with Slack. Permanent endpoints can verify your private app signing secret, complete URL verification, retain request history, re-sign controlled replays, and power Actions, alerts, Replay Cases, REST, and MCP.

Save This Slack Request URL

Frequently Asked Questions

Ready for Production Webhooks?

Plans start at $10/month with a 14-day free trial. No credit card required.

Conditional Endpoint Actions, CSV/JSON export, custom domains, outbound webhooks, AI debugging, and a full REST API.