Pass Slack's URL verification challenge — zero code

When you set a Request URL for Slack's Events API, Slack POSTs a one-time url_verification event and requires your endpoint to respond with the challenge value. Until then, Slack won't enable your subscription — a chicken-and-egg problem when you just want to see the events first.

1. Create a bin with a challenge-echoing response

Create a bin, open its settings, and set the custom response:

{{body.challenge}} is a response template: it's replaced with the challenge field from each incoming request's JSON body. When Slack sends its verification event, your bin echoes the challenge back automatically — and captures the event so you can look at it.

2. Paste the URL into Slack

App settings → Event Subscriptions → Request URL → your https://catchhook.catchhook.workers.dev/h/… URL. Slack shows Verified ✓ within a second.

3. Watch real events arrive

Subscribe to some events (e.g. message.channels), and every event Slack sends appears in your dashboard — full JSON, live. This is the fastest way to learn Slack's actual payload shapes before writing your handler.

Works for Zoom, Dropbox, and friends

The same trick passes any echo-style handshake: Zoom's endpoint.url_validation (echo {{body.payload.plainToken}}… plus its HMAC — for that one, do the hash in your app), Dropbox's challenge query param (body {{query.challenge}} with Content-Type text/plain), and most "prove you own this URL" schemes. Template variables available: {{body}}, {{body.a.b}}, {{query.x}}, {{header.x-foo}}, {{method}}, {{path}}, {{ip}}, {{timestamp}}, {{bin}}full template docs.

No signup needed. Or from your terminal: curl https://catchhook.catchhook.workers.dev/new

← All guides · Docs · CatchHook vs webhook.site