support.* events
Member support inbox: conversations opened, replied to, assigned and resolved.
Member support inbox: conversations opened, replied to, assigned and resolved. A member who sends your project bot something it does not recognise opens a support conversation. These events are how that traffic reaches a helpdesk, an ops channel or an on-call rota instead of sitting in the dashboard waiting to be noticed.
No
support.*payload carries the message body. That is deliberate: webhook deliveries are logged and retried, and member text does not belong in a delivery log. Fetch the body from the support conversations endpoints or with theget_support_conversationMCP tool.
Background
One conversation per member, per channel
There is exactly one conversation per (project, member, channel). It is a durable thread, not a per-session ticket, so:
support.conversation.openedfires once per member per channel, ever. Their second message and every message after it raisessupport.message.receivedonly.- Resolving does not close the thread. The next inbound message reopens it and raises
support.conversation.reopened. - A workflow that wants "every new member question" should listen to
support.message.received, notopened.
Example payload
Every support.* event uses the standard envelope and a flat data object of identifiers:
{
"id": "evt_01HX...",
"type": "support.message.received",
"created_at": "2026-08-20T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"message_id": "6c18f7a3-2e95-4d60-b47a-c093e5182b7f",
"conversation_id": "9e042b6f-5d81-4c37-a920-7b3e18cf6d45",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"subscriber_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
"type": "text",
"has_attachments": false
}
}Guarantees
- The member's message body, their platform identity and any attachment file ids are never in the payload. Resolve them over the API with
data.conversation_id. support.message.receivedandsupport.conversation.openedboth fire on a member's first message, in that order of significance: treatopenedas the "new contact" signal andreceivedas the "new question" signal.- Internal notes raise no event at all. They are private remarks for your team and never reach the member or a webhook.
- A message from a blocked member is dropped before any event fires, and cannot reopen a resolved thread.
- Rate-limited inbound messages are dropped silently. A member flooding the bot produces no event storm.
Required abilities
Tokens subscribing to support.* events must carry support-conversation:view.
Events
support.conversation.openedA member starts their first support conversation on a channel.support.conversation.assignedA support conversation is handed to a team member, or its assignment cleared.support.conversation.resolvedA support conversation is marked resolved and leaves the open queue.support.conversation.reopenedA resolved support conversation becomes active again.support.conversation.blockedA creator silences a member's support messages.support.conversation.unblockedA creator lets a silenced member's support messages through again.support.message.receivedA member sends a message into a support conversation.support.message.sentA reply to a member is recorded and queued for delivery.support.canned_reply.createdA saved reply is added to a project's support inbox.support.canned_reply.updatedA saved reply's title, body, shortcut or position changes.support.canned_reply.deletedA saved reply is removed from a project's support inbox.support.settings.updatedA project's support inbox settings change.Related
How is this guide?
Last updated on