# 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._

Canonical: https://snoze.dev/help/automation-triggers/

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.

<!-- GENERATED:snoze-trigger-catalog:START -->

### Records created `event:database.record.created`

Records created. 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).

### Records updated `event:database.record.updated`

Records updated. 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) }.

### Records deleted `event:database.record.deleted`

Records deleted. It is delivered immediately.

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

### Records commented `event:database.record.commented`

Records commented. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Records: `value` (unknown).

### Records comment deleted `event:database.record.comment_deleted`

Records comment deleted. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Records: `value` (unknown).

### Databases created `event:database.created`

Databases created. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases updated `event:database.updated`

Databases updated. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases deleted `event:database.deleted`

Databases deleted. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases synced `event:database.records.synced`

Databases synced. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases created `event:database.field.created`

Databases created. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases updated `event:database.field.updated`

Databases updated. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases deleted `event:database.field.deleted`

Databases deleted. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases created `event:database.view.created`

Databases created. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases updated `event:database.view.updated`

Databases updated. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Databases deleted `event:database.view.deleted`

Databases deleted. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Databases: `value` (unknown).

### Calendar created `event:calendar.event.created`

Calendar created. 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 updated `event:calendar.event.updated`

Calendar updated. 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 cancelled `event:calendar.event.cancelled`

Calendar cancelled. 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 starting `event:calendar.event.starting`

Calendar starting. 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 created `event:data_source.created`

Data source created. It is delivered immediately.

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

### Data source updated `event:data_source.updated`

Data source updated. It is delivered immediately.

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

### Data source deleted `event:data_source.deleted`

Data source deleted. It is delivered immediately.

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

### Data source started `event:data_source.run.started`

Data source started. It is delivered immediately.

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

### Data source completed `event:data_source.run.completed`

Data source completed. It is delivered immediately.

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

### Data source failed `event:data_source.run.failed`

Data source failed. It is delivered immediately.

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

### File created `event:file.created`

File created. It is delivered immediately.

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

### File deleted `event:file.deleted`

File deleted. It is delivered immediately.

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

### File access key rotated `event:file.access_key_rotated`

File access key rotated. It is delivered immediately.

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

### File orphan deleted `event:file.orphan_deleted`

File orphan deleted. It is delivered immediately.

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

### File created `event:file.share_link.created`

File created. It is delivered immediately.

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

### File revoked `event:file.share_link.revoked`

File revoked. It is delivered immediately.

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

### Action created `event:action.created`

Action created. It is delivered immediately.

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

### Action updated `event:action.updated`

Action updated. It is delivered immediately.

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

### Action deleted `event:action.deleted`

Action deleted. It is delivered immediately.

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

### Action started `event:action.run.started`

Action started. It is delivered immediately.

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

### Action completed `event:action.run.completed`

Action completed. It is delivered immediately.

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

### Action failed `event:action.run.failed`

Action failed. It is delivered immediately.

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

### Page created `event:surface.created`

Page created. It is delivered immediately.

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

### Page updated `event:surface.updated`

Page updated. It is delivered immediately.

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

### Page deleted `event:surface.deleted`

Page deleted. It is delivered immediately.

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

### Page updated `event:surface.block.updated`

Page updated. It is delivered immediately.

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

### Workspace created `event:workspace.created`

Workspace created. It is delivered immediately.

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

### Workspace updated `event:workspace.updated`

Workspace updated. It is delivered immediately.

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

### Workspace deleted `event:workspace.deleted`

Workspace deleted. It is delivered immediately.

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

### Workspace created `event:workspace.item.created`

Workspace created. It is delivered immediately.

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

### Workspace updated `event:workspace.item.updated`

Workspace updated. It is delivered immediately.

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

### Workspace deleted `event:workspace.item.deleted`

Workspace deleted. It is delivered immediately.

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

### Member or invite updated `event:workspace.member.updated`

Member or invite updated. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Member or invite: `value` (unknown).

### Member or invite removed `event:workspace.member.removed`

Member or invite removed. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Member or invite: `value` (unknown).

### Member or invite accepted `event:workspace.invite.accepted`

Member or invite accepted. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Member or invite: `value` (unknown).

### Member or invite updated `event:workspace.invite.updated`

Member or invite updated. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Member or invite: `value` (unknown).

### Member or invite revoked `event:workspace.invite.revoked`

Member or invite revoked. It is delivered immediately.

- Scope: None.
- Refinements: None.
- Produced payload: Member or invite: `value` (unknown).

### Connection created `event:connection.created`

Connection created. It is delivered immediately.

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

### Connection deleted `event:connection.deleted`

Connection deleted. It is delivered immediately.

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

<!-- GENERATED:snoze-trigger-catalog:END -->

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

<!-- GENERATED:provider-trigger-catalog:START -->

### 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) }.

<!-- GENERATED:provider-trigger-catalog:END -->

## 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](https://snoze.dev/help/automations/).