Skip to main content
Triggers define the event that starts your workflow. Each trigger is tied to an integration and fires when a specific event occurs. Your onTrigger handler receives a typed event object with the payload.

Integration triggers

GitHub

TriggerEvent typeDescription
GitHub.onPROpened()GithubPRInputEventA pull request is opened
GitHub.onPush()GithubPushInputEventCode is pushed to a branch
GitHub.onIssueCreated()GithubInputEventAn issue is created
Config: Scoped to specific repositories via repo parameter.
triggers: [GitHub.onPROpened({ repo: Repos.MyOrg.MyRepo })]

Slack

TriggerEvent typeDescription
Slack.onMessage()SlackMessageEventA message is posted in a channel
Slack.onDm()SlackMessageEventA direct message is received
Config: Scoped to specific channels or users.
triggers: [Slack.onMessage({ channel: SlackChannel.Engineering })]

Linear

TriggerEvent typeDescription
Linear.onIssueCreated()LinearEventAn issue is created
Linear.onIssueUpdated()LinearEventAn issue is updated
Config: Optionally scoped to a specific project.
triggers: [Linear.onIssueCreated({ project: LinearProject.Backend })]

Attio

TriggerEvent typeDescription
Attio.onRecordCreated()AttioRecordInputEventA record is created in a list
Config: Scoped to a specific Attio list.
triggers: [Attio.onRecordCreated({ list: AttioList.Pipeline.NewDeals })]

Jira

TriggerEvent typeDescription
Jira.onIssueCreated()JiraEventA Jira issue is created
Jira.onIssueUpdated()JiraEventA Jira issue is updated
Config: Optionally scoped to a specific project.
triggers: [Jira.onIssueCreated({ project: JiraProject.Backend })]

Gmail

TriggerEvent typeDescription
Gmail.onNewEmail()GmailEventA new email is received
triggers: [Gmail.onNewEmail()]

Figma

TriggerEvent typeDescription
Figma.onFileComment()FigmaCommentEventA comment is added to a Figma file
Config: Scoped to a specific file key.
triggers: [Figma.onFileComment({ fileKey: "abc123" })]

WorkOS

TriggerEvent typeDescription
WorkOS.onEvent()WorkOSInputEventA WorkOS event occurs
Config: Filtered by event types (user.created, organization.created, organization_membership.created, invitation.created, etc.).
triggers: [WorkOS.onEvent({ eventTypes: ["user.created"] })]

System triggers

Schedule

TriggerEvent typeDescription
Schedule.cron()CronJobInputEventFires on a cron schedule
triggers: [Schedule.cron("0 9 * * 1")] // Every Monday at 9am

Webhook

TriggerEvent typeDescription
Webhook.onRequest()WebhookEventFires when an HTTP request hits the generated webhook URL
Webhook URLs are auto-generated on deploy and remain stable across redeploys.
triggers: [Webhook.onRequest()]

Common event interface

All events implement a shared interface:
interface InputEvent {
  readonly integrationType: string
  readonly eventType: string
  formatForAgentRunner(): string  // Formats the event for LLM consumption
}
In TypeScript, call event.formatForAgentRunner() to get a string representation suitable for including in prompts. In Python, use event.formatted_content.