What’s the difference between setting an agent to ‘Available’ vs ‘On Queue’ via the Presence API?
I assumed they were the same thing, but agents set to ‘Available’ via the API aren’t receiving ACD calls. Agents set to ‘On Queue’ receive calls. Why does the ACD ignore ‘Available’ agents?
‘Available’ is a PRESENCE status. ‘On Queue’ is a ROUTING status. They are two different systems.
Presence controls what other users see in the directory. Routing status controls whether the ACD routes interactions to the agent. An agent can be ‘Available’ (visible as available in directory) but ‘Off Queue’ (not receiving ACD calls). Both must be set for the agent to receive calls.
# Set BOTH presence AND routing status
# Step 1: Set presence to Available
presence_body = {'presenceDefinition': {'id': available_presence_id}}
api.patch_user_presence(user_id, 'PURECLOUD', presence_body)
# Step 2: Set routing status to On Queue
routing_body = {'userId': user_id, 'status': 'ACTIVE'}
api.put_user_routingstatus(user_id, routing_body)
You MUST call both endpoints. Setting presence alone does NOT activate ACD routing.
In CIC, there was a single status field. ‘Available’ meant both visible AND routable.
GC’s separation of presence from routing is more flexible but also more confusing for admins migrating from PureConnect. We created a training module specifically explaining the dual-status model.
From a gamification perspective, the dual-status model creates scoring complexity.
Our leaderboard awards points for ‘time available’. But does that mean time with ‘Available’ presence, time with ‘On Queue’ routing status, or time with BOTH? We had to define it explicitly: points are awarded only when both presence = Available AND routing = On Queue.