Slack channel triggers let your assignments 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.Documentation Index
Fetch the complete documentation index at: https://docs.duvo.ai/llms.txt
Use this file to discover all available pages before exploring further.
Key Capabilities
- Channel message trigger — Start a Job automatically from every new message in a channel, or from messages containing specific keywords or patterns
- Reaction trigger — Start a Job when someone adds a specific emoji reaction to a message (for example,
white_check_markto approve, orticketto create a ticket) - Scheduled channel digest — Run a scheduled assignment 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 Job for every new message (or every message matching your keyword filter). It fires within seconds of the message being posted. If multiple assignments 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 Job when the configured reaction is added. Scheduled digests use a time-based schedule rather than a real-time trigger. The assignment runs at a set time, reads the recent message history of the channel, and produces output.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_markemoji 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
Channel message trigger (fires on every matching message)
- Open your assignment and go to Setup.
- Find the Slack Workspace connection in the Connections section.
- Enable the Channel Message trigger.
- Select the channel you want to monitor.
- 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.
/invite @Duvo).
Reaction trigger (fires when a specific emoji is added)
- Open your assignment and go to Setup.
- Enable the Slack Reaction trigger.
- Select the channel to monitor.
- Enter the emoji name (for example,
white_check_markorticket). - Save.
Scheduled channel digest (fires at a set time)
Channel digests use a scheduled assignment rather than a real-time trigger.- Open your assignment and go to Setup.
- Set a schedule — for example, every Friday at 5pm, or every weekday at 8am.
- Write your SOP to read recent message history from the target channel and produce the desired output.
- Add the Slack connection so the assignment can read channel history and post replies.
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 on the assignment.
- Select #support-inbox as the channel.
- Leave keyword filter empty so every message starts a Job.
SOP
Expected results
- Every message in #support-inbox triggers a Job 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 awhite_check_mark reaction to approve, or an x to reject. The assignment 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 on the assignment.
- Select #approvals as the channel.
- Set the emoji to
white_check_markfor approvals. Create a second assignment withxfor rejections, or handle both reactions in one SOP.
SOP
Expected results
- A reviewer adds the
white_check_markreaction 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 of every Friday at 5pm.
- No Slack trigger needed — the assignment runs on the time schedule and reads the channel.
SOP
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 assignments 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 SOP 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 SOP: “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 Job for each one. Confirm your SOP 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
The trigger is not firing
- Confirm the Duvo app has been invited to the channel:
/invite @Duvoin the channel. - Verify the Slack Workspace connection is active on the Connections page.
- Check that the assignment has a published build — draft-only assignments cannot be triggered.
- If a keyword filter is set, confirm the test message contains the exact keyword (case-insensitive match).
Every message starts a Job but most should not
- Add a keyword filter to the trigger so only relevant messages start a Job.
- Alternatively, keep the trigger broad and add a filter step to the SOP: “If the message does not match [criteria], stop processing.”
The SOP cannot read the channel history for a digest
- The Slack connection (not Slack Workspace) is required for reading channel history. Confirm it is enabled under Connections and authorized.
- Confirm the assignment has permission to read the target channel. Re-authorize the Slack connection if needed.
Reaction trigger fires for the wrong emoji
- Emoji names in Slack are case-sensitive and use underscores, not spaces. Use
white_check_marknotwhite check mark. Find the exact name by hovering over the emoji in Slack and checking the tooltip.
Related
- 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 assignments
- Scheduling Assignments — Set up time-based digests
- Human-in-the-Loop — Escalate items needing human attention from channel digests