Key Capabilities
- Inbox triggers: Start a Run whenever a new email arrives in Gmail or Microsoft Outlook
- Linear triggers: Start a Run when a Linear issue is created, updated, assigned, or commented on
- Jira triggers: Start a Run when a watched field on a Jira issue changes, such as the issue status or an approval dropdown, or when a new issue is created
- Slack mention triggers: Start a Run by mentioning the Duvo app in any enabled channel
- Slack channel triggers: Start a Run automatically from channel messages matching a pattern, or on a reaction
- File-drop triggers: Start a Run when a new file lands in a monitored cloud folder
- Status-change triggers: Start a Run when a record in HubSpot, Salesforce, Notion, or another connected tool reaches a particular state
- Google Sheets row triggers: Start a Run when a row’s watched values change in a connected spreadsheet, including a change back to a previous value
- Email trigger filters: Narrow Gmail triggers by sender, subject keywords, email keywords, recipients, labels, attachments, and categories
- Linear event filtering: Filter by event type, team, assignee, and workflow state
- Jira field watching: Watch the issue status, single-select dropdown custom fields, and checkbox custom fields, on any change or when a field reaches a target value
- Per-user setup: Each team member configures their own trigger using their own connected account (Slack and Microsoft Teams channel triggers can also run on a connection a teammate shared with the team)
Trigger Types at a Glance
For details on each trigger type beyond inbox and Linear, see the linked guides below.
How to Use It
Open the Setup tab
Open your agent in the Duvo workspace and navigate to the Setup tab.
Find a trigger-capable connection
Find the connection that supports triggers in the Connections section.
Toggle the trigger on
Toggle the trigger on. A settings modal opens automatically.
Configure your filters (optional)
Choose which events or senders should start a Run.
Save the trigger
Click Save. The trigger is now active.
Gmail and Google Drive triggers require the connected Google account’s grant to include the permissions the trigger needs. If saving the trigger fails with a message that the Connection is missing permissions, reconnect that Connection and keep every permission selected on Google’s consent screen. For Google Drive this typically affects Connections created before Drive triggers existed; for Gmail it affects Connections where a permission was unticked on Google’s consent screen. See the Gmail and Google Drive troubleshooting sections.
Supported Connections
Configuring a Linear Trigger
When you enable a Linear trigger, a settings modal lets you specify:- Start work when: Choose one of the four event types — new issue, state change, agent, or new comment.
- Team (optional): Enter one or more Linear team keys (for example,
ENGorDESIGN) to restrict the trigger to issues from those teams. Leave empty to match all teams. - Assignee (optional): Enter one or more Linear user IDs, or
me, to restrict the trigger to issues assigned to specific people. Leave empty to match any assignee. - Workflow state (optional, for new issue and state change events): Select one or more states (Triage, Backlog, Unstarted, Started, Completed, Canceled). Leave empty to match any state.
Configuring a Jira Trigger
A Jira trigger starts a Run when a watched field on a Jira issue changes, or when an issue is created in its projects. Jira posts the event to Duvo as it happens, so the Run starts within seconds.Jira triggers are rolling out to selected teams. Ask your Duvo contact to enable them for yours.
- Connect Jira under Connections if you have not already. The same Connection reads the issue behind an event and registers the webhook.
- Open your agent’s Setup tab, find the Jira row, and toggle it on.
- Fill in the settings below. Add gives Watched fields another row.
Each Jira Connection gets its own webhook, registered with that Connection’s Jira account and covering only the projects its triggers name. Duvo renews it before Atlassian’s 30-day expiry, so no Jira admin has to create one. A colleague’s triggers use their own Connection and webhook. When you pause or delete the last trigger on a Connection, Duvo removes its webhook.
Toggle the trigger off to pause it. Toggling it back on replays no history, so only later edits start Runs.
What you can watch
The issue status, single-select dropdown custom fields, and checkbox custom fields. Leave the target value empty and the field fires on every change, including one that clears it. Set a target and it fires when the field reaches that value; on a checkbox the target option has to be newly ticked, so ticking a second option alongside it does not match.
Use the value id as the target. A display name works only on a field that holds one value at a time, because option names can contain commas.
A Run starts when any watched field matches. One edit that changes several of them starts one Run carrying every match.
Turn on New issues to start a Run when an issue is created. With no watched field, every new issue in the trigger’s projects starts a Run. With watched fields, the new issue needs one of them already set, and a target value has to match the value the issue is created with. Edits start Runs only through watched fields, so a trigger with none reacts to new issues only.
What reaches the Run
Duvo reads the issue back through the trigger’s own Jira Connection and builds the Run from that read. A failed read starts no Run.
Jira grants access to an issue and to its individual fields separately, so the Run lists only the changes whose field that read shows. An edit touching no field the user can read starts no Run. A new issue on a trigger with no watched field lists no changes; the Run reads the issue itself.
If the trigger is not registered
Duvo saves the trigger, then calls Atlassian to register its webhook. When that call fails, the trigger reads as on while nothing delivers to it. Duvo tries again about every two hours, and saving again tries at once. The Jira row in Setup marks that and names the fix:
- Reconnect Jira when the Connection names no Atlassian site.
- Check the project keys when Jira found no project for one of them. Duvo leaves that key out, so the other triggers on the Connection keep working.
- Connect a different Jira account when this one already sends events to another Duvo Connection, in this team or another. Jira sends one account’s events to one Connection only.
- Save again when Atlassian refused the registration.
- Wait, or save again, when New issues is on and Jira has not yet confirmed that the webhook sends new issues. Until then, new issues may not start Runs.
Email Trigger Filters
By default, an email trigger fires on every new message in the connected inbox. You can narrow Gmail triggers by sender, subject keywords, email keywords, recipients, labels, attachments, and Gmail categories. Outlook filters vary by trigger type. How to configure:Enable the email trigger
Enable the Gmail or Outlook trigger in Setup.
Add filter values
In the trigger settings modal, add one or more filter values:
- Specific address — for example,
orders@acmecorp.com - Domain — for example,
@acmecorp.comto match all addresses at that domain - Subject keywords — for example,
Invoiceto match emails whose subject contains the word - Label — for example,
Financeto match emails Gmail has tagged with that label - Has attachment — toggle on to match only emails with an attachment
Save
Save. The trigger now fires only when an email matches the configured filters.
- An order-intake agent that should only fire for emails from known supplier addresses, not all incoming messages
- A vendor alert agent scoped to one specific vendor’s notification domain
- Combining with subject or body filtering in your AOP to further narrow what the agent acts on
When to Use It
- Customer request processing: Start a Run automatically when a customer emails a support address
- Order intake: Kick off purchase order processing when an order email arrives from a known supplier
- Issue triage: Start a Run when a new Linear issue lands in Triage so it can be automatically classified, enriched, or routed
- Workflow automation: Trigger a Run when a Linear issue moves to a specific state, such as starting downstream work when an issue enters “In Progress”
- Report distribution: Trigger data collection or summary runs when a scheduled report lands in your inbox
- Vendor alerts: React to supplier notifications or price change emails as Duvo checks the inbox
How It Works
When you enable a trigger, Duvo monitors the connected service for matching events. When an event occurs, Duvo starts a new Run for your agent and passes the event details as context. Your agent’s AOP then processes the event and carries out the workflow. Email triggers check your connected inbox on a schedule. Linear and Jira triggers listen for webhooks from your Linear workspace and your Atlassian site.Slack and Microsoft Teams Triggers
Slack and Microsoft Teams each present their triggers as two separate rows in the Connections section — an @mention row and a channel row (Teams labels the second as channels or conversations). @mention triggers — Mention the Duvo app in any enabled channel to start a Run on demand. The agent runs and posts results back to the same thread. An @mention trigger always runs as the mentioning user, so it uses that user’s own personal connection. See Slack Mention Workflows for a full guide. Channel triggers — Start a Run automatically from any message (or messages matching a keyword pattern) in a channel, without anyone needing to mention the Duvo app. Useful for monitoring channels like #alerts or #support-inbox. When you create a channel trigger, a connection picker lets you choose which connection backs it. If your organization has Connections sharing enabled, the picker groups connections into Team (shared) and Personal sections, and a channel trigger can run on a team-shared connection. See Slack Channel Triggers for setup and examples.File-Drop Triggers
Start a Run whenever a new file lands in a monitored cloud folder (Google Drive, OneDrive, SharePoint) or arrives as an attachment in your inbox. Useful for invoice processing, document validation, and any workflow where the input arrives as a file rather than a message. See File-Drop Triggers for setup and a worked example.Status-Change Triggers
Start a Run when a record in a CRM or project management tool reaches a particular stage — for example, when a HubSpot deal moves to “Closed Won” or a Notion page status changes to “Ready for Review”. Implemented by scheduling an agent to poll the service and using Agent Memory to track what it last saw. See Status-Change Triggers for setup and examples.Google Sheets Row Triggers
Start a Run when a row’s watched values change in a connected spreadsheet — including when a value changes back to what it was before. Both a column range and a row range are required, so the trigger always watches a bounded area of the sheet rather than the whole thing. See Google Sheets Triggers for field details and limits.What Is Not Supported Today
Be aware of these gaps when planning your trigger setup:Inbound webhook endpoint
Inbound webhook endpoint
Duvo does not currently expose a dedicated URL that external systems can POST events to. To start a Run when an external system fires a webhook (for example, a form submission service, payment processor, or custom app), set up a lightweight webhook handler on your side that calls the Duvo API
POST /teams/{teamId}/runs endpoint. Pass the event payload as the run context. Retry logic, signing secret verification, and payload mapping are handled by your webhook handler, not by Duvo. See Running Agents via API for the full run API reference.Salesforce / HubSpot native push events
Salesforce / HubSpot native push events
Status-change triggers for these tools use scheduled polling, not real-time webhooks. Latency depends on your polling schedule — typically 5 to 60 minutes.
File system triggers
File system triggers
Duvo cannot watch a local folder or network drive. Files must be in a cloud storage service (Google Drive, OneDrive, SharePoint) or arrive via email attachment.
Guaranteed webhook delivery
Guaranteed webhook delivery
Duvo acknowledges a Linear or Jira webhook before it processes the event, so a crash after that point loses the event and nothing replays it. For work that must not be missed, pair the trigger with a scheduled catch-up Run that re-reads the source system. See Status-Change Triggers.
Multiple AOPs per agent
Multiple AOPs per agent
An agent with multiple trigger types enabled must use a single AOP for all triggers. You cannot assign different AOPs to different trigger types on the same agent.
API Trigger
Every agent can also be started via the Public API. The Triggers section of the Setup tab includes a collapsed API trigger card that shows a ready-to-use curl example pre-filled with your agent’s ID:message field is optional — include it to pass an initial prompt to the agent when starting the Run. API keys can be created under Your Profile → API keys (scoped to a single team or to all teams you can access), or under Team Settings → API keys by users with the Manager role or above.
For a full reference of run options (sandbox files, webhooks, and polling), see Running Agents via API.
Related Features
Scheduling Agents
Run agents on a recurring time-based schedule instead of (or in addition to) event-driven triggers.
File-Drop Triggers
Start Runs from new files in cloud folders or inbox attachments.
Status-Change Triggers
Start Runs when CRM or project management records change state.
Slack Channel Triggers
Start Runs from channel messages without mentioning the Duvo app.
Gmail Connection
Connect your Gmail account.
Microsoft Outlook Connection
Connect your Outlook account.
Linear Connection
Connect your Linear workspace.
Slack Connection
Install the Duvo app in your Slack workspace.
Google Sheets Connection
Connect Google Sheets and set up row-change triggers.