Early bird discounts live! Claim your offer

support.message.sent

A reply to a member is recorded and queued for delivery.

This fires when the reply is recorded and queued, not when the member receives it. Delivery happens on a queue and can still fail — a member who has blocked the bot is unreachable. Read delivery_status from the support API for the outcome.

When this fires

A creator or team member replies to a member, from any surface: the dashboard inbox, the Telegram relay DM, the REST API, or the reply_support_conversation MCP tool.

It does not fire when:

  • The reply was recorded as an internal note. Notes are private remarks for your team, are never delivered to the member, and raise no event.
  • An automated acknowledgement goes out. The project's auto-reply is a system message, not a creator reply.

Required ability

support-conversation:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "support.message.sent",
  "created_at": "2026-08-20T10:07:00Z",
  "api_version": "2026-05-01",
  "project_id": "prj_01HX...",
  "data": {
    "message_id": "smg_01HX...",
    "conversation_id": "sup_01HX...",
    "project_id": "prj_01HX...",
    "subscriber_id": "usr_01HX...",
    "type": "text"
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways support.message.sent for this event.
created_atISO 8601 timestampServer-side emission time — when the reply was queued.
api_versionstringWebhook API contract version.
project_idstring ULIDProject this event belongs to.
data.message_idstring ULIDThe stored reply.
data.conversation_idstring ULIDThread the reply belongs to.
data.project_idstring ULIDMirrors the envelope project_id.
data.subscriber_idstring ULIDThe member the reply is addressed to.
data.typestringtext, or the media kind when the reply carried an attachment.

Caveats

  • The payload does not say who replied. Read author_user_id from GET /v1/support/conversations/{conversation_id}/messages if you need to attribute it to a specific team member.
  • The member sees the reply prefixed with the project's support name, so it reads as coming from a person rather than from the bot. That prefix is added at delivery and is not part of the stored body.
  • Pairing this with support.message.received gives you first-response time. The conversation's own first_response_at is stamped only once, on the first human reply, which is the more reliable SLA measure.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request