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 asdefinitionId.sourceandsourceLabel: who emitted it and the readable provider name.subjectandverb: the phrase shown in the picker.description,keywords, andlatency: 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 pathdatabaseId). - 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 pathdatabaseId). - Refinements:
changedFieldsnarrowschangedFields(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 pathdatabaseId). - 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 pathcalendarId). - 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 pathcalendarId). - 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 pathcalendarId). - 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 pathcalendarId). - 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).
File share link is created event:file.share_link.created
Someone shares a file with a public link. It is delivered immediately.
- Scope: None.
- Refinements: None.
- Produced payload: File share link:
value(unknown).
File share link is turned off event:file.share_link.revoked
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).
Sidebar item is added event:workspace.item.created
Something new appears in the workspace sidebar. It is delivered immediately.
- Scope: None.
- Refinements: None.
- Produced payload: Sidebar item:
value(unknown).
Sidebar item is changed event:workspace.item.updated
A sidebar item is renamed, moved or restyled. It is delivered immediately.
- Scope: None.
- Refinements: None.
- Produced payload: Sidebar item:
value(unknown).
Sidebar item is deleted event:workspace.item.deleted
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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathrepository.full_name). - Refinements:
labelsnarrowslabels(multi_select, multiple);authornarrowsauthor(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 pathguildId);channel(discord.channel; optional; payload pathobject.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 pathguildId);channel(discord.channel; optional; payload pathobject.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 pathguildId);channel(discord.channel; optional; payload pathobject.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 pathguildId). - 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 pathguildId). - 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 pathevent.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 pathevent.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 pathevent.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 pathevent.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.