Skip to main content

How to setup round robin/automatic/auto chats assignment workflow?

This article describes how to setup auto assignment workflow in Live Helper Chat. Auto assignment works two ways out of the box.

  • Live auto assignment - means chats are auto assignment on chat sync event in visitor widget. This allows auto assignment work even if there is no cronjob running. Disadvantage is it does not respect FIFO order if you have a lot of chats.
  • Using workflow cronjob - this is a recommended way of having auto assignment setup. You should also disable live auto assignment in that case. Using cronjob chats will be assigned in FIFO order.
tip
  • Operators must be explicitly assigned to specific departments to participate in the auto assignment workflow. This is configured in each operator's account settings.

Introduction

In department you can find auto assignment settings.

Attributes definition

Maximum number of active chats user can have at a time, 0 - unlimited

You can set how many actives chats user can have at a time.

If this variable is not set we would assign chat to user if

  • Either operator does not have max chats limit OR and his active chats is less than

If this variable is set we would assign chat to user if

  • Either operator does not have max chats limit set AND active chats ir less than defined maximum number of chats in department.
  • OR
  • Either he has limit set and number of chats is less than number of active chats he has now

Maximum number of department active chats, 0 - unlimited

Auto assignment workflow would be executed only if department is having less active chats than defined amount. If this limit is reached, new chats will not be assigned to any operator.

Automatically assign chat to another operator if operator did not accepted chat in seconds, 0 - disabled

If you set 10 means operator would have 10 seconds to accept a chat before chat is assigned to another operator.

tip
  • Back office is checking for a new chats every 10 seconds by default. You should decrease that time to 3 or 4 seconds in. chat configuration
  • Chat is assigned to operator even if operator is in invisible mode. Operator participating in auto assignment workflow should be online and in visible mode. If invisbile operator opens a chat nothing will happen and chat will be assigned to another operator!

Minimum delay between chat assignment to operator

Then we assign chat to one operator we can give some delay before another chat can be assigned to the same operator.

Exclude inactive chats

Pending and active chats which visitors has closed chats explicitly or visitors being redirected to survey will be excluded

Assign chat to lowest number of chats having operator

We will try to assign chat first to operator who has the lowest number of chats

Try to assign chats first to the same language speaking operators

Operator in their accounts can choose what languages they are speaking. So it's possible to try first to assign chats to same language speaking operators.

Check for presence of variable && Resume auto assign if chat remains pending for n seconds

  • additional_data.<variable>
  • chat_variable.<variable>

Using this functionality we can allow to participate in auto assignment chats which have custom variables only. By defining time we do these checks only if chat is not older than defined amount of time.

tip

This functionality should be used only by advanced users which want to do some fancy things 😄

Resume auto assign if chat remains pending for n seconds will keep looking for additional chat variables until chat is in the pending queue less than defined amount of time. In other words keep looking for chat variables for that amount of time before continuing default auto assignment workflow.

Assign chat by operator priority

Once everything is set up. It will assign chats first to agents with higher assignment priority.

In user account once you are assigning operator to department you can set his assignment priority. Once you activate this option in department

$sort = 'last_accepted ASC'; // Sort by default by last accepted chat
if (should I sort by `lowest number of chats having operator`) {
$sort = 'active_chats ASC, last_accepted ASC';
}

if (should I sort by agent assignment priority) {
$sort = 'assign_priority DESC, '.$sort;
}

Assignment priority can be set in user account per department or department group.

Chat priority queue

First, enable it by checking Enable chat priority queue in the department's auto-assignment settings.

Optionally, you can also sort agents by Assign chat by operator priority also within the chat priority queue. This applies the same assign_priority ordering used by the regular queue (see Assign chat by operator priority).

Department settings

These settings are configured in the department's Auto assignment tab, inside the Chat priority queue fieldset:

SettingDescription
Enable chat priority queueMaster switch. When enabled, chats that fall within the priority range are processed by the chat priority queue first.
Assign chat by operator priority alsoSort eligible operators by their assign_priority (highest first), on top of the default last_accepted ordering.
Assign only operators who have opted into the chat priority queueWhen enabled, only operators who have Opt into chat priority queue checked in their user settings are eligible for the priority queue. Operators without that flag stay in the regular queue.
Minimum agent assignment priorityIf set above 0, only operators whose assign_priority is >= this value are considered for the priority queue.
Minimum chat priorityChats with priority below this value are not processed by the chat priority queue and fall through to the regular queue.
Maximum chat priorityChats with priority above this value are not processed by the chat priority queue and fall through to the regular queue.

User (operator) settings

These settings are configured per operator in their department assignment modal (see user account):

SettingDescription
Operator assignment priority (assign_priority)Higher value = picked first when Assign chat by operator priority (or also) is enabled.
Min chat priority (chat_min_priority)Operator will only receive chats with priority >= this value from the chat priority queue. 0 = no lower limit.
Max chat priority (chat_max_priority)Operator will only receive chats with priority <= this value from the chat priority queue. 0 = no upper limit.
Opt into chat priority queue (only_priority)When checked, the operator is excluded from the regular auto-assignment queue. They can only receive chats via the chat priority queue.

⚠️ Operators must be explicitly assigned to the department (or department group) — simply checking "All departments" in user settings is not sufficient.

Scenario-based setup guides

Two settings control which queue an operator belongs to:

  • Opt into chat priority queue — operator-level setting (per department or department group).
  • Assign only operators who have opted into the chat priority queue — department-level setting.

The scenarios below show how to combine them for common use cases. Assume a department priority range of 610 for all examples.


Scenario 1: Operators work in both queues (default mixed setup)

Goal: All operators can receive both regular chats (priority 05) and priority chats (610).

Department configuration:

  • Enable chat priority queue
  • Assign only operators who have opted into the chat priority queue — keep disabled
  • Set Minimum chat priority to 6 and Maximum chat priority to 10

Per-operator configuration (for every operator):

  • Opt into chat priority queue — keep disabled
  • Set Min chat priority and Max chat priority to 0 (or match the department range if you want to restrict some operators)

Result: Chats in 610 are processed by the chat priority queue and can be assigned to any operator whose priority ranges match. Chats in 05 use the regular queue and are also available to all operators.


Scenario 2: Separate pools — priority-only and normal-only operators

Goal: A dedicated team handles priority chats (610), while the rest of the team handles only regular chats (05).

Department configuration:

  • Enable chat priority queue
  • Assign only operators who have opted into the chat priority queue — enable this
  • Set Minimum chat priority to 6 and Maximum chat priority to 10

Per-operator configuration:

For priority-only operators:

  • Opt into chat priority queue
  • Set Min chat priority to 0 and Max chat priority to 0 (or match 6/10)

For normal-only operators:

  • Opt into chat priority queue — keep disabled
  • Set Min chat priority to 0 and Max chat priority to 0

Result: Priority chats go only to the priority team. Normal chats go only to the normal team. The two pools are completely separate.


Scenario 3: Priority-only operators (dedicated priority queue)

Goal: Certain operators should only receive priority chats and never be assigned regular chats.

Department configuration:

  • Enable chat priority queue
  • Assign only operators who have opted into the chat priority queue — can be enabled or disabled depending on whether you want non-priority operators to also get priority chats (see Scenario 2 or 4)

Per-operator configuration (for priority-only operators):

  • Opt into chat priority queue
  • Set Min chat priority and Max chat priority to match the department range (e.g., 6 and 10)

Result: These operators are removed from the regular queue entirely. They only receive chats that pass through the chat priority queue.


Scenario 4: Normal-only operators (excluded from priority queue)

Goal: Certain operators should never receive priority chats, only regular chats.

Department configuration:

  • Enable chat priority queue
  • Assign only operators who have opted into the chat priority queue — enable this

Per-operator configuration (for normal-only operators):

  • Opt into chat priority queue — keep disabled
  • Set Min chat priority to 0 and Max chat priority to 0

Result: Because Assign only operators who have opted into the chat priority queue is enabled at the department level, these operators (who do not have the operator-level flag) are excluded from the priority queue. They only receive regular chats.


Scenario 5: Different operators handle different priority ranges

Goal: Within the same department, partition priority chats so that different operators (or teams) handle chats of different priority levels. For example:

  • Operator Alice handles only priority-100 chats (VIP customers)
  • Operator Bob handles only priority-200 chats (enterprise customers)
  • Operator Carol handles both 100 and 200
  • Operators Dave and Eve handle only regular chats (099)

The setup is broken into two parts: department-level changes (apply once) and per-operator changes (apply per user).


Department configuration (apply once)

These settings are configured in the department's Auto assignmentChat priority queue fieldset:

SettingValueWhy
Enable chat priority queue✅ EnableTurns on the priority workflow
Minimum chat priority100Chats below 100 use the regular queue
Maximum chat priority200Chats above 200 use the regular queue
Assign only operators who have opted into the chat priority queueSee sub-scenarios belowControls whether normal operators are excluded from the priority queue

Per-operator configuration

Each operator's settings are in their department assignment modal (see user account):

OperatorMin chat priority
(chat_min_priority)
Max chat priority
(chat_max_priority)
Opted into chat priority queue
(only_priority)
Handles
Alice100100See belowPriority-100 only
Bob200200See belowPriority-200 only
Carol100200See belowPriority 100 and 200
Dave00❌ disabledRegular only
Eve00❌ disabledRegular only

The only_priority flag (Opt into chat priority queue) and the department's Assign only operators who have opted into the chat priority queue setting work together. Two common sub-scenarios:


Sub-scenario 5A: Mixed — priority operators also receive regular chats

Goal: Alice, Bob, and Carol can receive both priority and regular chats. Dave and Eve handle regular chats only.

Department:Assign only operators who have opted into the chat priority queue — disabled

Per-operator only_priority flag:

OperatorOpted into chat priority queue
(only_priority)
Alice❌ disabled
Bob❌ disabled
Carol❌ disabled
Dave❌ disabled
Eve❌ disabled

Result:

Chat priorityAssigned to
099 (regular)Alice, Bob, Carol, Dave, Eve
100Alice, Carol
200Bob, Carol

Alice, Bob, and Carol participate in both queues. Their chat_min_priority/chat_max_priority ranges only restrict which priority chats they receive — regular chats are unaffected.


Sub-scenario 5B: Separated — strict priority-only and normal-only pools

Goal: Alice, Bob, and Carol receive only priority chats. Dave and Eve receive only regular chats. No overlap.

Department:Assign only operators who have opted into the chat priority queue — enabled

Per-operator only_priority flag:

OperatorOpted into chat priority queue
(only_priority)
Alice✅ enabled
Bob✅ enabled
Carol✅ enabled
Dave❌ disabled
Eve❌ disabled

Result:

Chat priorityAssigned to
099 (regular)Dave, Eve only
100Alice, Carol
200Bob, Carol

With Assign only operators who have opted into the chat priority queue enabled, Dave and Eve are excluded from the priority queue. Alice, Bob, and Carol must have only_priority enabled to be eligible. The pools are completely separated.


Fallback behavior

When Assign only operators who have opted into the chat priority queue is enabled, the system tries the chat priority queue first. If no eligible priority operator is found (all are offline, at capacity, or priority ranges don't match), the chat falls through to the regular assignment workflow.

To keep priority chats strictly separated, ensure:

  • Priority operators are online and within capacity limits
  • Their chat_min_priority / chat_max_priority ranges cover the expected chat priorities
  • The department's minimum/maximum chat priority range is correctly set

Workflow cronjob influence

If you want auto assignment workflow to work independently of what visitor does (still on site or not) you have to be running workflow cronjob. I suggest in that scenario run cronjob every 5 seconds.

Disable live auto assignment

Usually auto assignment happens when visitor is waiting untill someone accepts a chat. If you are running workflow cronjob it makes sense uncheck this as cronjob will do this part. This also will make visitor UI feel faster.

Disable live auto assign option can be found here

System configuration -> Live help configuration -> Chat configuration -> Misc

How to deny the operator to open all pending chats?

By default operator can open all pending chats. Not only assigned to him. If you are using auto assignment workflow and do not want to allow an operator to open all pending chats just remove this permission.

'chat','open_all'

How to deny the operator to open all chats?

If you remove this permission operator will be able to open chats only where he is an owner.

'lhchat','allowopenremotechat'

How automatically open assigned chat for an operator?

  • You have to in user account check Automatically accept assigned chats
  • Operator has to have enabled Pending chats list enabled or My pending and active chats list enabled

How to show pending chats order from oldest to newest?

You can change pending chats order in chat configuration

How prioritise a chat to be assigned first if chat is waiting more than X amount of time?

This is usefull in case you are having long queue and chat's wait time becomes very long. As an example if chat is waiting more than 10 minutes you want it to be assigned first.

Navigate to

System configuration -> Chat configuration > Misc

Enter value for this field Chats waiting in pending queue more than n seconds should be auto-assigned first. Time in seconds'

Sample

To user explicitly has to be assigned department. It's not enough just check all departments. Within each department have to be checked department.

Department adjustment

You have in department "Auto assignment" secion enable automatic chats transfer.

Users adjustment

By default users sees all pending department chats. To disable that and show only to him assigned pending chats you have to

  • Edit user and in "Pending chats" tab, uncheck "User can see all pending chats, not only assigned to him"
  • By default operators do not have permission to choose what pending chats they can see. You can grant permission to choose them personally what list he want's to see. Assigned to operators role permission
  • "lhuser" => "allowtochoosependingmode" | "Users, groups management" => "Allow user to choose what pending chats he can see, only assigned to him or all."
  • User has to be online for chat being assigned to him
  • If you want that assigned chat would be opened automatically for user. User in his account has have checked "Chats" => "Automatically accept assigned chats"
    • If user does not see Chats tab in his account you have to give operators role this permission Module - (lhuser) Function - (allowtochoosependingmode)
  • Also in "Visible lists" worh checking "My pending and active chats list enabled" so user would see new widget where only to him assigned active and pending chats would be presented. For user to be able to change what he sees he has to have this permission
    • Module - ('lhuser'), Function - ('change_visibility_list')

Chat acceptance workflow

This information you see once you move your mouse over assignment action icon

  • click_notification - notification was clicked
  • click - widget was clicked or chat list
  • opened_chats - chat was loaded because it was opened before
  • alert_open - alert was shown and operator opened a chat
  • transfer_open_background - transferred chat was opened in background mode
  • transfer_open - transferred chat was opened
  • auto_accept - chat was auto opened because auto accept is turned on
  • auto_accept_transfer - transferred chat was auto opened because auto accept is turned on
  • view_clicked - chat in the view was clicked
  • support_chat - opened from support_chats list
  • start_chat_by_id - chat was started by startChatByID function
  • channel_message_open - opened by received channel message
  • channel_message_reload - opened by received channel channel message
  • popup_open - chat was opened from popup

I don't understand why chat was assigned to operator A but not operator B?

This is the most common question I get until support managers starts to understand every bit. Here is what you can check

  1. Check is both operator assigned to the department you are checking against. Use user edit window.
  2. Make sure any other setting are the same for those operators.
  3. Check were they online during specific moment. System configuration -> Users -> Online hours choose one user at a time. They both should be online during that moment.
  4. In specific chat which you think was assigned incorrectly move mouse over Assignment icon there you will see currently assigned operator status at that time and next candidate.check
  5. Filter chat list using those two operators to see how chat flow for them.

In this block you will see exactly what was picked as an operator and who is next candidate.

Precaution action

  1. Disable live auto assignment and let workflow cronjob do that. Run cronjob in debug mode.