Before you start
You need:- A chatbot in your dashboard with its brain set to Webhook.
- An HTTPS endpoint we can reach. We never call
http://, and we never follow redirects. - Your bot’s signing secret (
whsec_…), from the bot’s webhook settings.
Local tunnels are fine for development — anything with a public HTTPS URL works. Private and local network addresses are blocked for security.
Get started
1
Answer the verification challenge
A webhook bot cannot go active until its URL passes a check. When you press Verify, we send a The key name is case-sensitive.
webhook.verify event with a one-time challenge string. Send it back, and your bot goes live.Two forms work. Return the raw challenge as the body, or return any JSON object with a matching top-level challenge key:Content-Type does not matter. You have 10 seconds. A check is never retried — just press Verify again.2
Reply to a message
Once verified, every visitor message arrives as a That shortcut turns into a full
message.created event. Return Block Kit JSON from the same request, and it shows up right away:text block on our side. Read the visitor’s words from message.text:3
Add a button
Buttons make the reply interactive. When someone clicks one, you get an A plain label is enough. We build the
interaction.button_clicked event:action_id from it (Track package becomes track_package).4
Check the signature
Before you go live, check that each request really came from us. Every POST includes You must sign the raw body bytes, not a re-built object. Full guide in five languages: Verifying signatures.
X-MyAIChatbot-Signature:Next steps
Work that takes longer
You get 10 seconds to reply. Slower work must use the
response_url.Every block type
Images, files, forms, cards, and progress bars.

