support.canned_reply.deleted

A saved reply is removed from a project's support inbox.

Ability to subscribesupport-conversation:view

When this fires

A creator removes a saved reply from a project:

  • Dashboard: the delete action on a snippet under Saved Replies in the support inbox.
  • REST: DELETE /v1/projects/{project}/support/canned-replies/{reply}.
  • MCP: the delete_canned_reply tool.

It does not fire when:

  • The snippet was already gone. A second delete writes nothing and emits nothing.
  • A message composed from the snippet is deleted or edited in a conversation. The saved reply is a template; what was sent is a separate message with its own lifecycle.
  • The project itself is deleted. Its snippets go with it under project.deleted without a per-snippet event.

This is the final event for the given canned_reply.id. The snapshot is taken just before the row goes, so the payload still names what disappeared even though the canned reply endpoint now returns 404.

Caveats

  • The body is gone with the row and was never in any event, so a mirror that wants to keep the text must have fetched it while the snippet existed.
  • The freed shortcut can be reused by a new snippet straight away. Key a mirror on id, not on the shortcut.
  • Remaining snippets are not renumbered. Their sort_order values are unchanged and no updated events follow a delete.

Related events

  • support.canned_reply.created: the snippet's first appearance.
  • support.canned_reply.updated: edits between creation and this event.

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.deleted

How is this guide?