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

# AI helpdesk with human handoff

> Centillion Helpdesk turns conversations your AI agent cannot finish into tickets. Set up teams, AI drafts and live takeover, and answer from one inbox.

Centillion Helpdesk is an AI helpdesk with human handoff: when your agent cannot
finish a conversation, it becomes a ticket or a live chat that a teammate
answers. Use the **Escalations** action for a ticket your team can follow up on,
or **Centillion live chat** when the customer needs someone in the conversation
now. Helpdesk belongs to an agent, so each agent has its own tickets, its own
statuses and its own team.

![Helpdesk inbox on the Conversations view with a website chat open and the Take over button](https://mintcdn.com/centillion/OVR3XViKbG9zMitv/images/helpdesk/helpdesk-01-inbox.webp?fit=max\&auto=format\&n=OVR3XViKbG9zMitv\&q=85\&s=084801439edcd4cc9495ae957f0bb9bc)

The Helpdesk inbox on Conversations, where a teammate can take over a chat from the agent.

## What it does

* Creates tickets when the agent escalates, when email arrives, when a customer
  answers a campaign, when a teammate opens one, or through the API.
* Hands a live conversation to a teammate on website chat, the iOS and Android
  SDKs, email, WhatsApp, SMS, Messenger and Instagram. The customer stays in the
  same chat.
* Writes suggested replies for your team. A draft is never sent until a
  teammate clicks send, and it spends message credits like any other answer.
* Routes tickets to teams by hand, by balanced workload or by round robin, with
  an open-ticket cap per teammate.
* Runs triggers, macros (up to 300 per agent), tags (up to 500 per agent),
  custom fields, saved views, satisfaction surveys and reports.
* Lets your team answer WhatsApp, Messenger, Instagram and email handoffs from a
  Slack thread, with up to five files of 25 MB each per reply where the channel
  accepts files (Instagram and SMS do not).

## What you need

* A workspace on Standard and up. Helpdesk is one of the integrations those
  plans add. If you are new to the product, read [what Centillion
  is](https://cntillion.com/docs/introduction.md) first.
* The Owner or Member role to turn Helpdesk on and change its configuration.
  Owners, Members and Support Associates can handle tickets and conversations.
  Support Associates can manage personal views and use saved macros, but only
  Owners and Members can change macros, shared views or Helpdesk configuration.
  Viewers have read-only access. See [workspace roles](https://cntillion.com/docs/workspaces/members.md).
* An **Escalations** or **Centillion live chat** action, enabled on each channel
  where customers should be able to reach a person.

## Set it up

### Explore a sample inbox

Before your workspace has activity, **Helpdesk inbox** opens with fictional
tickets, customers, teammates and conversations. Try replying, writing a note,
assigning a ticket or changing its status. These changes stay in the preview;
replies are not delivered and file uploads and AI drafting are unavailable.
You can explore it before creating an agent or enabling Helpdesk.

Choose **Hide sample data** to return to your inbox or Helpdesk setup. This
choice is remembered for this workspace in your browser. Samples also disappear
automatically when the workspace receives real activity. They never become
customer records or contribute to reports, usage or billing.

**1. Turn on Helpdesk**

Open **Helpdesk inbox** in the agent's sidebar. Choose **Hide sample data**
if the examples are showing, then select **Enable
Helpdesk**. The same button appears while you configure **Escalations** or
**Centillion live chat** in **Tools**, and on every page under **Settings →
Helpdesk** while Helpdesk is off. You need the Owner or Member role.

**2. Choose the email address**

Add and verify company addresses in **Settings → Email** first. Then open
**Settings → Helpdesk → Email** to choose your support addresses, the
deliverability alert contact, the display name and the signature.

![Helpdesk email configuration with the reply address list, Add email and the deliverability alert contact](https://mintcdn.com/centillion/hWC-069gfv-5h1TN/images/helpdesk/helpdesk-04-settings-email.webp?fit=max\&auto=format\&n=hWC-069gfv-5h1TN\&q=85\&s=e11a6e745d2b836593bc10842b810fa8)

Settings, Helpdesk, Email: the addresses Helpdesk replies from and the deliverability alert contact.

**3. Invite members and build teams**

Invite teammates from **Workspace settings → Members** and give support staff
the Support Associate role. Workspace members appear under **Settings →
Helpdesk → Members** once they have Helpdesk access. Enabling Helpdesk creates
one team called General. Under **Teams & assignment**, choose **Create team**
for more, add members, and pick each team's assignment strategy.

**4. Connect the actions customers use**

In **Tools**, configure **Escalations** for tickets that can wait, or
**Centillion live chat** for someone to join now. Select the channels and
choose **Save & enable**. You can save either action as a draft before
Helpdesk is ready. **Save & enable** requires Helpdesk to be enabled and at
least one channel selected.

### Turning it on

Helpdesk is off until you switch it on. Support Associates and Viewers can ask
an Owner or Member to enable it.

Enabling it creates six statuses, one team called General and a trigger called
**Route to default team**, which puts each new ticket without a team in General.
Tickets stay unassigned until someone claims them. Translation and AI drafts
start switched on. All of that is yours to change. Turning Helpdesk off and on
again keeps what you set up instead of creating it a second time.

Under **Settings → Helpdesk**, a section with nothing in it yet shows its own
list with a button to add the first item, such as **New trigger**. Shopify is the
exception: until a store is connected, its page explains what the connection is
for and offers one button to start.

### Start with human support

Open **Settings → Helpdesk → Human handoff** and enable **Human-first
conversations** to send new chat bubble, help page, iOS and Android
conversations straight to your team before AI answers. No escalation action is
required. This also selects **Pause AI when a ticket is created** and turns off
**Resume AI when all tickets close**. A teammate must choose **Allow AI replies**
to hand a conversation back to AI. Existing conversations with tickets keep
their state.

![Human handoff settings with switches for human-first conversations and pausing AI on new tickets](https://mintcdn.com/centillion/hWC-069gfv-5h1TN/images/helpdesk/helpdesk-03-human-handoff.webp?fit=max\&auto=format\&n=hWC-069gfv-5h1TN\&q=85\&s=2dc0727432adc22ee0300acdc116f302)

Settings, Helpdesk, Human handoff: human-first conversations and when AI pauses or resumes.

For email, turn off **Automatic replies** for each mailbox in
[Email settings](https://cntillion.com/docs/helpdesk/email-settings.md). Voice, generic API chat and other
connected channels keep their separate controls.

Live handoff and manual takeover always pause AI. Creating a ticket normally
requests asynchronous follow-up; the pause-on-ticket setting makes the Create
ticket action pause its linked text conversation too. With automatic
resumption enabled, AI can return only after the last open ticket closes.
AI draft replies remain drafts until a teammate reviews and sends them.

Track bugs affecting several customers with [product issues in
Notion](https://cntillion.com/docs/helpdesk/product-issues.md). Resolving a product issue never resumes AI or
closes its linked support tickets.

## Use it every day

### Where tickets come from

**The agent escalates.** The agent has a tool for creating a ticket and decides
when to use it. By default it does so when a customer asks for a person, or when
it does not know an answer and the customer confirms they want help. It collects
an email address first, explains that support will be in touch, and only then
creates the ticket. It is told never to claim it made a ticket unless it really
did. When the customer's contact came from a
[connected CRM](https://cntillion.com/docs/customer-data/crm-integrations.md) with write-back on, every
escalation adds a note to the CRM record (a completed task in Salesforce) with
the ticket number, the subject and description of that request, and a link to
the ticket.

You control when this happens under **Tools → Escalations**, where you write the
policy in plain language, choose which channels it applies to, and pick which
details to collect.

**The customer requests live support.** With **Centillion live chat** enabled,
the agent can hand the current conversation to your team. It creates or reuses a
ticket labeled **Live chat**, keeps the conversation history, and stops AI
replies while your team handles it.

**A teammate opens one.** The **New ticket** button, for a conversation that
started somewhere else. You choose whether replies go out by email or WhatsApp.
The description becomes a private note, and the team's assignment strategy
chooses the owner. A Manual team leaves the ticket unassigned.

**Email arrives.** Mail to a connected mailbox or to the Helpdesk address becomes
a ticket. See [Email](https://cntillion.com/docs/channels/email.md).

**A customer replies to a campaign.** Choose **Human takeover** in an
[Outbound WhatsApp campaign](https://cntillion.com/docs/campaigns.md) to send each recipient's first reply
to your team. Helpdesk must be enabled before you launch. The reply creates or
reuses a ticket for the conversation and adds a campaign tag; new tickets use
the campaign name in their subject. AI replies pause while your team handles
the conversation. Closing its last open ticket or choosing **Allow AI replies**
hands later messages back to the agent. If Helpdesk is turned off after launch,
the agent answers as usual.

**Your own systems.** A ticket can be created over the API. See the [API
reference](https://cntillion.com/docs/api-reference/introduction.md).

### Taking over a conversation

When a customer is mid-conversation with the agent and needs a person, open
**Conversations** in the Helpdesk inbox, find the conversation and choose **Take
over**. The agent stops answering that conversation immediately and you write
the replies. Taking over opens a ticket for the conversation, assigned to you,
or reuses the one already open for it. The customer stays exactly where they
are, on the website or in WhatsApp, and never learns a new address.

Takeover works on website chat, including Center Stage, the iOS and Android
SDKs, email, WhatsApp, text messages (SMS), Messenger and Instagram. Slack
conversations cannot be taken over. To stop the agent answering a Slack thread,
open the conversation under the agent's **Logs**, choose **Pause
conversation** from its menu, and reply in Slack yourself.

On the website, the customer is told who joined: your first name and your
profile photo, in their language. An app built on the iOS or Android SDK gets
the same first name and photo, and shows them as its developers chose. On a
messaging channel there is no announcement, so say hello, because to them the
conversation has just gone quiet.

If an email reply is waiting for its reply delay, takeover asks you to confirm
that the pending reply will be cancelled. Confirming removes unsent automatic
drafts. Your manual replies send immediately.

When you are done, **Allow AI replies** in the ticket's menu hands the
conversation back to the agent and closes the ticket.

You can also take over from the agent's **Logs**. Select a chat log and choose
**Take over** to open its Helpdesk ticket in a new tab. The log then shows
**Taken over** and **View ticket**. If your browser blocks the new tab, use
**View ticket** to open it. The link remains available after AI replies resume.

Saved Playground conversations support manual takeover too. Taking one over
pauses its AI replies, including an answer still being generated. The ordinary
**Pause conversation** and **Resume conversation** controls cannot change an
active takeover; use **Allow AI replies** in its ticket instead. Ended
conversations cannot be taken over.

A live chat handoff that nobody has joined yet shows **Waiting for an agent** in
Conversations, and the ticket shows a banner while AI replies are paused. Choose
**Join live chat** in either place to take the conversation. It reuses the
ticket the handoff created rather than opening a second one.

### Centillion live chat

Only enable live chat when teammates are available to reply. For requests that
can wait for follow-up, configure Escalations instead.

1. Open **Tools** and configure **Centillion live chat**.
2. Enable Centillion Helpdesk if it is still off.
3. Give the action a name and write **When to use** instructions, such as urgent
   billing issues or an explicit request to speak to a person now. The default
   instructions ask the agent to try common questions first and confirm the
   customer wants live support.
4. Select the channels, then choose **Save & enable**. **Save** keeps a draft.

If a procedure should control the handoff, turn on **Only use in procedures**
and reference the action in an active procedure available on that channel.

Live chat supports **Chat bubble**, **Help page**, **Center Stage**, **iOS
SDK**, **Android SDK**, **Email**, **Instagram** direct messages, **Messenger**
direct messages and **WhatsApp**. The three website channels are selected by
default. Connected channels still need setup, and you choose which ones may use
the action. API, phone, Slack, SMS and public social comments cannot invoke this
live-chat action.

After a successful handoff, the customer sees:

> Your conversation has been sent to our support team. A teammate will join
> shortly. You can keep sending messages here while you wait.

The customer continues in the same chat while AI replies stay paused. Your team
opens the **Live chat** ticket in the inbox, reads the existing thread and
replies there. Assignment rules apply, and teammates can add internal notes and
change the status as with other tickets. When [live alerts](#live-alerts) are
on, a website handoff also alerts your team, and a handoff on WhatsApp,
Messenger, Instagram or email is posted to your Slack channel, where your team
can [answer it from the thread](#answering-a-handoff-from-slack).

Test on a supported customer channel by asking to speak to someone now. Confirm
that the inbox shows a **Live chat** ticket, send a reply from Helpdesk, and
check it reaches the customer in the original conversation.

### Drafts written by the agent

Enabled when Helpdesk is first turned on. The agent writes a suggested reply and
waits. It is never sent automatically. A teammate reads it, edits it, and clicks
send. Drafts and AI Compose use the agent's selected model and spend message
credits like any other answer. The workspace allowance and the agent's optional
credit limit both apply. An owner can recharge the workspace or adjust an
agent's limit; otherwise, wait for the monthly reset.

![AI draft replies settings switched on, with an example question, a generated draft reply and the Draft reply with AI button](https://mintcdn.com/centillion/hWC-069gfv-5h1TN/images/helpdesk/helpdesk-02-ai-draft-replies.webp?fit=max\&auto=format\&n=hWC-069gfv-5h1TN\&q=85\&s=82ff52b96403f57436e2a67720c4d97b)

Settings, Helpdesk, AI draft replies: try a sample draft before teammates use it on tickets.

### Translation

Translation starts enabled. Helpdesk detects the latest customer message's
language and offers translation when it differs from your preferred language.
You can also translate explicitly while reading a ticket.

### Notes, messages and the timeline

A **message** goes to the customer. A **note** is internal and never leaves
Helpdesk. The timeline records everything that happened and who did it, and it
survives people leaving the workspace.

Use the formatting toolbar for bold, italic, links, lists and text colors in
replies and notes. Email replies keep the formatting; channels that accept
only plain text receive the text without formatting.

#### Attachments

Drop files anywhere on the reply or note composer, or use the attachment button.
Up to five files per reply or note, 25 MB each, 125 MB in total. Email, WhatsApp
and private Messenger replies can carry them out to the customer. Instagram
direct messages, Slack, text messages, and public comments on Facebook or
Instagram cannot, so send a link there instead. Note attachments stay internal
whatever the channel.

The composer accepts all file types. The customer's channel can impose lower
size limits or reject a file type, so check delivery before sending the file
again.

Files a website visitor attaches in the chat widget come with their messages:
they appear on the conversation in **Conversations**, and on the ticket's
timeline once the conversation becomes a ticket or you take it over. See
[Files from visitors](https://cntillion.com/docs/channels/website.md#files-from-visitors).

### Customer history

A ticket's **Customer history** lists every ticket for the same Contact, on any
channel and in any queue, newest first. A verified website visitor keeps the
Contact their [identity](https://cntillion.com/docs/customer-data/identity-verification.md) names. A
WhatsApp or text message (SMS) from a number already on one Contact joins that
Contact, so its tickets appear in the same history. If two Contacts share the
number, the message still reaches the agent but starts a separate Contact until
you correct the duplicates. Taking over that conversation asks you to correct
them first.

### Statuses

Six to start with:

* **New**: nobody has looked yet.
* **On You**: waiting on your team.
* **On Customer**: waiting on them.
* **On Hold**: parked.
* **Closed**: done.
* **Cancelled**: not going to be done.

You can add your own. Each one you add has to map onto one of those six kinds,
so that automation keeps working when you rename things to suit your team.
Under **Settings → Helpdesk → Ticket statuses**, edit the internal label,
customer label, color and description. Each category keeps one default and at
least one active status. Archived statuses remain visible on existing tickets
but cannot be selected for new status changes.

Tickets also have a priority. See [Priority and tags](#priority-and-tags).
There are no SLA timers.

### Assigning work

Three ways to hand a ticket to someone, set per team:

* **Manual.** Tickets stay unassigned until a teammate claims them. This is the
  default.
* **Balanced.** The available teammate with the fewest open tickets.
* **Round robin.** The available teammate who has waited longest for one.

New teammates start Away. Manual availability is set on **Members**; scheduled
teammates follow their shift hours and time off. Automatic assignment considers
available members of the ticket's team and respects the team's open-ticket cap.
Closed and Cancelled tickets do not count toward that cap. Balanced assignment
breaks a workload tie by choosing the member least recently assigned a ticket.

If nobody is eligible, the ticket stays unassigned. **Assign to next available
shift** can instead choose a scheduled member whose shift starts soonest,
excluding members currently on time off. Coming online does not automatically
assign queued tickets. With **Unassign on reply** enabled, a customer reply
retries assignment for an unassigned ticket or replaces an unavailable owner;
an available owner stays assigned. Closed and Cancelled tickets are skipped.

Manual assignment can choose a teammate regardless of availability or capacity.
Reassigning a ticket keeps its status.

### Priority and tags

Every ticket has a priority, from **No priority** through **Low**, **Normal**
and **High** to **Urgent**, set from the ticket details. Tags label tickets for
filtering. Add up to 20 per ticket from the details panel. Admins can create a
tag there by typing a new name.

Admins manage tags under **Settings → Helpdesk → Tags**. Names use lowercase
letters, numbers, hyphens and underscores, and each tag shows how many tickets
carry it. **Archive** retires a tag without removing it from past tickets, and
**Restore** brings it back. An agent can hold up to 500 tags, archived ones
included.

The ticket list can show **Priority** and **Tags** columns, sort by priority,
and filter on either. The tag filter includes **Untagged**. Select several
tickets to change their status together.

The Create ticket action can also tag the tickets it creates. In the action's
details, add up to five tags and tell the AI when each one applies. If the
escalation lands on a ticket that already exists, the tags are added to it.

### Custom fields and saved views

Custom fields let you record things the standard ticket does not have, such as
an order number or a plan. Seven kinds, including text, number, date and a list
you define.

Saved views are filters you keep. Five come with Helpdesk, and you can build
your own for yourself or share them with your team. Views can include the
priority and tag columns and sort by priority.

Filter by a custom field using the controls for its type, such as text matching,
number comparisons, date ranges or selected options. These filters can be saved
in a view. Support Associates can edit personal views; Owners and Members can
also edit shared views.

### Macros

Macros are shared replies. Owners and Members create them under **Settings →
Helpdesk → Macros**. Teammates who can handle tickets can insert one from the
lightning button above the reply box. The formatted text lands in the reply or
note for you to edit before sending.

A macro can include variables such as `{{customer.first_name}}`,
`{{ticket.number}}` or `{{human_agent.name}}`. Add a fallback after a bar,
`{{customer.first_name | there}}`, for when the value is missing. A variable
Centillion does not recognize stays in the text as written. A macro can also add
tags to the ticket when you insert it. Each agent can hold up to 300 macros.

Attach up to five files to a macro, within the [attachment limits](#attachments).
Inserting the macro copies those files into the ticket's editable draft.

### Finding a conversation

**Conversations** lists the newest first. **Filters** narrows them by channel,
status, sentiment, dates, a word the conversation contains, the agent's
confidence, thumbs-up or thumbs-down feedback, or voice sessions only. Filters
search every conversation, not only the ones on screen, and **Load more
conversations** pages back through older matches. Confidence, feedback and
voice apply to website and API chats only.

On a ticket, **View conversation** opens the original transcript beside the
ticket, including replies from your team, without leaving the queue. Choose
**View full conversation** to open it in Conversations.

#### Conversation logs

Under the agent's **Logs** tab, **Search messages** matches message text and contact
details in the loaded chat logs. Press `/` to focus search and Escape to clear
it. **Filter conversations → Conversation state** narrows the list to ongoing,
paused, taken over, waiting, or ended chats, alongside the channel, date,
confidence, feedback, and contact filters.

The **Details** tab links to the contact search and any linked ticket, and lets
you copy the conversation ID. Use a conversation's menu to export its transcript
as JSON, CSV, or PDF. **Export all** uses the filtered list; **Select** lets you
choose several conversations to export together. PDF export downloads the
transcripts directly.

#### Flag an issue for review

In the workspace or agent's [Conversations](https://cntillion.com/docs/workspaces/conversations.md), open a
transcript and choose **Flag issue** beside a message. Describe what needs
attention, then choose **Add to Helpdesk**. This adds the original message and
your notes to the linked open ticket, or creates an internal review ticket when
there is no open ticket.

Flagging an issue does not pause AI, take over the conversation, send a customer
message or run ticket automations. Helpdesk must be enabled, and your role must
allow managing it.

### Live alerts

Your team can be told the moment a visitor is chatting in the website widget,
so someone can join while they are still there. Open **Settings →
Notifications** and, under **Live alerts**, choose when to alert:

* **Every new conversation**: as soon as a visitor starts chatting.
* **Only escalations**: when the agent hands a visitor to a person.

Alerts are off until you choose one. Each goes to two places:

* **The dashboard.** Anyone in the workspace with the dashboard open sees a
  card in the corner with a **Join** button. It disappears once someone has
  joined.
* **Slack**, if the agent has a Slack connection. Pick the workspace and the
  channel, then invite the agent's Slack app to that channel: in Slack, open
  the channel and type `/invite` followed by the app's name. **Send test alert**
  checks it works. Without a Slack connection, the settings link to Channels.

Either setting also posts a conversation on WhatsApp, Messenger, Instagram or
email to Slack when the agent hands it to your team. Those conversations raise
no alert when they start, and their handoffs go to Slack only. Your team can
answer the customer from there, as [Answering a handoff from
Slack](#answering-a-handoff-from-slack) explains.

An alert shows the visitor's first message, the page they are on, their
language, and their name or email if they have given one. **Join** opens the
conversation in the dashboard and takes it over in one click, after signing in
if you need to. Only members of the workspace can join. If a teammate got there
first, you see who, and the Slack message is updated to say who joined.

Joining needs the Helpdesk to be on for the agent.

### Answering a handoff from Slack

A customer on WhatsApp, Messenger, Instagram or email has no chat window for
a teammate to join. When the agent hands one of those conversations to your
team with **Centillion live chat**, Centillion posts the handoff to the Slack
channel chosen under **Live alerts**. That happens when alerts are set to
**Every new conversation** or **Only escalations** and a Slack workspace and
channel are picked. These handoffs go to Slack only and show no card in the
dashboard.

The message shows what the customer wrote, the agent's summary of the request,
the customer's name, email and phone when Centillion has them, the ticket number,
and an **Open ticket** button. While your team has the conversation, whatever
the customer writes next is added to the message's thread, including what
they sent in the seconds after asking for a person. On email this needs a
Helpdesk address: an email sent to a connected Gmail or Outlook mailbox during
a handoff is not added to the thread.

To answer, reply in the thread and tag the app, for example **@Centillion**;
the handoff message shows the tag to use. Your reply goes to the customer on
their channel with the files you add to it, without the tag, and it appears in
the ticket under your name, the same as a reply typed in Helpdesk. A mention
of a person or a channel is written out as plain words, a link keeps its
address, and an emoji is sent as the emoji. Messages without the tag stay in
Slack, so the team can talk about the case in the same thread. The channel's
own rules still apply, including the 24-hour window on WhatsApp, Messenger and
Instagram.

Nothing is posted back when a reply goes through. When one is not sent, or
Centillion cannot confirm that it was, the thread says so.
[Troubleshooting](https://cntillion.com/docs/troubleshooting.md#a-reply-in-the-slack-thread-was-not-sent)
lists what it can say.

#### Allowing replies from Slack

Answering from the thread needs more Slack permissions than posting. Once a
Slack workspace is picked, the **Live alerts** card says whether replies are
allowed. If they are not, it shows **Allow replies from Slack**, and each
handoff message tells your team to answer from the Helpdesk. A handoff posted
that way stays that way: once replies are allowed, a reply in its thread is
still not sent, and the thread says to answer that one from the Helpdesk.
Handoffs posted afterwards are answered from their thread.

Until replies are allowed, you choose the channel by its id. Afterwards you
pick it from a list of public channels. To use a private channel, enter its id
before allowing replies.

An Owner or Member chooses **Allow replies from Slack** and approves the extra
permissions on Slack's page. This reconnects Slack, so the agent stops
answering mentions until you turn **Automatic replies** back on for the Slack
connection under **Channels**. [Slack](https://cntillion.com/docs/channels/slack.md#permissions) lists the
permissions and what Centillion receives once they are granted.

Sending files takes one more permission, to read them. A workspace that allowed
replies before Centillion sent files sees **Allow files from Slack** on the same
card, which reconnects Slack the same way. Until an Owner or Member chooses it,
a reply with a file is not sent, and the thread says so.

#### Slack reply limits

* **Who can reply.** Centillion recognises the person replying by the email
  address on their Slack profile. It has to match the email of an active
  member of this agent's Helpdesk, which is the address they have in your
  Centillion workspace. A reply from anyone else is not sent, and the thread
  tells them so.
* **Only a tagged reply is sent.** A message in the thread reaches the
  customer only when it tags the app. Everything else stays in Slack: it is not
  sent and not added to the ticket's notes, and the thread says nothing about
  it.
* **Files go with the reply.** The limits are the Helpdesk's: up to five
  files, 25 MB each and 125 MB together, of the kinds the composer takes. The
  customer's channel can be stricter: WhatsApp takes JPEG and PNG images up to
  5 MB, MP4 videos and audio up to 16 MB, and documents, while text messages
  (SMS) and Instagram take no files. When a file breaks one of these limits,
  or Slack has nothing to download for it, none of the reply is sent and the
  thread says which file and why. The text and each file reach the customer as
  separate messages, so a send that fails partway can leave them part of the
  reply: the thread then says the delivery could not be confirmed, so check
  the ticket before sending it again.
* **Edits change nothing.** Editing or deleting a reply in Slack changes
  nothing for the customer, and the thread says nothing about it.
* **Custom emoji arrive as their names.** An emoji you added to your Slack
  workspace has no character to send, so the customer reads its name, such as
  `:partyparrot:`.
* **The agent does not answer in the thread.** Tagging the app there sends
  your reply to the customer. The agent does not read it as a question, even
  while **Automatic replies** are on for the Slack connection.
* **Replies from Helpdesk stay in Helpdesk.** The thread shows the customer's
  messages. A reply a colleague sends from the ticket does not appear there,
  so check the ticket before answering twice.
* **The thread ends with the handoff.** After **Allow AI replies** on the
  ticket, replies in the thread are no longer sent. If the agent hands the
  conversation over again, it opens a new thread and the old one stays
  closed. A teammate joining the chat from Helpdesk does not end the thread.
* **One Slack workspace, one agent.** A Slack workspace connects to a single
  agent. Connect it to the agent that owns the WhatsApp number, the Facebook
  Page, the Instagram account or the mailbox.
* **Website alerts work differently.** A reply in the thread of a website
  alert is not sent to the visitor. Use **Join** there.

### Email addresses and presentation

You can select several support addresses under **Settings → Helpdesk → Email**.
Replies use the selected address the customer wrote to, then the first selected
address if there is no match, or the generated agent address if none is
selected. A support-associate display name uses the teammate who writes the
reply; a custom name stays the same for the whole team. The saved signature
applies to AI and teammate emails.

See [Helpdesk email settings](https://cntillion.com/docs/helpdesk/email-settings.md) for the address checks,
preview, and complete setup. [Email channel settings](https://cntillion.com/docs/channels/email.md) control
spam detection, blocked senders, the AI disclaimer, and the automatic reply
delay.

### Satisfaction surveys

Under **Settings → Helpdesk → CSAT surveys**, turn on surveys to email the
customer after a ticket closes. Choose thumbs, five stars or five smileys, and
customize the positive and negative labels. The email links to a page where
customers can rate the reply and add a comment. Opening the link never
records a rating on its own, so mail scanners cannot answer for the customer.
Links work for 30 days.

Edit the email canvas to preview the logo, formatted introduction, rating
choices and footer together. Thumbs have positive and negative labels; stars
and smileys have labels at the low and high ends. Sent surveys keep the rating
scale and presentation they were sent with when you later edit the settings.

Choose a delay between 1 minute and 30 days after closing, a verified sender
address, an optional logo, and the subject, introduction and footer. The
introduction supports Markdown. A ticket is not surveyed when it is reopened
before sending, has no customer email, came from WhatsApp, Messenger or
Instagram, never got a reply, carries an excluded tag, or is outside the
activity window. The same address is not surveyed again within the cool-down
period.

Results appear on the ticket, under **Satisfaction**, and in **Dashboards →
Helpdesk → Open detailed Helpdesk analytics** under **Customer satisfaction**.
It shows the CSAT score, response
rate and coverage against the previous period, why tickets were not surveyed,
and paginated responses with the teammate who handled each ticket. Thumbs-only
results show the percentage of positive responses. Results that include stars
or smileys show the average on a five-point scale. A positive thumbs rating or
a score of 4 or 5 counts as a positive response.

### Analytics

**Dashboards → Helpdesk → Open detailed Helpdesk analytics** reports, for the
period you pick, tickets created and
solved, the unsolved backlog at the end of each day, tickets by channel, and
the median first response time, response time and time to close. Each figure
is compared with the period of the same length just before it. Filter by
channel, assignee or team.

Response times count replies from your team, not the agent's. A ticket that
was closed, reopened and closed again counts once in the period's solved total,
though the daily chart shows each day it closed. Dates are in UTC.

Choose a preset or custom date range and show the previous period on comparison
charts. **Team performance** lists solved tickets, tickets replied to, replies
sent, CSAT and median response times for each teammate, with team totals.

### Shopify orders

Connect a Shopify custom app under **Settings → Helpdesk → Shopify** with your
store's `myshopify.com` domain and an Admin API access token. The app needs the
`read_orders` and `read_customers` scopes. Shopify shows orders older than 60
days only after it approves protected customer data and `read_all_orders`.

Tickets then show the customer's orders, matched by email or phone. Look up a
different email or phone from the panel when the customer wrote from another
address. Open an order for its items, totals, shipping address and tracking.
Macros can insert details from the latest order, such as
`{{shopify.last_order.number}}` or `{{shopify.last_order.tracking_url}}`.

### Triggers

Under Helpdesk settings, rules that run on a ticket after it exists. Conditions
can check status, assignee, team, channel, priority or tags. Actions can set a
status or priority, add or remove tags, assign someone, add a note, send an
email or Slack notification, or call a webhook.

For email, choose the requester, assignee, assigned team, a specific teammate or
team, or a custom address. Set the subject and formatted message, and insert
ticket variables where needed. For Slack, choose a connected workspace and a
channel, or enter a channel ID. Temporary delivery failures retry automatically;
invalid destinations and other permanent failures stop retrying.

Enabling Helpdesk creates an active **Route to default team** trigger for new
tickets without a team. It uses the current default team's assignment strategy.
Escalation creates the ticket; Helpdesk triggers run after creation or an update.

### Webhooks

Helpdesk can post ticket data to a URL of yours, with your own headers and body
format.

A webhook fires because a trigger's action names it. There is no list of events
to subscribe to, so the trigger is where you decide when it goes out.

A body template picks values with placeholders such as `{{ticket.priority}}`
or `{{ticket.customer.externalId}}`. To send the whole report, use
`{"deliveryId": "{{deliveryId}}", "ticket": {{ticket}}}`. Under `ticket` you
get:

* `id`, `number`, `subject`, `channel`, `statusId`, and `messageText`, the
  customer's latest message.
* `url`, the ticket in your inbox, and `conversationUrl`, the conversation in
  Conversations, when the ticket came from one.
* `priority` (none, low, normal, high or urgent), `statusCategory`,
  `description`, `createdAt` and `updatedAt`, as the
  [Helpdesk API](https://cntillion.com/docs/api-reference/endpoint/create-helpdesk-ticket.md) returns them,
  and `tags`, the names of the ticket's tags. When a trigger changes the
  priority, the status or the tags, the webhook it sends carries the new values.
* `customer`: `id`, `externalId`, `name`, `email`, `phoneNumber`,
  `attributes`, and `verified`, which is true when a signed identity proved who
  the customer is (see [Identity verification](https://cntillion.com/docs/customer-data/identity-verification.md)).
* `fields`: each custom field with its `id`, `label`, `type` and `value`, in
  the order of your fields. A choice field gives the chosen option's name, an
  image field a link.
* `attachments`: the files the customer sent, the latest 50, each with
  `name`, `contentType`, `size` and `url`.

Links to attachments and the dashboard open only for signed-in members of
your Helpdesk. An attachment link opens while this workspace is the one
selected in the dashboard. An image field filled with an outside URL keeps
that URL.

Each delivery is signed. The request carries `X-Centillion-Signature`, a
delivery ID, a timestamp and an idempotency key, so you can verify it came from
Centillion and ignore a repeat.

A delivery gets up to five attempts in total, spaced a minute, five minutes,
half an hour and two hours apart. A `Retry-After` header from your endpoint is
honoured, up to six hours.

Only failures worth repeating are retried: a connection that never landed, a
timeout, a rate limit, or a 500 from your side. A 400 or a 404 is taken at face
value and not sent again, so a webhook pointing at the wrong path fails once
rather than four more times.

### Escalation platforms

The Escalations card lists Centillion Helpdesk, Zendesk, Salesforce, Intercom,
Zoho Desk, Freshdesk, HubSpot, Help Scout, Gorgias and Odoo. Choose Centillion
Helpdesk to configure ticket creation in your inbox.

For Zendesk email support, create or edit a **Create ticket** action and choose
**Zendesk** under **Helpdesk destination**. For an internal or self-managed
deployment, connect an administrator-owned confidential OAuth client from your
own Zendesk account. Centillion pauses the email conversation while your team
answers the Zendesk ticket, then resumes when it is Solved or Closed. Follow
[Zendesk email handoff](https://cntillion.com/docs/helpdesk/zendesk-email.md) for setup and a complete test.

Salesforce supports the case and live chat actions described below. The other
external platforms use a **Contact us** dialog. Contact the Centillion team to
arrange their connection and ticket routing.

### Salesforce support

Connect **Channels → Salesforce**, then choose Salesforce as the destination in
**Tools → Create ticket**. Set its name, usage instructions, and channels, then
save and enable it. Centillion Helpdesk retains the conversation while
Salesforce receives a case with the customer details and transcript. Slack,
Zendesk Messaging, Instagram and Messenger are incompatible with this ticket
destination. Previews do not create remote cases.

On the Salesforce channel, the same action marks the existing case **Escalated**
for human review and stops automatic replies. It keeps the case and owner;
clear **Escalated** after review to allow new automatic responses. Draft mode
does not execute escalation or other actions.

**Salesforce live chat** hands Chat bubble, Help page and Center Stage
conversations to Salesforce Enhanced Chat and Omni-Channel. Enter the deployment
URL, DeveloperName and OrganizationId in its action builder, using the org
connected to the agent. Both Salesforce support actions accept **Only use in
procedures** when an active procedure should control execution.

Live chat transfers the text history, pauses AI replies, and synchronizes text
messages in both directions. **End Chat** in Salesforce resumes AI replies.
Attachments and interactive Salesforce message components are not rendered.
Follow the [Salesforce setup guide](https://cntillion.com/docs/channels/salesforce.md#live-chat) for the
package, signing-key configuration, permissions and a live test.

## Limits and good to know

* There are no SLA timers.
* Surveys are sent by email only, and never for WhatsApp, Messenger or
  Instagram tickets.
* Shopify is read-only: orders cannot be edited, refunded or cancelled from
  Helpdesk.
* Slack conversations cannot be taken over, and API, phone, Slack, SMS and
  public social comments cannot invoke the live-chat action.
* Human-first conversations cover the chat bubble, the help page and the iOS
  and Android SDKs. Email uses each mailbox's **Automatic replies** switch.
* A reply or note carries up to five files, 25 MB each and 125 MB in total. A
  ticket takes up to 20 tags.
* An agent holds up to 500 tags and 300 macros.
* Analytics dates are in UTC, and response times count your team's replies
  only.

## Questions

### Does the agent ever send a draft reply by itself?

No. An AI draft waits on the ticket until a teammate reads it, edits it and
clicks send. This holds with human-first conversations too.

### Will the customer know a person has joined?

On the website, the customer sees your first name and profile photo, in their
language. Apps built on the iOS or Android SDK get the same name and photo. On a
messaging channel there is no announcement, so say hello.

### When does the AI start answering again?

**Allow AI replies** in the ticket's menu hands the conversation back and closes
the ticket. With **Resume AI when all tickets close** on, AI also returns once
the last open ticket closes. Human-first conversations turn that setting off, so
a teammate has to choose **Allow AI replies**.

### Which plan includes Helpdesk?

Standard and up. Helpdesk configuration, enabling escalation actions and the
Helpdesk API all check for it.

### Can my team answer from Slack instead of the inbox?

Yes, for handoffs on WhatsApp, Messenger, Instagram and email. Reply in the
handoff's thread and tag the app. The reply reaches the customer on their
channel and appears in the ticket under your name.

### Can I take over a Slack conversation?

No. Open the conversation under the agent's **Logs**, choose **Pause
conversation**, and reply in Slack yourself.

### Do AI drafts cost credits?

Yes. Drafts and AI Compose use the agent's selected model and spend message
credits like any other answer. The workspace allowance and the agent's credit
limit both apply.

## Try it

Turn on Helpdesk for one agent, enable **Centillion live chat** on your website,
and ask to speak to someone. A **Live chat** ticket opens in the inbox, and
your reply reaches the customer in the same chat.

> [card] [Start free](https://app.cntillion.com/sign-up?utm_source=docs\&utm_medium=article\&utm_campaign=helpdesk)
>
> Start on the Free plan, or take a seven-day trial of a paid plan. Your agent is live on your site in an afternoon.

> [card] [Book a demo](https://cal.com/patrick-turricelli-smgfks/15min?utm_source=docs\&utm_medium=article\&utm_campaign=helpdesk)
>
> Fifteen minutes with the team, on your own use case.

Or ask the assistant on this page.

## Related

> [card] [What Centillion is](https://cntillion.com/docs/introduction.md)
>
> How the agent, its channels and the helpdesk fit together.

> [card] [Website chat](https://cntillion.com/docs/channels/website.md)
>
> Put the agent on your site and let customers reach your team from it.

> [card] [Helpdesk email settings](https://cntillion.com/docs/helpdesk/email-settings.md)
>
> Support addresses, address checks, preview and signature.


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