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.
Create a bin, open its settings, and set the custom response:
200application/json{"challenge":"{{body.challenge}}"}{{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.
App settings → Event Subscriptions → Request URL → your
https://hookden.pages.dev/h/… URL. Slack shows Verified ✓ within a second.
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.
The same trick passes any echo-style handshake — and with the
{{hmac_sha256 var secret}} helper, even hash-style ones like Zoom's
endpoint.url_validation (full walkthrough:
Zoom webhook validation failed).
Dropbox uses a challenge query param
(body {{query.challenge}} with Content-Type text/plain), Meta's
WhatsApp/Messenger/Instagram webhooks use a GET with hub.challenge (full
walkthrough: WhatsApp webhook
verification failed), and most "prove you own this URL" schemes work the same way. 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://hookden.pages.dev/new
← All guides · Signature debugger · Payload examples · Docs · Hookden vs webhook.site