Conversation Monitor: Agent and Customer SLA Guide

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

  1. Other services tell conversation-monitor what happened in a conversation.

  2. conversation-monitor starts, stops, or resets the right timer(s).

  3. When a milestone or deadline is reached, it notifies the rest of the platform.

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