support.canned_reply.updated

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

Ability to subscribesupport-conversation:view

When this fires

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

  • Dashboard: Saved Replies → edit → Update Reply from the support inbox.
  • REST: PATCH /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.

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.

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.

Related events

  • support.canned_reply.created: the snippet's first appearance.
  • support.canned_reply.deleted: its removal.

Header Parameters

SB-Signature*string

t=<unix seconds>,v1=<hex>: the HMAC-SHA256 of "<t>.<raw body>" under the endpoint's secret. Verify it before acting, and refuse a t more than 300 seconds from now. During a secret rotation a v0= signature under the previous secret may precede v1=.

SB-Event-Id*string

The event's ULID, bare. The envelope's id is the same ULID prefixed evt_, so strip the prefix before comparing. Deduplicate on it: a retry carries the same id.

SB-Event-Name*string

The event name, the same as the envelope's type.

Content-Type*string

Always application/json.

User-Agent*string

Always Subscriby-Webhooks/1.0.

Request Body

application/json

The signed JSON envelope posted to your endpoint.

TypeScript Definitions

Use the request body type in TypeScript.

The envelope every event is delivered in.

Response Body

Example Requests

POST/support.canned_reply.updated

How is this guide?