Call Queues in FreePBX.


In this article we will go through all the steps required to configure call queues in FreePBX 13. Call Queuing is a feature of almost any call center which allows you to keep incoming calls in a queue while they are waiting for their turn to be served by agents.


I assume that you have a working instance of FreePBX with registered extensions.

Step 1. Create a new queue.

Go to Applications -> Queues and click Add Queue.

Assign it a Queue Number, which will be used for dialing into the queue. Give it a descriptive name in a Queue Name field.

You can enter a text label in CID Name Prefix, if you want that text label to be prefixed to the CallerID displayed on agent’s phone. When agents receive calls from a particular queue they will know exactly which queue the call is coming from because of that label.

Select the desired Ring Strategy, in my case it is set to leastrecent.

Some of ring strategies are:

ringall: ring all available agents until one answers (default)
leastrecent: ring agent which was least recently called by this queue
fewestcalls: ring the agent with fewest completed calls from this queue
random: ring random agent
rrmemory: round robin with memory, remember where we left off last ring pass
rrordered: same as rrmemory, except the queue member order from config file is preserved
linear: rings agents in the order specified, for dynamic agents in the order they logged in

Set Autofill to Yes if your call center has a large volume of calls.

If Autofill is disabled then the queue will not process the second call, if the first call has not been answered by the agent, even if there are many available agents. The second call is going to wait for the agent servicing the first call to actually pick up the handset.

Set Skip Busy Agents to Yes if you don’t want agents with multi-line phones to be presented with calls while they are already servicing the customer. It makes sense to have it enabled.

Queue Weight field will define from which queue the agent is going to receive a call if that agent is a member of multiple queues.

Set a Fail Over Destination to Terminate Call. You might want to have another Fail Over Destination in a production environment (for example, voicemail box), but simply terminating is OK for our demo purposes.

Step 2. Add Agents to the queue

Navigate to the Queue Agents tab and add the existing extensions as agents. Static Agents are always on the queue and Dynamic Agents have to log into the queue before they can start servicing the calls.

In my lab extension 234 is a static agent, but extension 299 will have to log into the queue.

How does a dynamic agent log in/out?

Method 1

The easiest way for the dynamic agent to log in/out is to dial *45, which is going to toggle agent’s status.

Method 2

To log into the queue the dynamic agent has to dial the Queue Number, followed by the asterisk symbol(*). In my lab scenario the queue number is 1111, therefore dynamic agent will have to dial 1111*

To log out of the queue the dynamic agent has to dial the Queue Number, followed by two asterisk symbols(**). In my lab scenario the queue number is 1111, therefore dynamic agent will have to dial 1111**

Step 3 (optional). Timing & Agent Options

Navigate to Timing & Agent Options tab. Let’s have a look at some of the parameters here.

Max Wait Time defines the maximum number of seconds a call can remain in the queue before it goes to Fail Over Destination. I just left it set to Unlimited.

Wrap-Up-Time parameter defines how many seconds the queue will wait before sending a new call to an agent that has just processed the previous call.

Report Hold Time feature announces the agent how long the caller was held in the queue. This might be useful, for example, if you want to provide a special service to the customers which were held in the queue for too long.

Step 4 (optional). Capacity Options

Navigate to Capacity Options tab.

Max Callers defines the maximum number of callers in the queue. For unlimited leave it set to 0. If you have a maximum number of calls waiting in the queue then the additional call will simply fail to enter the queue.

Join Empty defines whether the callers should be admitted to the queue if there are no active agents.

Leave Empty defines whether the callers should be forwarded to fail over destination if there are no active agents.

Step 5 (optional). Caller Announcements

Frequency defines how often you want to play queue position and holdtime if at all. By default, it is set to 0 which means it is disabled.

All settings here are self-explanatory. Choose whether you want to announce position and/or hold time, setting the values for the corresponding fields.

IVR Break Out Menu can be used to put callers periodically in another IVR menu which would let them, for example, leave a message or perform any other action.

Don’t forget to Submit and Apply Config when finished.

Step 6. Dial into the queue

Now, that you have a configured Queue you can either dial the queue number (in my scenario it is 1111) from any internal IP phone and you will get into the queue and the agent’s phone will start ringing.

In a production environment you might want to put the callers into the queue directly through Inbound Route, like this:

You can also put the callers in a queue through IVR menu, just choose the corresponding destination for a particular digit, like this:


Now you should be able to configure call queues in FreePBX.

Add a Comment