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
npx @catchhook/tunnel ep_92XYJEnbZAqPFgq0ZVpvey86 --key tkey_0590cf3167a80b867c51cc157ca5a179 --port 3000curl -X POST https://temp.catchhook.app/hooks/ep_92XYJEnbZAqPFgq0ZVpvey86 \
-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
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.
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.
Save a permanent CatchHook endpoint
Slack Request URLs must remain stable. Save the temporary endpoint before registering it with Slack.
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.
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.
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_callbackSlash commands
- command routing
- fast acknowledgments
- expired response-context diagnostics
command: /your-commandBlock Kit interactions
- button and menu actions
- shortcuts
- modal submissions
payload.type: block_actionsEvents API URL verification
- Request URL registration
- signing-secret validation
- response evidence
type: url_verificationCommon 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 URLFrequently Asked Questions
You've captured 0 requests on this temp endpoint.
Create an account to keep this endpoint and continue debugging.
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.