Virtual Queue Tutorial

Bright Pattern Documentation

Generated: 5/18/2022 10:44 pm
Content is available under license unless otherwise noted.


The Bright Pattern Contact Center Virtual Queue Tutorial explains Bright Pattern's virtual queue option, how to configure it, and how enabling it can affect reporting statistics.

Virtual Queuing, also referred to as the Callback Option, is an enhancement of the regular automatic call distribution method (ACD) used in inbound call centers. During periods of significant wait times, this option allows customers to hang up the call while keeping their position in the service queue and to receive a callback when it is their turn to be connected to an agent. The benefits of using virtual queuing include:

An agent receiving a callback reservation notification

How It Works

Bright Pattern Contact Center Virtual Queue works in the following way:

For each incoming service call, the system calculates its estimated waiting time (EWT) in the queue. If this time exceeds a threshold EWT value preconfigured for the given service, the system notifies the calling customer about the wait time and offers the customer the option of receiving a callback when it is the customer's turn to be connected to an agent. The customer can request the callback to be made to the phone from which the customer is calling, or to a different number that the customer can enter using the phone keypad. The original live call is then disconnected while the customer’s position in the service queue is maintained by the system as if the customer had remained on the line, hence the name Virtual Queuing.

When it is the customer’s turn to be connected to an agent, the system makes an outbound call (callback) to the designated callback number. Upon answer, this call is connected to an available agent.

Initiation of the callback may be done either on prediction that an agent will become available around the expiration of EWT calculated for the given call or via explicit agent reservation.

When agent reservation mechanism is used, the system will wait for an agent to become available before making a call. When the agent becomes available, she is reserved for the given call. The agent is then notified by a pop-up window that she has been reserved for a callback; this window includes the optional checkbox Dont's show this to me again should she not want to see the pop-up on future callback reservations.

The incoming callback reservation window

While explicit agent reservation guarantees agent availability to take a callback, it is less efficient in terms of agent utilization as agents will have to spend some time in a reserved state; it can be recommended for services with small numbers of agents where EWT calculation is usually less precise.

When the EWT-based mechanism is used, the callback attempt is made a few seconds before EWT expiration based on the prediction that an agent will have become available by the time the callback is answered by the customer. If an agent does not become available at that time, the answered call is placed in the first position in the service queue to be connected to the next available agent. An interactive voice response (IVR) announcement can be played for the answered callback to prevent the customer from hanging up a call if it cannot be immediately connected to an agent.

Generally, for services with larger pools of agents, the EWT-based mechanism will reliably connect answered callbacks to agents without compromising their utilization.

Subsequent processing of answered callbacks delivered to agents is no different from the processing of calls waiting in the queue.


To configure a virtual queue (VQ) for your existing inbound voice services, follow these steps:

Step 1: Select the scenario that will distribute calls to the services that will have VQ enabled

  1. Log in as Admin to the Contact Center Administrator application.

  2. Navigate to Scenarios > Voice.

  3. Select the scenario that is used for the distribution of calls to the services for which you would like to enable VQ. In the example shown, the scenario selected is called "Inbound Service."

Select the scenario that will be used for virtual queue

Step 2: Rename the scenario

  1. Double-click the scenario name or click the Edit button to open the scenario in the Scenario Builder application.

  2. Using the Save As button, save this scenario under a new, unique name. This name can be anything you like.

Save the scenario with a new name to create a duplicate scenario with your VQ settings saved

Step 3: Locate the Find Agent block in Scenario Builder

  1. Double-click the scenario name, or click the Edit scenario Edit-Scenario-Button.png button to open the scenario in the Scenario Builder application.

  2. Within this new scenario, select the Find Agent block that is used to distribute calls to the particular service for which you would like to enable VQ.

The Find Agent block is where you will specify VQ properties

Step 4: Enable VQ and specify the Estimated Wait Time Threshold

  1. In the Virtual Queue option section of this Find Agent block, select the checkbox to enable VQ.

  2. Then specify the estimated wait time (EWT) threshold, in seconds. The VQ option will be offered only if the EWT of a given call exceeds the threshold value entered here. In the example shown, the threshold value is zero (0) seconds.

Virtual Queue option in Find Agent block

Step 5: Enable callback

In the Callback button drop-down menu, select a number. This number is the dial pad digit that the caller will press to accept the VQ option.

Select the numeric digit that the caller should press to accept the VQ option

Step 6: Record the EWT announcement to play for callers

  1. Create the EWT Announcement. For example, an EWT announcemnt might include The estimated waiting time is <number of minutes or seconds> where "Estimated Waiting Time" is a voice segment of the EWT type.

    Note: If you have already created one, skip this step and proceed to Step 7.

  2. To create a new prompt/announcement, find EWT Announcement in the Prompts list and click select.

    Select the desired announcement to use

  3. In the Prompts list window that appears, click Add new.

    If you do not already have an EWT announcement, you must add a new one

  4. In the New prompt window that appears, type the name of the announcement.

  5. Click Add voice segment.

  6. In the drop-down menu the appears, select EWT and click the green checkmark.

    Select the segment to add to the announcement

  7. Click Add voice segment again.

  8. In the drop-down menu the appears, select Voice and type the text that you wish to be spoken in the announcement. Typically, the text is The estimated waiting time is. This describes the spoken announcement that the caller will hear on the phone.

  9. Click upload to add a voice recording of your announcement text.

    Select the Voice segment to add to the announcement

  10. You now have two segments in your EWT Announcement. Click Apply to save your changes.

  11. In the Prompts list that appears again, select the EWT Announcement you just created, and click Select.

Step 7: Create the Virtual Queue availability announcement

The Virtual Queue availability announcement will be used to offer the VQ option to the caller. For example, the announcement might include To hang up now and have us call you back once a representative is available, press [digit] at any time, where digit is the digit selected in Step 5. To create this announcement, follow the instructions given in Step 6 of this procedure:

  1. Beside Virtual Queue availability announcement:, click select.

  2. In the Prompts list that appears, click Add new.

  3. Add a voice segment, naming it "Virtual Queue availability announcement" and typing "To hang up now and have us call you back once a representative is available, press 1 at any time." in the content box.

  4. Upload the voice recording that will be played to callers.

  5. Click Apply to save your changes.

  6. In the Prompts list that appears again, select the new announcement you just created, and click Select.

Your Prompts section of the Find Agent block now includes the two announcements you created.

Find Agent > Properties > Prompts

Step 8: Define Request Callback block properties

For the Callback exit of the Find Agent block, insert a Request Callback block and define its parameters.

In the Find Agent block, below the Callback exit, place a Request Callback block


The parameters are described as follows:

Request Callback block

Step 9: Use an IVR prompt to inform the customer that he/she is receiving a callback

The normal exit of the Request Callback block is taken when the callback attempt is answered before the specified No Answer Timeout expires. Instead of connecting the answered call directly to the Find Agent block for immediate distribution to an agent, it is good practice to use an IVR prompt to announce to the customer that this is the requested callback. This explains the purpose of the call to the customer and, more importantly, prepares the caller for a possible short waiting time in case an agent is not immediately available.

In the Scenario Example given in this guide, the Menu block is used to make such an announcement and to wait for customer’s confirmation before passing this call to the Find Agent block for distribution.

Step 10: Define when conditional exits should be taken

Use the conditional exits of the Request Callback block to define what happens when the callback attempt meets various "abnormal" conditions, such as No Answer or Busy. In the Scenario Example given in this guide, the call is terminated under any such conditions, which is shown via the Exit blocks placed beneath each conditional exit.

Exit blocks are placed beneath each conditional exit of the Request Callback block

Step 11: Enable VQ for any other services and save your work

  1. Repeat Step 3 through Step 10 for other Find Agent blocks of this scenario that are used to distribute calls to other services for which you would like to enable VQ.

  2. Save the new scenario by clicking the Save button at the bottom of Scenario Builder.

Step 12: Complete remaining VQ configuration steps in Contact Center Administrator

  1. To complete the remaining VQ configuration steps, open the Contact Center Administration application.

  2. Log in as Admin.

Step 13: Activate the VQ function for the service desired

The configured VQ will not be operational until it is explicitly activated for the desired services.

  1. To activate the VQ function for a particular service for which it was configured as described above, select the Enable callback functionality checkbox in the Properties tab of that service.

  2. Before you activate the VQ function for all other services where it may have been configured, consider using the Virtual Queue Report to monitor VQ performance within the service where it has been activated and to adjust its parameters if necessary. See the Reporting Reference Guide for more information on reports. See also section Reporting for more information.

Step 14: Test the scenario

As with any other significant service configuration change, the new scenario should be tried in a test environment.

  1. Create a test dial-in scenario entry, associate it with your new scenario and make some test calls imitating various VQ conditions to make sure everything works as you expect.

  2. Pick a time when your call center is closed for business and replace your current production scenario with the VQ-enabled scenario in the dial-in scenario entries where the current scenario is used. (These scenario entries will appear in the Scenario Entries tab when you select your current scenario in the Scenarios > Voice list view. To make the replacement, click one of the listed dial-in scenario entries and select the new scenario from the Scenario drop-down list.)


Scenario Example

This section provides a fragment of an inbound voice scenario with Virtual Queue (VQ) related logic. This example scenario is based on the Virtual Queue (Callback) scenario template. You can open this template in the Scenario Builder application and review the settings of each block involved in this scenario.

For more information on how to create a scenario from a template, refer to the Contact Center Administrator Guide, section Scenarios Overview.


Scenario Flow

A scenario is comprised of a series of actions that are initiated by scenario blocks. The main flow of blocks in this VQ-enabled scenario, from top to bottom, is briefly explained as follows.

The Play Prompt block greets the caller.

The Play Prompt block begins the scenario. The caller hears the initial announcement (i.e., a welcome message or a prompt for more information).

Play Prompt block

The Find Agent block facilitates whether callers wait in queue or accept the callback option.

The Virtual Queue option is offered in the Find Agent block, as described in section Configuration of this tutorial.

Callers that prefer to wait online will remain in the Find Agent block until it is their turn to be connected. Callers that accept the Virtual Queue option will exit this block via the Callback exit.

Find Agent block

The No Agents block gives the caller a way to exit the scenario if there are no agents available.

If no agent is available to accept the call, the scenario will take the No Agents exit.

No Agents conditional exit

Callback properties are handled by Set Variable and If blocks.

Because virtual queue/callback is enabled for this scenario, the caller is given the option to receive a callback if no agents are available or if the caller does not want to wait in queue. A series of Set Variable blocks and If blocks determine how a callback should be handled.

Within the Callback exit, in the first Set Variable block, the callback number is initially set to the value of $(item.from), which is the caller ID of the original call.

If blocks determine whether there is a caller ID and whether the ID can be dialed.

The scenario then uses If blocks to ensure that

Callback > Set Variable > If

The Menu block asks the caller to establish the callback number.

The Menu block that follows will ask the caller to choose the callback number. The caller can either use the current phone or enter a different callback phone number.

Menu block

The Collect Digits block gets a new callback number, if needed.

If the caller selects a different callback phone number, the Collect Digits block is used next to collect the new number.

Collect Digits block

If blocks determine whether the number can be dialed.

Then If blocks are used to ensure that the entered number is dialable and is not a 1-900 number. Note that the length() function is used to check the number of digits.

Once the callback number is identified, the call is passed back to the Request Callback block. This block confirms the request, disconnects the original call, places the associated callback request in the virtual queue, waits for a matching agent, and makes the callback when either an agent becomes available or the estimated waiting time (EWT) expires.

The Menu block explains the callback to the party who answers the call.

The Menu block that follows announces the purpose of the call to the party that answers the callback attempt. This is done to make sure the call is connected to the correct party.

The call is then handed over to the Find Agent block for distribution to an agent. Note that despite the EWT prediction that no agents are immediately available, the call will be placed in the first position in the service queue to be picked up by the next agent who becomes available.

If and Set Variable blocks

The Connect Call block connects the caller to the agent.

As usual, the Connect Call block is used to connect the call to the agent identified by the Find Agent block.

Connect Call block


For reporting purposes, general real-time and historical service metrics treat virtual calls as if they were regular inbound calls waiting in the physical queue. Calls that select the Virtual Queue (VQ) option are counted as Queued. Successful callbacks (i.e., answered by customers and connected to agents) are counted as Answered, while unsuccessful callbacks (unanswered, busy, or answered but abandoned before being connected to agents) are counted as Abandoned in Queue.

In addition, both real-time and historical reporting functions provide a number of metrics that focus specifically on the VQ functions.

Example Situation

To illustrate such reporting metrics and functions, consider the following example situation, in which 100 customers have called a service since the start of the day up to the present moment.

40 of those customers have selected the VQ option.

Of those 40,

60 of those customers have selected to remain on the line.

Of those 60,

Example Reports

This example situation would generate the following metrics and reports.

Real-Time Service Metrics View

For this example, the real-time service metrics view will show the following numbers for this service (only the relevant metrics are listed):

For the formal definitions of the above real-time metrics, see the Bright Pattern Contact Center Supervisor Guide, section List of Service Metrics.

Historical Service Metrics

Continuing this example, assume that all of the live and virtual calls that were waiting in the queue were eventually connected to agents and that no other calls were made to the service on that day.

The historical Service Metrics Report for that day will show the following numbers for this service (only the relevant metrics are listed):

Historical Virtual Queue Report

The historical Virtual Queue Report for that day will show the following numbers for this service: