Chatbot webhooks
A chatbot webhook tells your own code when something happens in a chat. Deacon is the AI support chat on your site, and it can tell your server as soon as a customer reports a bug, leaves their email or asks for a person. Your code can open the ticket or ping your team, so nobody has to watch the chat.
On every plan, including the free one.

Export is broken.
{ "type": "visitor.reported_bug", "data": { "message": { "untrusted": { "text": "Export is broken." } } } }
Your code
✓ Signature checked
openTicket(event.
✓ Ticket opened
Sped up. Acme and Sam are made up for this example.
Your tools stay your tools
You hear as it happens
You don’t have to remember to open a dashboard. Your code knows as soon as a customer says something’s broken.
There’s nothing to move to
Tickets stay in your tracker, leads in your CRM and your team in Slack. Deacon has no helpdesk for you to adopt.
You pick what you hear about
Choose the events for each URL, so a chat starting doesn’t wake anyone up.
At a glance
| What it tells you | Eight events. When a customer asks for a person, leaves their email, writes back, or is signed in and waiting for a reply. When a chat starts or ends. When someone reports a bug or asks for a feature. |
|---|---|
| Where it goes | Any public https URL, such as your own server or a URL an automation tool gives you. |
| Where you set it up | Integrations in the sidebar. Only an owner can add one. |
Eight events, eight jobs you can hand off
Pick an event on Integrations, and a few lines of your own code do the rest.
Bugs and asks
A visitor reported a bug
Open a ticket when someone reports a bug
Your code files it in Linear, GitHub or wherever you track bugs, with their words and the page.
visitor.reported_bugA visitor asked for a feature
Keep a list of what people ask you to build
Your code adds each ask to your roadmap or a sheet, word for word.
visitor.requested_feature
Nobody left waiting
A visitor asked for a person
Ping your team when someone asks for a person
Your code posts in Slack, so whoever’s free can take it.
visitor.asked_for_personA visitor wrote back to a teammate
Know when a customer writes back
Your code tells your team, so a chat you took over doesn’t go quiet.
visitor.wrote_backA signed-in visitor is waiting for a reply
Put your top customers first
You know who it is, so your code can look up their plan and page you if they’re on your biggest one.
visitor.waiting_signed_in
Your records
A visitor left their email
Add someone to your CRM when they leave their email
Your code adds them to HubSpot or wherever you keep leads, with what they asked.
visitor.left_emailA chat ended
Keep your own copy of every chat
The webhook carries the chat’s messages, so your code can store them beside the customer’s account.
conversation.endedA chat started
See support next to usage
Your code logs it in your own analytics, so you can see which signed-in customers needed help.
conversation.started
Three steps to your first webhook
Add your URL
On Integrations, press Add a webhook and paste it in.
Pick the events
Tick the ones this URL should get.
Send a test
Press Send test and one arrives straight away. The row shows what your server said back.
More ways to connect Deacon
MCP server
Your coding agent can read the same bug reports and fix them, with your OK.
get_needs_youAPI
Read anything your server missed from the last 30 days.
GET /api/v1/eventsChat transcripts
Download every chat as a CSV whenever you like.
Chat ID, Time, From, Message, Page
Point one at your own server
Add a webhook, press Send test, and watch it land. You get 50 answers a month on the free plan, and it needs no card.
Three things any chatbot webhook needs from your code
These hold for any chat tool that sends webhooks.
Answer fast, do the slow work after
Opening a ticket before you respond can keep the sender waiting, and it may try again.
Expect repeats
A webhook can arrive twice, or after a later one, so keep the ids you’ve handled.
Check who sent it
Your URL is public to anyone who finds it, so check the signature before you act.
FAQ
Questions about chatbot webhooks
No. There’s no Slack app and no listing on Zapier, Make or n8n. A webhook can send to a URL one of those tools gives you, or to your own code, and that does the rest.
Deacon tries each event again for about three days, and emails you if it keeps failing. A webhook that keeps failing for five days is turned off, and you’re emailed then too. You can read anything you missed from the last 30 days through the API.
A model reads each question and decides whether it’s reporting something broken, so it can miss one, and you get one event a chat. Every chat is still in Conversations.
Trust that it came from Deacon, not what a customer typed. Anything a stranger wrote sits in one field marked untrusted, so treat it as text. The docs show how to check one really came from Deacon.
Let your code hear it first
It takes about five minutes to install. The free plan is 50 answers a month, for as long as you like.