SnozeHelp
Reference

Automation event catalog

How trigger definitions, scope, refinements, prerequisites, latency, and produced payloads work, followed by every Snoze and provider event in the source catalog.

The Event trigger picker is built from a live TriggerCatalog, not from a fixed list in the interface. Snoze-native definitions are always present. Provider definitions are usable only when the workspace has the corresponding provider connected. A disconnected provider appears as a prerequisite with its source, reason, and optional setup link so the option is discoverable without pretending it can run.

Reading a trigger definition

Each TriggerDefinition contains:

  • id: the stable machine event saved as definitionId.
  • source and sourceLabel: who emitted it and the readable provider name.
  • subject and verb: the phrase shown in the picker.
  • description, keywords, and latency: what starts it, how to find it, and whether it is instant or polled.
  • scope: provider resources that must be selected before publication. Every scope field has a key, label, resource type, required flag, optional parent dependency, and exact path where that resource appears in the payload.
  • refinements: optional catalogue-owned narrowing controls, such as selected labels. Each points to a produced field and records its value kind.
  • produces: a labelled object shape. The expression picker uses that shape to offer paths into the trigger payload to later nodes.

Scope is required whenever the definition declares required scope. It is stored as labelled ResourceRef values and used by the subscription index, so an event outside that repository, server, channel, database, form, or other resource does not wake the Automation. Refinements narrow a matched event. Additional trigger predicates run against the produced payload after matching.

The catalog can change as connections are added or removed. A published Automation retains readable labels in its scope, but it cannot receive a provider event while the required connection or subscription is unavailable.

Snoze-native events

This section is generated from the integration trigger registry. Every entry names its saved event ID, subscription scope, refinements, delivery latency, and exact produced paths.

Record is created event:database.record.created

A new record is added to a database. It is delivered immediately.

  • Scope: database (snoze.database; required; payload path databaseId).
  • Refinements: None.
  • Produced payload: Database record: databaseId (text), title (text), patch (object) { title (text), data (object) { }, archived (boolean) }, changedFields (list).

Record is updated event:database.record.updated

Someone edits a record’s fields. It is delivered immediately.

  • Scope: database (snoze.database; required; payload path databaseId).
  • Refinements: changedFields narrows changedFields (multi_select, multiple).
  • Produced payload: Database record: databaseId (text), title (text), patch (object) { title (text), data (object) { }, archived (boolean) }, changedFields (list), previous (object) { title (text), data (object) { }, archived (boolean) }.

Record is deleted event:database.record.deleted

A record is removed from a database. It is delivered immediately.

  • Scope: database (snoze.database; required; payload path databaseId).
  • Refinements: None.
  • Produced payload: Deleted record: databaseId (text), title (text).

Record gets a comment event:database.record.commented

Someone comments on a record. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Record: value (unknown).

Record comment is deleted event:database.record.comment_deleted

A comment on a record is removed. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Record comment: value (unknown).

Database is created event:database.created

A new database is added to the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database: value (unknown).

Database is changed event:database.updated

A database is renamed or its settings change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database: value (unknown).

Database is deleted event:database.deleted

A database is removed from the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database: value (unknown).

Database gets synced records event:database.records.synced

A sync brings new or changed records into a database. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database: value (unknown).

Database field is added event:database.field.created

A new field is added to a database. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database field: value (unknown).

Database field is changed event:database.field.updated

A field is renamed, or its type or options change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database field: value (unknown).

Database field is deleted event:database.field.deleted

A field is removed from a database. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database field: value (unknown).

Database view is created event:database.view.created

A new view is added to a database. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database view: value (unknown).

Database view is changed event:database.view.updated

A view’s filters, sorting or layout change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database view: value (unknown).

Database view is deleted event:database.view.deleted

A view is removed from a database. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Database view: value (unknown).

Calendar event is added event:calendar.event.created

A new event is put on a calendar. It is delivered immediately.

  • Scope: calendar (snoze.calendar; required; payload path calendarId).
  • Refinements: None.
  • Produced payload: Calendar update: calendarId (text), event (object) { schemaVersion (number), id (text), title (text), description (rich_text), location (text), allDay (boolean), startsAt (date), endsAt (date), startDate (date), endDate (date), timeZone (text), status (status), visibility (select), attendees (list) { displayName (text), email (email), responseStatus (status) }, links (list) { label (text), url (url) }, createdAt (date), updatedAt (date) }.

Calendar event is changed event:calendar.event.updated

An event’s time, title or details change. It is delivered immediately.

  • Scope: calendar (snoze.calendar; required; payload path calendarId).
  • Refinements: None.
  • Produced payload: Calendar update: calendarId (text), event (object) { schemaVersion (number), id (text), title (text), description (rich_text), location (text), allDay (boolean), startsAt (date), endsAt (date), startDate (date), endDate (date), timeZone (text), status (status), visibility (select), attendees (list) { displayName (text), email (email), responseStatus (status) }, links (list) { label (text), url (url) }, createdAt (date), updatedAt (date) }.

Calendar event is cancelled event:calendar.event.cancelled

An event is cancelled or deleted. It is delivered immediately.

  • Scope: calendar (snoze.calendar; required; payload path calendarId).
  • Refinements: None.
  • Produced payload: Calendar update: calendarId (text), event (object) { schemaVersion (number), id (text), title (text), description (rich_text), location (text), allDay (boolean), startsAt (date), endsAt (date), startDate (date), endDate (date), timeZone (text), status (status), visibility (select), attendees (list) { displayName (text), email (email), responseStatus (status) }, links (list) { label (text), url (url) }, createdAt (date), updatedAt (date) }.

Calendar event is about to start event:calendar.event.starting

Fires shortly before each event begins. It is delivered immediately.

  • Scope: calendar (snoze.calendar; required; payload path calendarId).
  • Refinements: None.
  • Produced payload: Calendar update: calendarId (text), event (object) { schemaVersion (number), id (text), title (text), description (rich_text), location (text), allDay (boolean), startsAt (date), endsAt (date), startDate (date), endDate (date), timeZone (text), status (status), visibility (select), attendees (list) { displayName (text), email (email), responseStatus (status) }, links (list) { label (text), url (url) }, createdAt (date), updatedAt (date) }.

Data source is added event:data_source.created

A new data source is set up. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source: value (unknown).

Data source is changed event:data_source.updated

A data source’s settings or schedule change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source: value (unknown).

Data source is removed event:data_source.deleted

A data source is deleted. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source: value (unknown).

Data source sync starts event:data_source.run.started

A data source begins pulling in new data. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source sync: value (unknown).

Data source sync finishes event:data_source.run.completed

A data source finishes pulling in new data. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source sync: value (unknown).

Data source sync fails event:data_source.run.failed

A data source couldn’t pull in new data. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Data source sync: value (unknown).

File is uploaded event:file.created

A new file is uploaded to the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: File: value (unknown).

File is deleted event:file.deleted

A file is removed from the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: File: value (unknown).

Someone shares a file with a public link. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: File share link: value (unknown).

A file’s public link stops working. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: File share link: value (unknown).

Action is created event:action.created

A new action is added to the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action: value (unknown).

Action is changed event:action.updated

An action’s steps or settings change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action: value (unknown).

Action is deleted event:action.deleted

An action is removed from the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action: value (unknown).

Action run starts event:action.run.started

Someone runs an action. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action run: value (unknown).

Action run finishes event:action.run.completed

An action finishes running. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action run: value (unknown).

Action run fails event:action.run.failed

An action stops with an error. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Action run: value (unknown).

Page is created event:surface.created

A new page is added to the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Page: value (unknown).

Page is changed event:surface.updated

A page is renamed or its settings change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Page: value (unknown).

Page is deleted event:surface.deleted

A page is removed from the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Page: value (unknown).

Workspace is changed event:workspace.updated

The workspace name, icon or settings change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Workspace: value (unknown).

Something new appears in the workspace sidebar. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Sidebar item: value (unknown).

A sidebar item is renamed, moved or restyled. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Sidebar item: value (unknown).

Something is removed from the workspace sidebar. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Sidebar item: value (unknown).

Member gets a new role event:workspace.member.updated

A member’s role or access changes. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Member: value (unknown).

Member is removed event:workspace.member.removed

Someone is removed from the workspace. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Member: value (unknown).

Invite is accepted event:workspace.invite.accepted

Someone joins the workspace from an invite. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Invite: value (unknown).

Invite is changed event:workspace.invite.updated

A pending invite’s role or details change. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Invite: value (unknown).

Invite is revoked event:workspace.invite.revoked

A pending invite is cancelled. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Invite: value (unknown).

Connection is added event:connection.created

Someone connects an app like GitHub or Google. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Connection: value (unknown).

Connection is removed event:connection.deleted

A connected app is disconnected. It is delivered immediately.

  • Scope: None.
  • Refinements: None.
  • Produced payload: Connection: value (unknown).

Connected-provider events

These are all provider event definitions currently implemented by the source registry, generated with GitHub, Discord, and Slack enabled so the reference is complete. A real workspace receives only the definitions for providers it has connected; the rest are catalog prerequisites.

Pull request is opened event:github.pull_request.opened

Pull request is opened. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request is closed event:github.pull_request.closed

Pull request is closed. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request is reopened event:github.pull_request.reopened

Pull request is reopened. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request gets new commits event:github.pull_request.synchronize

Pull request gets new commits. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request is ready for review event:github.pull_request.ready_for_review

Pull request is ready for review. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request has a review requested event:github.pull_request.review_requested

Pull request has a review requested. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Issue is opened event:github.issue.opened

Issue is opened. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Issue is closed event:github.issue.closed

Issue is closed. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Issue is reopened event:github.issue.reopened

Issue is reopened. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Pull request or issue is commented on event:github.issue.created

Pull request or issue is commented on. It is delivered immediately.

  • Scope: repository (github.repository; required; payload path repository.full_name).
  • Refinements: labels narrows labels (multi_select, multiple); author narrows author (person).
  • Produced payload: Pull request or issue: action (text), pull_request (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, issue (object) { title (text), number (number), state (status), draft (boolean), body (rich_text), html_url (url), user (object) { login (text), html_url (url) }, labels (list), created_at (date) }, repository (object) { name (text), full_name (text), html_url (url) }, sender (object) { login (text) }.

Message is posted event:discord.message.created

Message is posted in Discord. It is delivered immediately.

  • Scope: server (discord.guild; required; payload path guildId); channel (discord.channel; optional; payload path object.channel_id).
  • Refinements: None.
  • Produced payload: Discord message: object (object) { content (rich_text), author (object) { username (text), global_name (text), id (text), bot (boolean) }, mentions (list), attachments (list), id (text), channel_id (text), timestamp (date) }, guildId (text).

Message is edited event:discord.message.updated

Message is edited in Discord. It is delivered immediately.

  • Scope: server (discord.guild; required; payload path guildId); channel (discord.channel; optional; payload path object.channel_id).
  • Refinements: None.
  • Produced payload: Discord message: object (object) { content (rich_text), author (object) { username (text), global_name (text), id (text), bot (boolean) }, mentions (list), attachments (list), id (text), channel_id (text), timestamp (date) }, guildId (text).

Reaction is added event:discord.reaction.added

Reaction is added in Discord. It is delivered immediately.

  • Scope: server (discord.guild; required; payload path guildId); channel (discord.channel; optional; payload path object.channel_id).
  • Refinements: None.
  • Produced payload: Discord message: object (object) { content (rich_text), author (object) { username (text), global_name (text), id (text), bot (boolean) }, mentions (list), attachments (list), id (text), channel_id (text), timestamp (date) }, guildId (text).

Thread is created event:discord.thread.created

Thread is created in Discord. It is delivered immediately.

  • Scope: server (discord.guild; required; payload path guildId).
  • Refinements: None.
  • Produced payload: Discord message: object (object) { content (rich_text), author (object) { username (text), global_name (text), id (text), bot (boolean) }, mentions (list), attachments (list), id (text), channel_id (text), timestamp (date) }, guildId (text).

Member joins event:discord.member.joined

Member joins in Discord. It is delivered immediately.

  • Scope: server (discord.guild; required; payload path guildId).
  • Refinements: None.
  • Produced payload: Discord message: object (object) { content (rich_text), author (object) { username (text), global_name (text), id (text), bot (boolean) }, mentions (list), attachments (list), id (text), channel_id (text), timestamp (date) }, guildId (text).

Message is posted event:slack.message.created

Message is posted in Slack. It is delivered immediately.

  • Scope: channel (slack.channel; required; payload path event.channel).
  • Refinements: None.
  • Produced payload: Slack message: event (object) { text (rich_text), user (text), channel (text), ts (text), thread_ts (text), reaction (text) }.

Message is edited event:slack.message.updated

Message is edited in Slack. It is delivered immediately.

  • Scope: channel (slack.channel; required; payload path event.channel).
  • Refinements: None.
  • Produced payload: Slack message: event (object) { text (rich_text), user (text), channel (text), ts (text), thread_ts (text), reaction (text) }.

Reaction is added event:slack.reaction.added

Reaction is added in Slack. It is delivered immediately.

  • Scope: channel (slack.channel; required; payload path event.item.channel).
  • Refinements: None.
  • Produced payload: Slack message: event (object) { text (rich_text), user (text), channel (text), ts (text), thread_ts (text), reaction (text) }.

App is mentioned event:slack.app.mentioned

App is mentioned in Slack. It is delivered immediately.

  • Scope: channel (slack.channel; required; payload path event.channel).
  • Refinements: None.
  • Produced payload: Slack message: event (object) { text (rich_text), user (text), channel (text), ts (text), thread_ts (text), reaction (text) }.

Produced values downstream

Use a path expression with source: trigger and a path from the entry’s Produced payload. Object and list fields may expose a nested shape. The shape describes readable tokens, not a guarantee that every optional provider value is present on every event. Use exists, is_empty, or coalesce before depending on optional data.

For Manual, Schedule, and Webhook trigger configuration, node outputs, and the expression language, see Automation triggers, nodes, and expressions.

More in Reference

  • Choosing a workspace surfaceChoose between a page, database, dashboard, canvas, view, form, folder, or file when you create workspace content.
  • Workspace item and surface typesEvery kind of item in the workspace tree, which kinds are surfaces, what they open, and where they can nest.
  • Every field typeAll 26 database field kinds, their stored values, settings, defaults, and behaviour in views and automations.
  • Every database view typeTable, list, board, gallery, calendar, timeline, and chart views, including their required fields and saved settings.
  • Filtering recordsEvery view filter operator, its value shape, the field kinds that accept it, and relative date resolution.

Still stuck? Ask the assistant inside Snoze, it reads this same page. Or write tohello@snoze.dev.

Esc

Type to search the help center.