support.canned_reply.updated

A saved reply's title, body, shortcut or position changes.

One save is one event, and changes lists only the fields that actually differ. A save that changes nothing — the dashboard's Update Reply with no edits, or a PATCH that re-sends the stored values — emits nothing.

When this fires

A creator edits an existing saved reply and at least one of title, body, shortcut or sort_order is different afterwards:

  • DashboardSaved Replies → edit → Update Reply from the support inbox.
  • RESTPATCH /v1/projects/{project}/support/canned-replies/{reply}. Fields you omit keep their stored value.
  • MCP — the update_canned_reply tool.

It does not fire when:

  • Nothing changed. The action compares before and after and skips the event when the two match.
  • The snippet is inserted into a conversation. Using a saved reply is composing a message, and the message raises support.message.sent.
  • The edit is rejected — a shortcut already used by another snippet on the project, or a body outside its 2–4000 character limits — nothing is written.

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.canned_reply.updated",
  "created_at": "2026-09-06T09:45:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "canned_reply": {
      "id": "c2f8e6a1-7d34-4b9e-a05c-3e1f9b7d2a68",
      "title": "Opening hours",
      "shortcut": "open",
      "sort_order": 1
    },
    "changes": {
      "shortcut": {
        "from": "hours",
        "to": "open"
      }
    },
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13"
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways support.canned_reply.updated for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.canned_replyobjectPost-update snapshot — id, title, shortcut, sort_order only. No body.
data.canned_reply.idstring UUIDSaved reply identifier.
data.canned_reply.titlestringPicker label after the change.
data.canned_reply.shortcutstring, nullableExpansion token after the change, or null when cleared.
data.canned_reply.sort_orderintegerPicker position after the change.
data.changesobject<string, {from,to}>Map of the fields that changed. Keys are one or more of title, body, shortcut, sort_order; values are before/after pairs. Never empty.
data.changes.title.fromstringPrevious title. Present only when the title changed.
data.changes.title.tostringNew title.
data.changes.body.fromstringPrevious body text. Present only when the body changed.
data.changes.body.tostringNew body text, up to 4000 characters.
data.changes.shortcut.fromstring, nullablePrevious shortcut. Present only when it changed.
data.changes.shortcut.tostring, nullableNew shortcut, or null when cleared.
data.changes.sort_order.fromintegerPrevious position. Present only when it changed.
data.changes.sort_order.tointegerNew position.
data.project_idstring UUIDMirrors the envelope project_id.

Caveats

  • The snapshot never carries the body, but changes.body does when the body is what changed — from and to hold the full old and new text. This is the creator's own template text, not a member's message, so the family's rule that member text never enters a delivery log still holds. If you would rather not receive it, it only appears on edits to the body itself.
  • changes can report body, which the snapshot omits, and the snapshot carries id, which changes never does. Use both halves: canned_reply for the current state, changes for what to diff.
  • Reordering snippets in the dashboard can raise one event per snippet whose sort_order moved. Expect a burst with changes: { sort_order: … } and nothing else.

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