support.settings.updated

A project's support inbox settings change.

The relay chat id — the Telegram chat or forum group the bot forwards member messages to — is never in this payload. It is an identifier the bot's linking handshake writes, not a setting a creator types, and no surface can change it through this path.

When this fires

A creator saves the project's support settings and at least one of the five visible settings is different afterwards:

  • DashboardSupport Settings → Save from the support inbox.
  • RESTPATCH /v1/projects/{project}/support/settings. Fields you omit keep their stored value.
  • MCP — the update_support_settings tool.

It does not fire when:

  • Nothing changed. Saving the form untouched, or a PATCH that re-sends the stored values, writes nothing and emits nothing. Blank strings normalise to null before the comparison, so clearing an already-empty agent_name is not a change.
  • The bot links or unlinks the relay chat. That handshake changes the relay chat id, which is not one of the five settings this event covers.
  • A member's message is auto-acknowledged. Sending the auto_reply text is a message, not a settings change, and raises nothing in this family.

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.settings.updated",
  "created_at": "2026-09-06T10:02:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "settings": {
      "enabled": true,
      "relay_mode": "owner_dm",
      "agent_name": "Team Research Premium",
      "auto_reply": null,
      "notify_email": false
    },
    "changes": {
      "relay_mode": {
        "from": "none",
        "to": "owner_dm"
      },
      "agent_name": {
        "from": null,
        "to": "Team Research Premium"
      }
    }
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways support.settings.updated for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.project_idstring UUIDMirrors the envelope project_id.
data.settingsobjectThe complete settings after the save — the same five keys GET /v1/projects/{project}/support/settings returns, minus its project_id and updated_at.
data.settings.enabledbooleanWhether member messages are accepted at all. When false, an unrecognised message gets the bot's not-understood reply instead of opening a thread.
data.settings.relay_modeenum: none, owner_dm, forum_groupHow the creator is told a member wrote in: not at all, as a DM from the bot, or as a topic in a linked forum group.
data.settings.agent_namestring, nullableThe name shown above each reply so it reads as a person, up to 60 characters. null means the project name is used.
data.settings.auto_replystring, nullableThe acknowledgement sent at most once per hour when a member writes in, up to 1000 characters. null means nothing is sent.
data.settings.notify_emailbooleanWhether a backlog warning is also emailed alongside the Telegram notification.
data.changesobject<string, {from,to}>Map of the settings that changed. Keys are one or more of the five settings keys; values are before/after pairs. Never empty.
data.changes.enabled.frombooleanPrevious value. Present only when the switch flipped.
data.changes.enabled.tobooleanNew value.
data.changes.relay_mode.fromenum: none, owner_dm, forum_groupPrevious relay mode. Present only when it changed.
data.changes.relay_mode.toenum: none, owner_dm, forum_groupNew relay mode.
data.changes.agent_name.fromstring, nullablePrevious display name. Present only when it changed.
data.changes.agent_name.tostring, nullableNew display name, or null when cleared.
data.changes.auto_reply.fromstring, nullablePrevious acknowledgement text. Present only when it changed.
data.changes.auto_reply.tostring, nullableNew acknowledgement text, or null when cleared.
data.changes.notify_email.frombooleanPrevious value. Present only when the switch flipped.
data.changes.notify_email.tobooleanNew value.

Caveats

  • Subscribing needs support-conversation:view, but making the change needs the project update permission (project:update on a token), because the settings are columns on the project rather than on the inbox. A token that can read support threads can hear about settings changes it could not have made.
  • settings is always the full post-save state, even when only one key changed. You can overwrite a cached copy wholesale and use changes purely for "what to announce".
  • auto_reply is creator-authored template text and does appear in both settings and changes — it is the message members receive, not a message a member sent, so the family's rule about member text is intact.
  • Switching relay_mode to forum_group does not by itself link a group. The project bot links a group when the creator adds it to a Telegram supergroup with Topics enabled as an administrator, and confirms by DM; until that happens, notifications have nowhere to go and member messages reach only the dashboard inbox.

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