> ## Documentation Index
> Fetch the complete documentation index at: https://chatbase.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack Ticket Threads

> Give every new ticket its own Slack thread, so your team can reply to customers, add internal notes, assign, and close tickets without leaving Slack.

## Introduction

Slack ticket threads bring your helpdesk into Slack. When a new ticket matches a trigger, Chatbase posts a **ticket card** in the Slack channel you choose. The card's thread then becomes a two-way link to the ticket:

* **Reply from Slack.** A message in the thread is sent to the customer under your name, on the ticket's channel (email, WhatsApp, chat bubble, and so on).
* **Keep it internal.** Mention a teammate, or start the message with `internal:`, and it's saved as an internal note instead.
* **Stay in sync.** Customer messages, replies from the Chatbase helpdesk inbox, notes, and changes to status, assignee, or priority are all posted into the Slack thread as they happen.
* **Act from the card.** **Assign to me** and **Close** buttons on the card update the ticket in Chatbase.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/slack-thread-overview.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=60a2a8e1f50b42d1381a676787a19d81" alt="A Chatbase ticket card in Slack with its thread open, showing the customer's message and a teammate's reply" width="1200" height="1538" data-path="user-guides/images/help-desk/slack-threads/slack-thread-overview.png" />
</Frame>

Slack ticket threads are set up with the **Start Slack thread** action in [Triggers](/docs/user-guides/chatbot/help-desk/triggers).

## Before You Start

<Steps>
  <Step title="Helpdesk plan">
    Slack ticket threads need a plan that includes the helpdesk. If the plan is downgraded, cards stop being posted and existing threads stop syncing.
  </Step>

  <Step title="Connect Slack">
    Connect the [Slack integration](/docs/user-guides/integrations/slack) to your AI agent. The threads are posted in that workspace.
  </Step>

  <Step title="Use the same email in Slack and Chatbase">
    Chatbase identifies who wrote a Slack message by matching the email on their **Slack profile** to a **member of your Chatbase account** who can work on tickets for this AI agent. Teammates whose Slack email doesn't match can read the thread, but their replies and button clicks are refused.
  </Step>
</Steps>

<Warning>
  Slack ticket threads aren't available on [HIPAA](/docs/user-guides/workspace/hipaa-compliance) AI agents.
</Warning>

## Set Up a Slack Thread Trigger

<Steps>
  <Step title="Create a trigger">
    Go to **Settings → Helpdesk → Triggers** and click **New trigger**. Give it a name, like "Post new tickets to #support".
  </Step>

  <Step title="Run it on new tickets">
    Add the condition **Ticket is Created**. **Start Slack thread** only runs on new tickets, so the trigger can't be saved without this condition. Add any other conditions to narrow it down - for example, **Channel is any of Email** or **Team is Billing**.
  </Step>

  <Step title="Add the Start Slack thread action">
    Click **Add action** and choose **Start Slack thread** under **Slack**.

    <Frame>
      <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/action-type-select.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=427ed788fc03e1049768d75362f156cb" alt="Action picker with Start Slack thread under the Slack group" width="874" height="997" data-path="user-guides/images/help-desk/slack-threads/action-type-select.png" />
    </Frame>
  </Step>

  <Step title="Pick a channel">
    Choose the channel the ticket cards are posted in. Chatbase has to be a member of that channel: run `/invite @Chatbase` in it. A private channel only shows up in the list after Chatbase is invited - invite it, then click **refresh** under the picker.

    <Frame>
      <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/start-slack-thread-action.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=272e0ef4cd11cc408fe0fb3868053d8f" alt="Start Slack thread action with a channel selected and setup tips below" width="873" height="1132" data-path="user-guides/images/help-desk/slack-threads/start-slack-thread-action.png" />
    </Frame>
  </Step>

  <Step title="Save">
    Make sure the trigger is **Active** and click **Create trigger**. The next ticket that matches gets a card in the channel.
  </Step>
</Steps>

<Note>
  A ticket has only **one** Slack thread. A trigger can have only one **Start Slack thread** action, and if several triggers match the same ticket, the first one to post wins.
</Note>

<Warning>
  In a channel **shared with another company** (Slack Connect), everyone in the channel - including people outside your company - can see customer messages, replies, and internal notes. The channel picker marks these channels and shows a warning when you select one.
</Warning>

### Changing or pausing the trigger

Changes to the trigger only affect **new** tickets. Threads that are already open stay where they are and keep working normally.

| If you... | New tickets | Ongoing threads |
| - | - | - |
| **Change the channel** | Get their card in the new channel. | Stay in the old channel and keep syncing. Replies and card buttons work as before. |
| **Pause the trigger** | Don't get a Slack thread. | Keep syncing. Replies and card buttons work as before. |

## The Ticket Card

Each ticket's card shows its current state and is updated whenever the ticket changes:

* **Ticket number and subject**
* **Status** and **assignee**
* **Requester, channel, and priority** - for example, "From Jane Doe via Email · 🟠 High priority"
* **The customer's first message**, shortened if it's long
* **Assign to me** and **Close** buttons
* An **Open in Chatbase** link to the ticket in the inbox

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/ticket-card.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=7e9a7c51abeec2ff3998bfa2dc738840" alt="A ticket card in Slack with status, assignee, priority, summary, and buttons" width="1188" height="505" data-path="user-guides/images/help-desk/slack-threads/ticket-card.png" />
</Frame>

### Card buttons

| Button | What it does |
| - | - |
| **Assign to me** | Assigns the ticket to you in Chatbase. |
| **Close** | Asks you to confirm, then closes the ticket in Chatbase. |

There's no reply after a click - the card itself updates to show the new assignee or status. Once a ticket is closed or cancelled, the card no longer shows buttons, and a ticket can't be reopened from Slack. Reopen it from the inbox instead.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/close-confirm.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=04a884bdc924b5974b8c634ccf23f2ba" alt="Slack confirmation dialog: Close this ticket?" width="1034" height="318" data-path="user-guides/images/help-desk/slack-threads/close-confirm.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/ticket-card-closed.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=f3056c1288c3b4c3c3789d33232b1472" alt="A closed ticket card in Slack with no buttons" width="1174" height="420" data-path="user-guides/images/help-desk/slack-threads/ticket-card-closed.png" />
</Frame>

## Replying From Slack

Write in the card's thread to handle the ticket. Chatbase reacts to every message so you know how it was handled:

| Reaction | Meaning |
| - | - |
| ✅ | Saved on the ticket as a reply and handed off to the customer's channel. |
| 📝 | Saved as an internal note. The customer doesn't see it. |
| ⚠️ | Not sent, or the customer's channel reported it wasn't delivered. Chatbase explains why. |

<Note>
  ✅ means Chatbase accepted your reply and sent it out, **not** that the customer received it. Delivery is confirmed later by the customer's channel, and a failure can show up after the ✅. See [When a reply isn't delivered](#when-a-reply-isnt-delivered).
</Note>

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/thread-reactions.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=5c0326100d0e6020598db4a2654b75ef" alt="Thread messages marked with ✅ for a reply and 📝 for internal notes" width="1154" height="795" data-path="user-guides/images/help-desk/slack-threads/thread-reactions.png" />
</Frame>

### Reply or internal note?

| You write | It becomes |
| - | - |
| A normal message | A **reply** sent to the customer. |
| A message that starts with `internal:` | An **internal note**. The `internal:` prefix is removed, and you get a private reminder that the message wasn't sent to the customer. |
| A message that mentions a person, a user group, `@here`/`@channel`, or a channel | An **internal note** - mentions are treated as talk between teammates. |
| A message that mentions **@Chatbase** | Neither. Your AI agent answers it in the thread, and nothing is saved on the ticket. See [Ask your AI agent](#ask-your-ai-agent). |

<Warning>
  Replies are sent to the customer **immediately**. Editing or deleting your message in Slack afterwards doesn't change or unsend what the customer received. If you edit a message that was already sent, Chatbase lets you know privately.
</Warning>

### Ask your AI agent

Mention **@Chatbase** in a ticket thread to ask your AI agent a question while you handle the ticket - for example, to check a policy or a product detail before you reply:

> @Chatbase what is our refund policy?

The AI agent answers in the thread, using the same knowledge it uses with customers.

* **Only your team sees it.** The question and the answer stay in Slack. Neither is sent to the customer or saved on the ticket.
* **It reads only your message.** The AI agent doesn't see the rest of the thread or the ticket, so include the details it needs in your question.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/ask-ai-agent.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=5bf09707bb556b7ce9fab483eaff11d3" alt="A teammate asks @Chatbase a question in a ticket thread and the AI agent answers" width="1154" height="349" data-path="user-guides/images/help-desk/slack-threads/ask-ai-agent.png" />
</Frame>

### Files

Files you attach to a thread message are sent to the customer with your reply (or saved with your note). Files over the helpdesk size limit, or beyond the per-message file limit, aren't sent - Chatbase tells you which ones were left out.

### In the Chatbase helpdesk inbox

Replies and notes from Slack appear on the ticket in the inbox under your name, with a **via Slack** tag.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/inbox-via-slack.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=1bf739aafebd5e28c04779b5b35225fb" alt="A reply in the inbox tagged via Slack" width="348" height="104" data-path="user-guides/images/help-desk/slack-threads/inbox-via-slack.png" />
</Frame>

The ticket's timeline also shows when the ticket was posted to Slack, with an **Open thread** link that takes you to the thread.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/slack-thread-event.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=fab87e62c4202541b06ab7cedca02c82" alt="Ticket timeline event with an Open thread link to Slack" width="602" height="50" data-path="user-guides/images/help-desk/slack-threads/slack-thread-event.png" />
</Frame>

### When a reply isn't sent

If Chatbase can't send your reply at all, it marks the message with ⚠️ and tells you why in a message only you can see. Nothing reaches the customer. Common reasons:

| Reason | What to do |
| - | - |
| Your Slack email doesn't match a member of the Chatbase account | Change your Slack profile email, or get invited to Chatbase with that email. |
| The AI agent is still handling the conversation | [Take over](/docs/user-guides/chatbot/help-desk/takeover) the conversation in the inbox first. |
| The ticket is closed or cancelled | Reopen it from the inbox. Internal notes still work on closed tickets. |
| The WhatsApp 24-hour window has closed | Send a [WhatsApp template](/docs/user-guides/integrations/whatsapp-templates) from the inbox. |
| The ticket is an Instagram or Facebook comment | Reply from the inbox. |

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/reply-not-sent.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=b2d88e8e4bf97b3d86b5b40d2fae0245" alt="A reply on a closed ticket marked with a warning and a private explanation from Chatbase" width="1450" height="322" data-path="user-guides/images/help-desk/slack-threads/reply-not-sent.png" />
</Frame>

### When a reply isn't delivered

Some replies are sent but never arrive - an email bounces, or WhatsApp rejects the message. When the customer's channel reports a failure like this, Chatbase tells you in the thread:

* Your Slack message gets a ⚠️ reaction, next to its ✅.
* A **⚠️ Not delivered to the customer: *reason*** message is posted in the thread with the name of whoever sent the reply, so the whole team sees it.

| Channel | Failures reported in the thread |
| - | - |
| **Email** | The email couldn't be sent, or it bounced. Spam complaints aren't reported - the email was delivered. |
| **WhatsApp** | WhatsApp rejected the message. The reason WhatsApp gives is shown. |
| Other channels | None. Check the ticket in the inbox if you're unsure a reply arrived. |

The failure is also shown on the message in the inbox. To try again, fix the cause (for example, correct the customer's email address) and resend from the inbox or the thread.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/reply-not-delivered.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=373d404e8bd9bd2627e4961c7a3a42bf" alt="A reply with ✅ and ⚠️ reactions and a Not delivered to the customer message in the thread" width="1186" height="362" data-path="user-guides/images/help-desk/slack-threads/reply-not-delivered.png" />
</Frame>

## What's Posted to the Thread

Once a ticket has a thread, Chatbase keeps it up to date:

| Activity | How it looks in the thread |
| - | - |
| A customer message | Posted under the customer's name (for example, "Jane Doe (customer)"), with their images and files. |
| A reply from the inbox | "💬 *Agent* replied · *channel*" - for example, "💬 Sarah Chen replied · Email" |
| An internal note from the inbox | "🔒 Note · *Agent*" |
| A status change | "🔄 changed ticket status from *old status* to *new status*" |
| An assignee change | "👤 Assigned to *Agent*" or "👤 Unassigned" |
| A priority change | "⚑ set priority to *priority*", "⚑ changed priority from *old* to *new*", or "⚑ cleared the priority" |
| A reply that wasn't delivered: a failed WhatsApp message, or an email reply sent from this thread that failed or bounced | "⚠️ Not delivered to the customer: *reason* · *Agent*" |
| A summary written when the ticket is closed | "📋 Summary" |

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/thread-mirror.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=1903cfac86911600d611d20449bf24b2" alt="Ticket thread showing an assignee change and a reply sent from the inbox" width="1178" height="258" data-path="user-guides/images/help-desk/slack-threads/thread-mirror.png" />
</Frame>

Chatbase only posts activity that happens outside Slack. Replies and notes you write in the thread aren't posted again, since your message is already there.

## Troubleshooting

### Needs attention

A trigger with a **Start Slack thread** action is flagged **Needs attention** in the triggers list when:

* Slack was **disconnected**. Reconnect the **same workspace** and the badge clears - the trigger keeps its channel and there's nothing to change. See [If Slack is disconnected](#if-slack-is-disconnected).
* Slack was reconnected to a **different workspace**. Open the trigger and select a channel in the new workspace.
* The channel was **archived or deleted**. Open the trigger and pick another channel.
* Chatbase **isn't a member** of the channel. Run `/invite @Chatbase` in the channel.

<Frame>
  <img src="https://mintcdn.com/chatbase/i9c2rGh_l5QcMWvb/user-guides/images/help-desk/slack-threads/needs-attention.png?fit=max&auto=format&n=i9c2rGh_l5QcMWvb&q=85&s=e07b7c24272418e9cd7e870b2bb1ac98" alt="Trigger flagged Needs attention because Chatbase isn't in its Slack channel" width="1228" height="108" data-path="user-guides/images/help-desk/slack-threads/needs-attention.png" />
</Frame>

### If Slack is disconnected

While the Slack integration is disconnected, ticket threads stop syncing in both directions:

* **Slack to Chatbase:** nothing you write in a ticket thread reaches the ticket. Replies aren't sent to the customer and notes aren't saved.
* **Chatbase to Slack:** customer messages, inbox replies, notes, and ticket changes aren't posted to the thread.

Handle the ticket from the inbox until Slack is back.

When you reconnect the **same workspace**, existing threads resume syncing: new activity syncs and card buttons work as before.

<Warning>
  Activity from while Slack was disconnected isn't synced after you reconnect. Messages written in a thread during that time are lost - post them again or send them from the inbox. Ticket activity from that time stays on the ticket in the inbox, but it won't appear in the thread.
</Warning>

### Common questions

<AccordionGroup>
  <Accordion title="No card was posted for a new ticket">
    Check that the trigger is **Active**, that it has the **Ticket is Created** condition, and that its other conditions match the ticket. Make sure Chatbase is a member of the channel, and that your plan includes the helpdesk. A ticket that's already closed or cancelled by the time the card would post doesn't get one.
  </Accordion>

  <Accordion title="My private channel isn't in the list">
    Chatbase can only see private channels it's been invited to. Run `/invite @Chatbase` in the channel, then click **refresh** under the channel picker.
  </Accordion>

  <Accordion title="A teammate's replies get ⚠️">
    Their Slack profile email has to match the email they use in Chatbase, and they need access to tickets for this AI agent.
  </Accordion>

  <Accordion title="The thread stopped updating">
    If the channel is archived or deleted, or the card is deleted, the thread stops syncing. If Chatbase is removed from the channel, updates pause until it's invited back. If Slack is disconnected, threads stop syncing until you reconnect the same workspace, and nothing from that time is synced (see [If Slack is disconnected](#if-slack-is-disconnected)). The ticket itself isn't affected, so keep working on it from the inbox.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.