Tone Detection

Set up Tone Detection so a role is pinged when a customer sounds angry, frustrated, upset, or confused, and understand the Enterprise sentiment journey

Tone Detection reads the emotional tone of a customer's messages in a ticket and, for the tones you choose, pings a role with a 🎭 Tone Alert card in your logs channel. It runs until a staff member replies, then stops. This page is for the admin who wants the team warned before a conversation goes wrong. The related Sentiment Analysis feature, which records how a customer's mood changed over a whole ticket, is covered at the end.

Tone Detection is available on Pro and Enterprise and needs Enable AI Features on the General tab plus a logs channel. The Customer Sentiment Journey is a separate Enterprise feature. Upgrade your plan

Setup

Open the Conversation tab

Go to Dashboard → Bots → your bot → Servers → the server → AI & Knowledge → AI Features → Conversation and find Tone Detection.

Enable it

Click Edit and switch on Enable Tone Detection.

Add tone actions

Click Add Action, choose a tone, choose Ping Role, and select the role. Repeat for each tone you want alerts for. Tones without an action are ignored.

Set timing and save

Choose an Analysis Mode and a Delay Before Analysis, then click Save All.

Settings

SettingValuesDefaultWhat it does
Enable Tone DetectionOn, OffOffMaster switch for this feature
Analysis ModeFirst Message Only, First 5 Messages, Smart DetectionSmart DetectionFirst Message Only analyses the first customer message at once. First 5 Messages waits for up to five messages and judges the overall tone. Smart Detection picks its moment and waits if staff reply quickly
Delay Before Analysis (seconds)30 to 30030The context window: the bot waits this long after the customer's last message, and the timer resets when they send another
Tone ActionsOne row per tone: Ping Role with a role, or Do NothingNoneWhat to do when each tone is detected

Tones

ToneTypical signs
AngryCapital letters, profanity, threats
FrustratedRepeated complaints, impatience
UpsetDisappointment, sadness
ConfusedUncertainty, repeated questions
HappyThanks, positive words
NeutralPlain factual messages

What happens

  1. A customer sends a message in a ticket.
  2. The bot waits Delay Before Analysis seconds after their last message and reads the messages allowed by the Analysis Mode.
  3. The AI classifies the tone.
  4. If that tone has a Ping Role action, a 🎭 Tone Alert card is posted to the logs channel. It mentions the role and shows AI detected Frustrated tone in ticket #ticket-0412, then Detected Tone, Confidence, User, and AI Analysis with the reasoning.
  5. Once a staff member replies in the ticket, analysis stops for that ticket to respect the customer's privacy.

The customer sees nothing. The card goes to the logs channel only.

Worked example

A moderation team wants to know about angry customers immediately and about confused ones so a patient helper can step in.

ToneAction
AngryPing Role: @Senior Support
FrustratedPing Role: @Senior Support
ConfusedPing Role: @Helpers
Upset, Happy, NeutralNo action

With Smart Detection and a 45-second delay, a customer who writes this is the THIRD time I've asked followed 20 seconds later by nobody answers here is analysed once, 45 seconds after the second message, and @Senior Support is pinged with a Frustrated alert.

Sentiment journey (Enterprise)

On Enterprise, the Conversation tab also shows a Sentiment Analysis card. It is on by default and records how the customer's mood changed across the ticket.

  • The analysis runs automatically when a ticket is closed and needs at least 3 customer messages.
  • Open the ticket in the dashboard and choose the Sentiment tab to see the Customer Sentiment Journey. A ticket that is still open shows Sentiment analysis runs automatically when a ticket is closed; a short ticket shows how many customer messages it has and the minimum required.
  • The history is stored on the ticket and follows your ticket retention policy.

Limits and gotchas

Alerts need a logs channel. Without one the analysis still runs but no alert is posted; run /setup to choose a logs channel.

  • The minimum delay is 30 seconds. Entering a lower value is rounded up when you save.
  • A tone with Do Nothing produces no card, so add Ping Role actions only for the tones you want to hear about.
  • Tone Detection alerts staff; it does not change priority or escalate the ticket. Use Priority Detection for priority.

Privacy

Message content is analysed only to classify tone and, on Enterprise, to build the sentiment journey. Analysis stops once staff reply. Data is not shared with third parties or used for anything else.

Troubleshooting

SymptomCauseFix
No alerts at allThe feature or the AI master switch is off, no tone has a Ping Role action, or no logs channel is configuredCheck both switches, add actions, and set a logs channel with /setup
The alert shows Unknown Role in the dashboardThe role was deleted in DiscordEdit the action and pick a current role
Alerts arrive after staff already repliedThe analysis started before the replyShorten Delay Before Analysis or use First Message Only
Too many alertsNeutral or Happy have a Ping Role action, or the delay is shortRemove those actions and use Smart Detection
No sentiment journey on a ticketThe ticket is still open, has fewer than 3 customer messages, or the owner's plan is not EnterpriseWait for the close, or check the plan

Common questions

Which plan do I need? Pro or Enterprise for Tone Detection. The sentiment journey on the ticket page needs Enterprise.

Does the customer see the alert? No. Alerts go to the logs channel, which customers cannot see.

Can I alert different roles for different tones? Yes. Add one action per tone, each with its own role.

Why did the alerts stop mid-ticket? Analysis stops once a staff member replies in the ticket. That is by design.

Can it escalate or change priority? No. It only pings. Pair it with Priority Detection or Auto-Route for those actions.

Where is the sentiment journey? Open the ticket in the dashboard and choose the Sentiment tab. It fills in after the ticket closes.

Last updated on

On this page