Understand queuing logic basics
In this topic, you will learn the basics of how Qmatic's queuing system works. Understanding this gives you the possibility to enhance and optimize the system for your business, and also to know how to interpret and analyze the data that is collected.
Queues and visit numbers
When a customer arrives and selects a service (or checks in for an appointment), a visit number (also called ticket number) is generated in the system. This visit number can be printed on a physical ticket, sent to the customer by text, or shown on a self-service kiosk. The visit number is used to let the customer know when it's their turn.
When a visit is created, the visit is placed in a virtual queue. We recommend using the option to segment customers into different queues, depending on the service they have selected. You can either have one queue per service, or one queue for all services that require the same staff competence, or something else. It depends on the business needs. The queue defines the visit number sequence. Two or more services that belong to the same queue also share the same number sequence, e.g. A001-A999.
When a staff member calls the next customer, the system looks at the staff member’s work profile. This defines from which queue the next visit should be called. The work profile can for example define that a visit should be called from the queue with the longest waiting time. From that queue, the first visit in the queue is called. Usually, this is the visit with the longest waiting time, but there are exceptions.
Difference between queues and pools
Pools work similarly to queues but are used when a customer needs to be temporarily put on hold — for example, to fill in a form — while the staff continues helping others.
In this case, you can transfer the customer to a pool (either a staff pool or a counter pool). The customer can then be called again later, either manually or automatically, depending on the setup. Like queues, pools can be linked to work profiles and follow standard calling rule conditions.
Note
We recommend not using the Call by closest to service level rule with pools. Pools don’t have actual service levels. To prevent errors, the system applies default values:
Staff pool: 0 minutes
Counter pool: 1 minute
These values are placeholders only and should not be used to prioritize calls.
Key terms
Waiting time – The time that the customer has waited in the current queue, without being called. Based on the time the visit was placed in the queue (referred to as “enter queue time”). This value is sometimes referred to as "current waiting time".
Total waiting time – The time since the visit was created (referred to as “visit create time”), minus any transaction time, i.e. the time staff has spent serving the customer.This includes the current queue plus the waiting time in all queues the visit has been in.
Visit lifetime – Time since the visit was created.
Transaction time - The time a staff member spends serving a customer, i.e. the time from the visit is called until the staff member is done providing the service. Transaction time is sometimes referred to as “serving time”.
Appointment waiting time - The time that has passed since the appointment start time. This means that the appointment waiting time is not based on the time when the visit is created (i.e. when the customer checks in).
Let's take an example:
A customer selects a service and a visit is created in Queue A at 11:00. The customer is still waiting at 11:20.
Waiting time: 20 minutes
Total waiting time: 20 minutes
Visit lifetime: 20 minutes
The customer is then called at 11.20 and then transferred to Queue B at 11.45. At 12:00, the following applies:
Waiting time: 15 minutes
Total waiting time: 35 minutes (20 min in Queue A + 15 minutes in Queue B)
Visit lifetime: 60 minutes (35 minutes total waiting time + 25 minutes transaction time)
Sorting logic
To ensure fair queuing and calling of visits — even when customers are transferred between queues — you need to set up a sorting logic:
If you don't actively select to place a visit first or last, the visit lifetime is used to sort visits. See Transfer options
Example 1 – Normal visits
The following example illustrates in which order visits are sorted in a queue when a visit is transferred. We have two queues with three customers in each queue. When visits are inserted into a queue, they are sorted by visit lifetime. So the visit that was created first is placed first in line.
Visit number | Waiting time (based on enter queue time) | Visit lifetime (based on visit create time | Visit create time |
---|---|---|---|
A1 | 00:30 | 00:30 | 12:00 |
A2 | 00:20 | 00:20 | 12:10 |
A3 | 00:10 | 00:10 | 12:20 |
Visit number | Waiting time (based on enter queue time) | Visit lifetime (based on visit create time | Visit create time |
---|---|---|---|
B1 | 00:25 | 00:25 | 12:05 |
B2 | 00:15 | 00:15 | 12:15 |
B3 | 00:05 | 00:05 | 12:25 |
At 12:30, a staff member with work profile that is calling from both queues based on max visit lifetime calls a visit. Visit A1 will then be called first. Let's say visit A1 is served for 10 minutes and is then transferred (sorted, based on visit lifetime) to Queue Two, at 12:40. The two queues now look like this:
Visit number | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|
A2 | 00:30 | 00:30 | 12:10 |
A3 | 00:20 | 00:20 | 12:20 |
Visit number | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|
A1 | 00:00 | 00:40 | 12:00 |
B1 | 00:35 | 00:35 | 12:05 |
B2 | 00:25 | 00:25 | 12:15 |
B3 | 00:15 | 00:15 | 12:25 |
Visit A1 now has a total waiting time of 30 minutes, a transaction time of 10 minutes, a waiting time (in the current queue) of 0 minutes and a visit lifetime of 40 minutes. The visit lifetime determined the position of Visit A1 when it was transferred into Queue Two. If we still use a work profile that calls by max visit lifetime, the visits will now be called in the following order: A1, B1, A2, B2, A3, B3.
Example 2 – Appointment visits
The following example illustrates how the values are calculated for appointment visits, how appointment visits are sorted when they are transferred and in which order the visits are called.
Note
What differs an appointment queue from a normal queue is that visits in an appointment queue are sorted according to the appointment start time. Also, the visit lifetime and the waiting time in an appointment queue is based on the appointment start time.
In this example, we have two queues with three customers in each queue. One of the queues is an appointment queue.
Visit No. | Waiting time | Appt waiting time | Appt visit lifetime | Visit create time | Appt start time |
---|---|---|---|---|---|
A1 | N/A | 00:30 | 00:30 | 12:00 | 12:10 |
A2 | N/A | 00:20 | 00:20 | 12:10 | 12:20 |
A3 | N/A | 00:10 | 00:10 | 12:35 | 12:30 |
Note that Visit A3 checked in 5 minutes late. However, the appointment waiting time is calculated based on the appointment start time, the appointment waiting time is 10 minutes.
Visit No. | Waiting time | Appt waiting time | Visit lifetime | Visit create time | Appt start time |
---|---|---|---|---|---|
B1 | 00:28 | N/A | 00:28 | 12:12 | 12:10 |
B2 | 00:25 | N/A | 00:25 | 12:15 | 12:20 |
B3 | 00:15 | N/A | 00:15 | 12:25 | 12:30 |
At 12:40, a staff member with work profile that is calling from both queues based on max visit lifetime calls a visit. Visit A1 will then be called first. Let's say visit A1 is served for 10 minutes and is then transferred (sorted, based on visit lifetime) to Queue Two, at 12:50. The two queues now look like this:
Visit No. | Waiting time | Appt waiting time | Appt visit lifetime | Visit create time | Appt start time |
---|---|---|---|---|---|
A2 | N/A | 00:30 | 00:30 | 12:10 | 12:20 |
A3 | N/A | 00:20 | 00:20 | 12:35 | 12:30 |
Visit No. | Waiting time | Appt waiting time | Visit lifetime | Visit create time | Appt start time |
---|---|---|---|---|---|
A1 | 00:00 | N/A | 00:50 | 12:00 | 12:10 |
B1 | 00:28 | N/A | 00:28 | 12:12 | 12:10 |
B2 | 00:25 | N/A | 00:25 | 12:15 | 12:20 |
B3 | 00:15 | N/A | 00:15 | 12:25 | 12:30 |
When visits in appointment queues are transferred sorted to a normal queue, it’s when the customer checked in (visit create time) that determines where the visit is placed. So, Visit A1 has been transferred sorted, based on the visit create time. If we still use a work profile that is calling from both queues, based on max visit lifetime, the visits will be called in the following order: A1, B1, B2, A2, B3, A3.
If we would instead want to prioritize calling the appointments in the appointment queue as close to the appointment time as possible, we could set up a calling rule that calls based on closest to service level and set the service level for Appointment Queue One to 0 minutes and the service level for Queue Two to e.g. 30 minutes. The visits would then be called in the following order: A2, A3, A1, B1, B2, B3.
Note
It is never possible to transfer visits from a normal queue or pool to an appointment queue.
Example 3 – Multi-service visits
Let's say that a customer needs both a passport and an id card. That would be a typical multi-service visit.
When entering the branch, the customer would select both services and since the two services target different queues, the first service, passport, would define which queue the visit ends up in to start with. Once the passport service has been provided, the visit will be automatically transferred to the queue of the second service, id card, based on visit lifetime.
So, we have two queues, with three customers in each queue. One of the visits is a multi-service visit.
Visit Number | Service | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|---|
A1 | Computers + Refrigerators | 00:30 | 00:30 | 12:00 |
A2 | Computers | 00:20 | 00:20 | 12:10 |
A3 | Computers | 00:10 | 00:10 | 12:20 |
Visit Number | Service | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|---|
B1 | Refrigerators | 00:25 | 00:25 | 12:05 |
B2 | Refrigerators | 00:15 | 00:15 | 12:15 |
B3 | Refrigerators | 00:05 | 00:05 | 12:25 |
At 12:30, a staff member with work profile that is calling from both queues based on max visit lifetime calls a visit. Visit A1 will then be called first. Let's say visit A1 is served for 10 minutes and is then finished. As it is a multi-service visit, it is then automatically, transferred (sorted, based on visit lifetime) to Queue Two, at 12:40. The two queues now look like this:
Visit Number | Service | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|---|
A2 | Computers | 00:30 | 00:30 | 12:10 |
A3 | Computers | 00:20 | 00:20 | 12:20 |
Visit Number | Service | Waiting time | Visit lifetime | Visit create time |
---|---|---|---|---|
A1 | Refrigerators (Past: Computers) | 00:00 | 00:40 | 12:00 |
B1 | Refrigerators | 00:35 | 00:35 | 12:05 |
B2 | Refrigerators | 00:25 | 00:25 | 12:15 |
B3 | Refrigerators | 00:15 | 00:15 | 12:25 |
Visit A1 now has a total waiting time of 30 minutes, a serving time of 10 minutes, a waiting time of 0 minutes and a visit lifetime of 40 minutes. The visit lifetime determined the position of Visit A1 when it was placed into Queue Two after the first service was served. If we still use a work profile that is calling from both queues, based on max visit lifetime, the visits will be called in the following order: A1, B1, A2, B2, A3, B3.
Transfer options
When you transfer a visit, the following transfer options are available:
Sorted: According to visit lifetime.
Note
Visits that are transferred with delay are also transferred according to visit lifetime.
First: To first place in line.
Note
A visit can never be transferred first into a queue or pool and be placed before another visit that was already transferred first. Thus, if you try to do two transfer first to the same queue, the visit that is transferred second will not end up first in the queue. It will be inserted after the last visit with sorting policy "first".
Last: To last place in line.
This image illustrates the different options when visits are transferred and sorted into other queues.
