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

# Slack Mention Workflows

> Trigger Duvo agents from any enabled Slack channel by mentioning the Duvo app, with live progress and results posted back in the thread.

<Info>
  **Time to complete:** 20–30 minutes

  **Difficulty:** Beginner to Intermediate

  **Prerequisites:** Slack Workspace connection (team admin installs once)

  **You'll build:** Agents your team can trigger from any enabled Slack channel by mentioning the Duvo app
</Info>

## Why Trigger Agents from Slack?

**The Problem**: Most automation tools require team members to log into a separate interface, find the right agent, fill in a form, and wait for results elsewhere. When work starts in Slack — an inbound request, an incident in the #ops channel, a question in #finance — switching contexts adds friction and slows teams down.

**The Solution**: Mention the Duvo app in any enabled Slack channel with a request and supporting context. Duvo starts a Run immediately, posts live progress in the thread, and delivers results without anyone leaving Slack.

**What your team can achieve**:

* Pull on-demand reports and data summaries from shared channels without logging into a separate tool
* Route incoming Slack requests (IT help, HR questions, ops tasks) automatically so nothing falls through the cracks
* Kick off full multi-step workflows by mentioning Duvo in the thread where the request already lives
* Review drafts, get feedback, or approve actions — all from the same Slack thread
* Let anyone on the team trigger automations they would otherwise need a specialist to run

***

## Before You Start

Make sure these are in place before using Slack-triggered agents:

<Check>**Slack Workspace connection installed** — A team admin must install the Duvo app once for your workspace from the [Connections page](https://app.duvo.ai/integrations). See [Slack Workspace](/user-guide/connections/available-connections/slack-workspace).</Check>
<Check>**Slack account linked** — Each user goes to **Settings > Notifications** and links their personal Slack account so Duvo can reach them for Human-in-the-Loop requests.</Check>
<Check>**Slack trigger enabled** — On each agent you want to trigger from Slack, open **Setup** and enable the Slack trigger.</Check>
<Check>**Duvo invited to your channels** — Invite the Duvo app to any channel where you plan to use it (`/invite @Duvo`). In direct messages, the bot is available automatically.</Check>

***

## How It Works

Once set up, triggering an agent is as simple as mentioning the Duvo app in a channel:

```
@Duvo pull this week's open support tickets from Zendesk and summarize them by priority
```

Duvo reads the full thread context — including any files, images, or messages from other Slack apps in the thread — and starts the Run. A live progress status appears in the thread and updates as the agent works — it is a single indicator that changes as steps complete, not a stream of new messages, so it does not clutter the thread.

If the agent needs your input at any point — to approve an action, answer a question, or handle an exception — it pauses and sends an interactive request as a Slack DM to the relevant user. You can approve or respond directly in Slack without opening any other tool.

When the Run is done, results are posted back to the same thread.

**If you have more than one agent with Slack triggers enabled**, Duvo shows a selection menu when you mention `@Duvo` so you can pick which agent to run. If only one agent matches, it starts automatically. Channel message triggers work differently — they fire all matching agents simultaneously from the same message rather than showing a menu. See [Skip the mention with a channel message trigger](#tips-for-better-results) in Tips below.

**Files and images attached to Slack messages are passed to the agent automatically**, so you can include a PDF, spreadsheet, or screenshot in your Slack message and the agent receives it as context.

***

## Use Case 1: On-Demand Reports from Shared Channels

**Outcome**: Any team member can ask for a report or data lookup in a shared channel and get results posted back — without logging into another tool, waiting for a scheduled run, or asking an analyst.

This is useful for reports that come up irregularly: "what's the status on these five accounts?", "how many orders are stuck in pending?", "can you pull the supplier lead times from our ERP?".

<Steps>
  <Step title="Create Your Agent" icon="plus">
    1. Click **+ Create Agent** from your dashboard.
    2. Select **Use Agent Builder**.
  </Step>

  <Step title="Write Your AOP" icon="pencil">
    Write the AOP to expect a request as input and pull the right data based on what is asked:

    ```
    You will receive a report request from a Slack message.

    Read the request carefully and identify what data is being asked for.

    Pull the relevant data from [your data source — e.g., Salesforce, Google Sheets, your ERP].

    Return a clear, formatted summary in Slack. Use bullet points or a table for multi-row data.
    Include the date range or filter criteria you used so the reader can verify the results.

    If the request is ambiguous, ask a clarifying question before pulling data.
    ```

    Adapt the data source to the system your team uses (Google Sheets, Salesforce, Snowflake, etc.).
  </Step>

  <Step title="Enable the Slack Trigger" icon="zap">
    1. Open your agent and go to **Setup**.
    2. Enable the **Slack** trigger.
    3. Save.
  </Step>

  <Step title="Add Connections" icon="plug">
    Under **Connections**, enable the connection to your data source — for example:

    * **Google Sheets** — for spreadsheet-based data
    * **Salesforce** — for CRM records
    * **Snowflake** — for warehouse queries
  </Step>
</Steps>

### Expected Results

* A team member mentions Duvo with a report request in any enabled channel
* A live progress status appears in the thread and updates as the Run progresses, showing what the agent is currently doing
* Results appear in the thread within a few minutes, formatted and ready to share

***

## Use Case 2: Request Intake and Routing in Shared Channels

**Outcome**: Requests that arrive in shared Slack channels — IT help, HR questions, ops tasks, finance approvals — are read, categorized, and routed to the right person or queue automatically. Nothing falls through the cracks and the channel stays organized.

This removes the need for a dedicated person to watch a shared channel and manually triage each message.

<Steps>
  <Step title="Create Your Agent" icon="plus">
    1. Click **+ Create Agent** from your dashboard.
    2. Select **Use Agent Builder**.
  </Step>

  <Step title="Write Your AOP" icon="pencil">
    Adapt the categories and routing destinations to your team's workflow:

    ```
    You will receive a request from a Slack message. The message may describe an IT issue,
    an HR question, an operations request, a finance approval, or something else.

    Classify the request into one of these categories:
    - IT: hardware, software, access, passwords, or system issues
    - HR: leave, onboarding, benefits, or policy questions
    - Finance: invoices, expenses, approvals, or payment queries
    - Ops: facilities, supplies, logistics, or vendor questions
    - Other: anything that does not fit the above

    Then take the following actions:

    For IT requests:
    - Post a reply in the thread: "Got it — I've logged this with the IT team. Ticket created."
    - Create a ticket in [your ticketing system] with the request title, description, and the Slack user's name.

    For HR requests:
    - Post a reply: "Logged this with HR. Someone will follow up within 1 business day."
    - Send a direct message to [HR contact's Slack handle] with the request details.

    For Finance requests:
    - Post a reply: "Sent this to Finance for review."
    - Send the request details to the #finance-requests channel.

    For Ops and Other:
    - Post a reply: "Logged this for the ops team."
    - Post the original message and sender in #ops-queue.
    ```
  </Step>

  <Step title="Enable the Slack Trigger" icon="zap">
    Enable the Slack trigger on this agent in **Setup**.
  </Step>

  <Step title="Add Connections" icon="plug">
    Under **Connections**, enable:

    * **Slack** — required because this AOP sends direct messages and posts in channels other than the trigger thread (e.g., `#finance-requests`, `#ops-queue`). In-thread replies in the trigger thread are handled by the Slack Workspace connection automatically.
    * Any ticketing or operations system your AOP writes to (e.g., Jira, Linear, ServiceNow)
  </Step>
</Steps>

### Expected Results

* Team members post requests in the shared channel and mention Duvo
* Each request is acknowledged in the thread within seconds
* Tickets are created and the right people are notified automatically
* The requester sees confirmation in the thread without following up separately

***

## Use Case 3: Kicking Off Workflows from Existing Slack Conversations

**Outcome**: When a conversation in Slack reaches a decision point — a refund to process, a record to update, a document to generate — one mention starts the full workflow without leaving the thread. The whole conversation history becomes context for the agent.

This is ideal for operations, support, and account management teams who already coordinate in Slack and want to act on what they discuss without switching tools.

<Steps>
  <Step title="Create Your Agent" icon="plus">
    1. Click **+ Create Agent** from your dashboard.
    2. Select **Use Agent Builder**.
  </Step>

  <Step title="Write Your AOP" icon="pencil">
    ```
    You will receive context from a Slack thread. Read the full conversation to understand
    what has been discussed and what action has been agreed.

    Identify the action that needs to be taken. This may be stated explicitly ("please process
    the refund for order #12345") or implied by the conversation ("approved" after a refund
    request was posted).

    Carry out the action:
    - For refunds: locate the order in [your order system], apply the refund, and post a
      confirmation in the thread with the refund ID and amount.
    - For record updates: find the record in [your CRM/ERP], apply the change described in
      the thread, and confirm the update.
    - For document generation: generate the document based on the details in the thread,
      upload it to [Google Drive / SharePoint], and post the link in the thread.

    If the action is unclear or requires information not present in the thread, ask a
    clarifying question before proceeding.

    Before taking any irreversible action (deleting records, sending emails, processing
    payments), request approval via Human-in-the-Loop (sent as a DM to the relevant user). Include what you are about to do and ask
    for confirmation.
    ```
  </Step>

  <Step title="Enable the Slack Trigger" icon="zap">
    1. Open your agent and go to **Setup**.
    2. Enable the **Slack** trigger.
    3. Save.
  </Step>

  <Step title="Add Connections" icon="plug">
    Enable the connections to the systems your workflow touches — your order management system, CRM, Google Drive, etc. Posting confirmations to the trigger thread is handled automatically by the Slack Workspace connection. Human-in-the-Loop requests are delivered as Slack DMs to the relevant user. The personal Slack connection is only needed if your AOP also sends DMs or posts to other channels as agent steps.
  </Step>
</Steps>

### Expected Results

* Team members discuss a request or decision in a Slack thread, then mention Duvo
* Duvo reads the full thread and understands what action was agreed
* The agent carries out the workflow and posts results in the thread
* Approvals for sensitive actions appear as interactive buttons — respond directly in Slack

***

## Use Case 4: Sharing Files for Processing

**Outcome**: Team members can drop a document, spreadsheet, or image into a Slack channel, mention Duvo, and have it processed immediately — extracted, validated, summarized, or loaded into a system.

Any files attached to messages in the thread are automatically available to the agent.

### Example AOP for Document Processing

```
You will receive one or more files via a Slack message. Process each file as follows:

For invoices (PDFs):
- Extract the vendor name, invoice number, total amount, line items, and due date.
- Log the extracted data as a new row in the "Invoices Pending" Google Sheet.
- Post a summary in the Slack thread: "Invoice logged: [vendor], [amount], due [date]."
- If any field is missing or unreadable, flag it in the thread.

For spreadsheets:
- Summarize the data: total rows, key columns, any obvious anomalies (blanks, outliers).
- Post the summary in the thread.

For images:
- Describe what you see and, if it contains text, extract the text.
- Post your description in the thread.
```

### Expected Results

* Drop a PDF invoice in the channel, mention Duvo, and it is logged to your spreadsheet within minutes
* Attach a screenshot to ask Duvo to extract or describe the content
* No manual downloading or re-uploading required — files from the Slack thread are passed to the agent directly

***

## Tips for Better Results

**Write the AOP to handle "I'll know it when I see it" requests**: Slack requests are often phrased informally. Write your AOP to interpret the intent, not just exact phrasing. For example: "understand what the user is asking for and check the relevant data source" works better than "if the message contains the word 'report'…".

**Keep one agent per topic**: A single all-purpose agent that tries to handle IT tickets, finance approvals, and report requests will produce inconsistent results. Create separate agents for distinct workflows and let the selection menu route the request to the right one.

**Use Human-in-the-Loop for actions with consequences**: Add an approval step before the agent takes any irreversible action. Approvals appear as interactive buttons in a Slack DM to the relevant user — they can approve or deny without leaving Slack. See [Human-in-the-Loop](/user-guide/assignment-features/human-in-the-loop).

**Start results with a one-line summary**: Instruct your AOP to lead the Slack response with a single sentence summary before the detail. Long output in a Slack thread is hard to scan.

**Include thread context when you mention Duvo**: The more context the thread contains, the better the agent can respond. If you are kicking off a workflow, paste the relevant details into the thread before mentioning Duvo — or simply let the conversation build up naturally before triggering.

**Skip the mention with a channel message trigger**: If you want an agent to start automatically on every message in a channel — or every message containing a specific keyword — you can set up a channel message trigger instead. The agent fires without anyone needing to tag the Duvo app, which is useful for monitoring channels like #alerts or #support-inbox where every message should be processed. In **Setup**, enable the **Channel Message** trigger, select the channel, and optionally specify keywords or patterns to filter which messages start the agent. Unlike mention triggers, if multiple agents have matching Channel Message triggers, they will all start simultaneously from the same message — no selection menu appears, so use specific keywords to avoid unintended overlaps.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Duvo does not respond when mentioned" icon="message-square-off">
    * Confirm the Duvo app has been invited to the channel (`/invite @Duvo`)
    * Check that the agent has the Slack trigger enabled in **Setup**
    * Verify the Slack Workspace connection is active on the [Connections page](https://app.duvo.ai/integrations)
    * Verify all connections required by the agent are linked and authorized under **Connections** — a missing connection can stop the Run from starting
    * Ensure the agent has a published build — a draft-only agent cannot be triggered

    If Duvo acknowledges the mention but the Run fails or returns no results, see the **Run starts but fails or returns no results** entry below.
  </Accordion>

  <Accordion title="A selection menu appears instead of the Run starting" icon="list">
    This means more than one of your agents has Slack triggers enabled. Select the agent you want from the menu. To avoid the menu in the future, disable the Slack trigger on agents you do not intend to trigger from this channel.
  </Accordion>

  <Accordion title="The agent cannot see files attached to my message" icon="paperclip">
    * Confirm the files are attached to messages in the same Slack thread where you mentioned Duvo
    * Files must be attached at the time of the mention, or in messages in the thread before the mention
    * Very large files may take longer to process
  </Accordion>

  <Accordion title="Results appear incomplete or cut off" icon="scissors">
    * Slack has message length limits. Instruct your AOP to summarize results rather than dump raw data. For large outputs, write results to a Google Sheet or document and post the link in the thread instead.
  </Accordion>

  <Accordion title="Run starts but fails or returns no results" icon="circle-x">
    * Check that all connections the agent needs are enabled and authorized under **Connections** — for example, if the AOP reads from Salesforce or writes to Google Sheets, those connections must be linked
    * Re-authorize any connection that shows as disconnected on the [Connections page](https://app.duvo.ai/integrations)
    * Open the Run in Duvo to see the full error detail in the session log
  </Accordion>

  <Accordion title="Human-in-the-Loop requests are not appearing in Slack" icon="user-x">
    * Confirm your Slack account is linked in **Settings > Notifications**
    * Check that Slack notifications are enabled in your notification settings
    * Make sure the Duvo app is not muted in Slack
  </Accordion>
</AccordionGroup>

***

## Related Resources

<CardGroup cols={2}>
  <Card title="Slack Workspace Connection" icon="message-square" href="/user-guide/connections/available-connections/slack-workspace">
    Install the Duvo app for your workspace
  </Card>

  <Card title="Slack Connection" icon="message-square" href="/user-guide/connections/available-connections/slack">
    Link a personal Slack account for DMs and cross-channel posts
  </Card>

  <Card title="Human-in-the-Loop" icon="user-check" href="/user-guide/assignment-features/human-in-the-loop">
    Add approval steps for sensitive actions
  </Card>

  <Card title="Event-Driven Triggers" icon="zap" href="/user-guide/assignment-features/event-driven-triggers">
    Start agents from external events
  </Card>

  <Card title="Gmail Workflows" icon="mail" href="/user-guide/examples/gmail-workflows">
    Trigger and run agents from email
  </Card>

  <Card title="Reviewing Drafts Before Sending" icon="file-check" href="/user-guide/examples/reviewing-drafts-before-sending">
    Keep a human in the loop on agent output
  </Card>
</CardGroup>
