Last updated: August 2026. Applies to conversation-monitor release 5.9.0.
For event-by-event implementation notes, see Customer & Agent SLA Implementation Details.
Overview
The conversation-monitor service watches live contact center conversations and keeps track of response-time rules. When someone is expected to reply, the service starts a countdown. If they do not respond in time, it notifies the rest of the platform so the business can warn, escalate, or close the interaction.
The service runs two separate timers:
|
Timer |
What it tracks |
Who must respond |
|---|---|---|
|
Agent SLA |
How long the agent has to reply after the customer is waiting |
Agent |
|
Customer SLA |
How long the customer has to reply after the agent or bot spoke |
Customer |
Both timers can be split into milestones (for example, warn at 50%, expire at 100%). These rules are configured per tenant.
The service only applies to contact center conversations. Private or internal team chats are out of scope.
Does conversation-monitor only handle SLA?
No. SLA timing is the main job, but the service also supports related contact center behavior:
|
What it also does |
Why it matters |
|---|---|
|
Hold and resume |
When an agent replies to a held conversation, the service resumes it and notifies other systems |
|
Bot suggestions |
Can prompt the agent with AI suggestions when an agent SLA milestone is reached |
|
Voice and chat coordination |
Voice calls and text channels are handled differently so timers do not conflict |
|
Queue handling |
Customer SLA pauses while the customer is waiting in queue for an agent |
|
Agent join and leave rules |
Covers handover, supervisors joining silently, and wrap-up |
|
Tenant setup |
Loads SLA rules when a new tenant is created |
|
Conversation updates |
Keeps conversation status in sync (for example resumed state, last active channel) |
What it does not do: assign agents, route tasks, send messages to customers, or create conversations. It reacts to events from other CIM services.
Agent SLA
Purpose
Agent SLA measures how long the agent has to respond after the customer is waiting for a reply.
Scope
One timer per conversation, not per channel. If a customer sends a web chat message, the agent SLA clock starts for the whole conversation.
Where the time limit comes from
The allowed response time is set on the conversation by upstream routing or configuration services. conversation-monitor reads that value and runs the timer. Optional milestone rules are configured through the Agent SLA thresholds API.
When the clock starts
|
Situation |
Starts? |
|---|---|
|
Customer sends a message and an agent is assigned |
Yes |
|
Conversation is on hold |
No |
|
Primary agent joins an inbound conversation |
Yes |
|
Outbound conversation (agent contacted customer first) |
No. Waits until the customer replies |
|
Timer already running |
No. Existing clock continues |
|
Another primary agent takes over (handover) |
Timer resets |
When the clock stops
|
Situation |
Stops? |
Notifies other systems? |
|---|---|---|
|
Agent sends a normal reply |
Yes |
No (silent stop) |
|
Agent sends a wrap-up message |
No |
|
|
Agent leaves and no one remains |
Yes |
Yes |
|
Voice call starts |
Yes |
Yes |
|
All agents move to wrap-up |
Yes |
Yes |
When time runs out
If the agent does not respond in time, milestone actions may run first (warning, bot suggestion, and so on). At final expiry, AGENT_SLA_EXPIRED is sent to other services. Downstream systems can escalate, alert a supervisor, or trigger automation.
Special cases
-
On hold: Agent SLA does not start.
-
Voice call active: Agent SLA stops. Chat-based agent SLA does not run during voice.
-
Supervisor silently monitoring: Does not affect agent SLA.
-
Handover: Timer resets instead of running twice.
Customer SLA
Purpose
Customer SLA (also called the inactivity timer) measures how long the customer has to respond after the agent or bot spoke.
Scope
One timer per channel session (web chat, email, Facebook, and so on). Web chat and email in the same conversation each have their own timer.
Where the time limit comes from
The timeout is set on each channel (for example 5 minutes for web chat, 10 minutes for Facebook). conversation-monitor reads that setting. Optional milestone rules use the Customer SLA thresholds API. An empty configuration is valid and means use the full channel timeout.
When the clock starts
|
Situation |
Starts? |
|---|---|
|
Agent sends a message |
Yes, on all open channels in the conversation |
|
Bot sends a message |
Yes, unless conversation is on hold |
|
New channel session opens |
Yes, subject to voice and chat rules |
|
Customer replies on one channel |
Timer starts on other open channels |
|
No agents available (if enabled) |
Yes |
|
Customer is waiting in queue |
No. Timer stays paused |
|
Voice call is active on chat channels |
Chat timers paused |
When the clock stops
|
Situation |
Stops? |
|---|---|
|
Customer replies on that channel |
Yes |
|
Task enters routing queue |
Yes, and session marked as waiting in queue |
|
Primary agent joins |
Yes |
|
Supervisor joins silently |
No. Timer keeps running |
|
Channel session closes |
Yes |
|
Conversation put on hold |
Yes, all customer timers stop |
Queue behavior
When a customer is waiting for an agent in queue, customer SLA stops immediately and does not restart while they are still queued. Normal rules resume once a primary agent joins or the session ends. This prevents customers from being auto-closed for inactivity while waiting in queue.
Multi-channel behavior
-
When an agent replies, customer SLA starts on all open channels.
-
When a customer replies on web chat, that timer stops and other channels (for example email) start their timers.
-
When a voice call starts, voice timer runs and chat timers stop.
-
When a voice call ends, chat timers can restart if the conversation is still active.
When time runs out
Milestone actions may run first. At final expiry, CUSTOMER_SLA_EXPIRED is sent and the session is typically closed for inactivity.
Agent SLA vs Customer SLA
|
|
Agent SLA |
Customer SLA |
|---|---|---|
|
Who must act |
Agent |
Customer |
|
Applies to |
Whole conversation |
Each channel session |
|
Usually starts when |
Customer sends a message |
Agent or bot sends a message |
|
Usually stops when |
Agent replies |
Customer replies |
|
Typical outcome if expired |
Escalation or supervisor alert |
Session closed for inactivity |
|
Affected by queue |
No |
Yes, pauses while queued |
|
Affected by hold |
Will not start |
All timers stopped |
|
Affected by voice |
Stops during voice |
Different rules for voice vs chat |
How the service fits in the platform
-
Other services tell conversation-monitor what happened in a conversation.
-
conversation-monitor starts, stops, or resets the right timer(s).
-
When a milestone or deadline is reached, it notifies the rest of the platform.
-
Other services decide what the customer or agent actually sees (close chat, alert supervisor, and so on).
Reference for operations and support
Events the service listens to
|
Event |
What it means |
Main effect |
|---|---|---|
|
Customer message |
Customer replied or sent a new message |
Start agent SLA; stop or start customer SLA |
|
Agent message |
Agent replied |
Stop agent SLA; start customer SLA; may resume held conversation |
|
Bot message |
Bot replied |
Start customer SLA |
|
Channel session started or ended |
New or closed channel |
Adjust timers for voice vs chat |
|
Conversation paused |
Put on hold |
Stop all customer SLA timers |
|
No agent available |
Routing found no agent |
May start customer SLA if enabled |
|
Agent joined or left |
Agent assigned or disconnected |
Start, stop, or reset agent SLA; pause customer SLA |
|
Task enqueued |
Customer sent to queue |
Pause customer SLA |
|
Reset agent SLA |
External reset command |
Restart agent SLA clock |
Events the service sends out
Agent SLA: AGENT_SLA_STARTED, AGENT_SLA_STOPPED, AGENT_SLA_EXPIRED
Customer SLA: CUSTOMER_SLA_STARTED (milestones only), CUSTOMER_SLA_EXPIRED
Other: CONVERSATION_RESUMED, HOLD_TIMER, TOPIC_STATE_CHANGE, SEND_BOT_SUGGESTION
Configuration
-
Agent SLA thresholds: milestone rules for agent response time (per tenant)
-
Customer SLA thresholds: milestone rules for customer inactivity (per tenant)
-
Run customer SLA when no agent available: whether to start customer timer while waiting for routing
-
Channel timeout: base customer inactivity duration per channel (configured outside this service)
-
Conversation agent SLA duration: base agent response duration (configured outside this service)
-
Tenant webhooks: load or remove SLA rules when tenants are provisioned
Example milestone configuration:
[{"thresholdPercentage": 50, "action": "WARN"}, {"thresholdPercentage": 99, "action": "REMOVE_CHANNEL_SESSION"}]
Percentages are between 1 and 99. The system adds a final 100% step at runtime.
Glossary
|
Term |
Meaning |
|---|---|
|
Contact center conversation (CCM) |
A customer service conversation handled by agents |
|
Channel session |
One active customer interaction on one channel (one chat tab, one email thread) |
|
Agent SLA |
How long the agent has to respond after the customer is waiting |
|
Customer SLA / inactivity timer |
How long the customer has to respond after the agent or bot spoke |
|
Threshold / milestone |
A checkpoint within the total timeout (50% means halfway) |
|
On hold |
Conversation paused; timers stop |
|
Primary agent |
The agent actively handling the conversation |
|
Silent monitor / supervisor |
Observer who can watch but is not the handling agent |
|
Queued session |
Customer waiting in routing queue for an agent |
|
Silent stop |
Timer stops internally without sending a stopped notification |
|
Handover |
Conversation transferred from one primary agent to another |