Skip to main content
Slack channel triggers let your agents start automatically from activity in a Slack channel — without anyone needing to mention the Duvo app. Use them to monitor channels continuously, process every message that matches a pattern, or react to a specific emoji on a message.
This page covers automated channel triggers. For on-demand workflows started by a team member mentioning the Duvo app, see Slack Mention Workflows.

Key Capabilities

  • Channel message trigger — Start a Run automatically from every new message in a channel, or from messages containing specific keywords or patterns
  • Reaction trigger — Start a Run when someone adds a specific emoji reaction to a message (for example, white_check_mark to approve, or ticket to create a ticket)
  • Scheduled channel digest — Run a scheduled agent that reads recent channel messages and produces a summary, alert, or report on a time-based cadence
  • Bot and third-party app message support — Capture structured messages from Jira, GitHub, PagerDuty, and other Slack integrations, not just messages from humans
  • No mention required — Team members do not need to tag the Duvo app; the trigger fires silently in the background

How Channel Message Triggers Work

The Channel Message trigger is a push-based trigger: the Duvo app listens to the channel and starts a Run for every new message (or every message matching your keyword filter). It fires within seconds of the message being posted. If multiple agents have a matching Channel Message trigger on the same channel, they all start simultaneously — there is no selection menu. Use keyword filters to prevent unintended overlaps. Reaction triggers work the same way: the Duvo app listens for emoji reactions in enabled channels and starts a Run when the configured reaction is added. Scheduled digests use a time-based schedule rather than a real-time trigger. The agent runs at a set time, reads the recent message history of the channel, and produces output.

Choosing the Connection for a Trigger

When you create or edit a Slack (or Microsoft Teams) channel trigger, you choose which connection backs it using the connection picker on the trigger. If your organization has Connections sharing enabled, the picker groups connections into two sections:
  • Team — connections a teammate has shared with your team
  • Personal — connections you set up under your own profile
A channel trigger can run on a team-shared connection, so the Duvo app can listen to a channel through a connection a teammate installed — every agent owner does not need to install the app themselves.
@mention triggers always run as the mentioning user. A Slack or Microsoft Teams @mention trigger uses the mentioning person’s own personal connection, so it cannot use a team-shared connection. Only channel triggers can be backed by a shared connection.
If an org admin turns Connections sharing off, shared connections revert to their creator, and any channel triggers other users had pinned to those shared connections are automatically disabled. The creator’s own triggers keep working.

When to Use Channel Triggers

  • #alerts or #incidents — Every alert that lands in the channel is automatically triaged, deduplicated, or escalated without anyone reading and forwarding each message
  • #support-inbox — Every inbound support message is read, categorized, and a ticket is created — no manual scanning required
  • Weekly digest — On Friday at 5pm, summarize everything posted in #operations that week and send the digest to stakeholders
  • Approval shortcut — Team members react with the white_check_mark emoji on a pending item in #approvals to trigger the approval workflow, without opening a separate tool
  • Monitoring — Watch #deploys or #ci-alerts for failure patterns and post a summary to the engineering team each morning

How to Set It Up

Fires on every matching message.

Open Setup

Open your agent and go to Setup.

Find the Slack Workspace connection

Find the Slack Workspace connection in the Connections section.

Enable the Channel Message trigger

Enable the Channel Message trigger.

Select the channel

Select the channel you want to monitor.

Choose the connection (optional)

Choose which connection backs the trigger. If Connections sharing is enabled, pick a Team (shared) connection or one of your Personal connections. Channel triggers can run on a team-shared connection.

Add keywords (optional)

Optionally enter keywords or patterns. The trigger fires only when a message contains one of these terms. Leave empty to fire on every message in the channel.

Save

Save.
Prerequisites: The Slack Workspace connection must be installed by a team admin, and the Duvo app must be invited to the target channel (/invite @Duvo).

Worked Example 1 — #support-inbox Triage

Outcome: Every message posted in #support-inbox is automatically read, categorized, and routed. A ticket is created in your issue tracker and the poster receives an acknowledgment — without a human scanning the channel. Connections used:
  • Slack Workspace — triggers from channel messages
  • Slack — reads the message thread and posts replies (required for actions beyond the trigger thread)
  • Linear — creates tickets for engineering issues
  • Human-in-the-Loop — escalates ambiguous or urgent requests

Trigger setup

Enable the Channel Message trigger

Enable the Channel Message trigger on the agent.

Select the channel

Select #support-inbox as the channel.

Leave the keyword filter empty

Leave keyword filter empty so every message starts a Run.

AOP

Expected results

  • Every message in #support-inbox triggers a Run within seconds.
  • Bug reports and feature requests get a Linear ticket and a thread acknowledgment automatically.
  • Questions are answered from the knowledge base or escalated to the on-call engineer.
  • The channel stays organized — every message gets a response, nothing is missed.

Worked Example 2 — Reaction-Based Approval in #approvals

Outcome: Finance and operations team members post pending approvals in #approvals. A reviewer adds a white_check_mark reaction to approve, or an x to reject. The agent detects the reaction, records the decision, and notifies the requester. Connections used:
  • Slack Workspace — reaction trigger
  • Slack — post DM to the requester and reply in the channel
  • Google Sheets — log the approval decision

Trigger setup

Enable the Slack Reaction trigger

Enable the Slack Reaction trigger on the agent.

Select the channel

Select #approvals as the channel.

Set the emoji

Set the emoji to white_check_mark for approvals. Create a second agent with x for rejections, or handle both reactions in one AOP.

AOP

Expected results

  • A reviewer adds the white_check_mark reaction on any message in #approvals.
  • The requester receives a DM within seconds confirming the decision.
  • The decision is logged in Google Sheets with a timestamp and approver name.
  • The original message thread gets a confirmation reply.

Worked Example 3 — Weekly #operations Digest

Outcome: Every Friday at 5pm, Duvo reads the past week of messages in #operations, identifies key decisions, open items, and blockers, and posts a structured summary to #operations-digest. Connections used:
  • Slack — read channel history and post the digest
  • Human-in-the-Loop (optional) — flag items needing follow-up

Trigger setup

Set a schedule

Set a schedule of every Friday at 5pm.

No Slack trigger needed

No Slack trigger needed — the agent runs on the time schedule and reads the channel.

AOP

Expected results

  • Every Friday at 5pm, #operations-digest receives a structured summary.
  • Open items and blockers are surfaced even if they were buried in a busy week of messages.
  • The team has a single record of decisions and follow-ups without anyone manually reviewing the channel.

Tips

Use keyword filters to avoid overlapping triggers: If you have two agents with channel message triggers on the same channel, add distinct keyword filters to each (for example, “invoice” and “contract”) so they do not both fire on every message.
Write the AOP to handle bot messages: Slack channels often receive structured messages from Jira, GitHub, PagerDuty, and similar tools. The Duvo app captures these messages including their fields and values. Explicitly instruct your AOP: “If the message is from a bot or app, read its structured content (title, fields, links) as well as any plain text.”
Set a cooldown for high-volume channels: In a channel with dozens of messages per hour, a channel message trigger will start a Run for each one. Confirm your AOP handles this volume, or use a keyword filter to narrow the trigger.
Combine with scheduled digests: Use a channel message trigger for time-sensitive items (like incidents) and a scheduled digest for summary reporting on the same channel.

Troubleshooting

  • Confirm the Duvo app has been invited to the channel: /invite @Duvo in the channel.
  • Verify the Slack Workspace connection is active on the Connections page.
  • Check that the agent has a published build — draft-only agents cannot be triggered.
  • If a keyword filter is set, confirm the test message contains the exact keyword (case-insensitive match).
  • Add a keyword filter to the trigger so only relevant messages start a Run.
  • Alternatively, keep the trigger broad and add a filter step to the AOP: “If the message does not match [criteria], stop processing.”
  • The Slack connection (not Slack Workspace) is required for reading channel history. Confirm it is enabled under Connections and authorized.
  • Confirm the agent has permission to read the target channel. Re-authorize the Slack connection if needed.
  • Emoji names in Slack are case-sensitive and use underscores, not spaces. Use white_check_mark not white check mark. Find the exact name by hovering over the emoji in Slack and checking the tooltip.

Event-Driven Triggers

Overview of all trigger types and the trigger matrix.

Slack Mention Workflows

On-demand workflows started by mentioning the Duvo app.

Slack Workspace Connection

Install the Duvo app and configure team-level settings.

Slack Connection

Read channel history and post messages from agents.

Scheduling Agents

Set up time-based digests.

Human-in-the-Loop

Escalate items needing human attention from channel digests.