NICE CXone: Implementing Custom Omnichannel Routing Rules for VIP Customers
What This Guide Covers
You are configuring an advanced omnichannel routing strategy in NICE CXone to prioritize High Net Worth (VIP) customers across Voice, Email, and Chat. When complete, your contact center will utilize dynamic data dips, skill-based priority elevation, and dedicated VIP agent pooling to ensure that your most valuable customers bypass standard queues, experience near-zero wait times, and are connected to your highest-performing agents, regardless of which channel they use to contact you.
Prerequisites, Roles & Licensing
- NICE CXone: Base routing license with Omnichannel/Digital capabilities.
- Permissions required:
Studio > Scripts > EditACD > Skills > Create/EditACD > Users > Edit(to assign proficiencies)
- Data Integration: A CRM or backend database exposed via REST API to identify VIP status based on ANI (phone number) or email address.
The Implementation Deep-Dive
1. The Core VIP Routing Strategy
Standard routing is First-In, First-Out (FIFO). VIP routing uses two concurrent strategies to jump the line:
- Priority Elevation: A VIP interaction enters the same queue as a standard interaction but is assigned a massive initial priority boost, instantly moving it to the front of the line.
- Dedicated Skill Pooling: VIP interactions are routed to an exclusive “VIP Skill” assigned only to your top-tier agents. If those agents are busy, the interaction expands to the general pool but maintains its priority boost.
2. Identifying the VIP (The Data Dip)
The routing engine cannot prioritize a customer if it doesn’t know who they are.
For Voice (ANI) and Chat/SMS (Phone/Email):
At the very beginning of your main Studio script (or Flow Designer flow), execute a REST API call to your CRM.
// Studio Snippet: Identify VIP Status
ASSIGN endpoint = "https://api.yourcompany.com/customers?identifier={ANI}"
// ... execute REST call ...
ASSIGN customerData = responsePayload.asjson()
ASSIGN isVip = customerData.isVipTier // Boolean: true/false
3. Strategy A: Priority Elevation within a Shared Queue
If you want VIPs and Standard customers to be handled by the same group of agents, but you want VIPs to jump the line, use Priority Elevation.
In CXone, Priority is a number. Higher numbers are answered first.
- A standard call might start at Priority 0 and increase by 1 point per minute of wait time.
- A VIP call starts at Priority 1000.
Implementation in Studio:
// Configure routing based on VIP status
IF isVip = "true" THEN
// Give a massive initial priority boost
ASSIGN initialPriority = 1000
ASSIGN priorityAcceleration = 10 // Increases by 10 points per minute
ELSE
ASSIGN initialPriority = 0
ASSIGN priorityAcceleration = 1 // Increases by 1 point per minute
ENDIF
// Use the Reqagent action to request an agent
// Map the properties of the Reqagent node to these variables
// Skill: Support_General
// InitialPriority: {initialPriority}
// Acceleration: {priorityAcceleration}
REQAGENT Support_General
Result: A standard caller has been waiting 10 minutes (Priority = 10). A VIP calls in (Priority = 1000). The next available agent gets the VIP call.
4. Strategy B: Dedicated VIP Skill Pooling with Bullseye Routing
If you have a dedicated “White Glove” team that only handles VIPs, you must use Skill-based routing. However, if all White Glove agents are busy, the VIP shouldn’t wait infinitely while standard agents sit idle. You must implement expanding pools (Bullseye Routing).
Step 1: Create the Skills and Assign Proficiencies
- Create a
VIP_SupportSkill. - Create a
General_SupportSkill. - White Glove Agents: Assign
VIP_Support(Proficiency 1 - Highest). Do not assignGeneral_Support. - General Agents: Assign
General_Support(Proficiency 1), and assignVIP_Support(Proficiency 2 - Lower).
Step 2: Implement the Bullseye Expansion in Studio
When a VIP calls in, you want to target only Proficiency 1 agents first. If none are available after 30 seconds, expand to Proficiency 2 agents.
IF isVip = "true" THEN
// Ring 1: Target only White Glove agents (Proficiency 1)
// Use the UpdateSkill action or configure Reqagent properties
REQAGENT VIP_Support (TargetProficiency: 1)
// Wait 30 seconds in queue
WAIT 30
// Ring 2: Expand to General agents (Proficiency 2)
// If the call hasn't been answered, update the request
UPDATECONTACT (TargetProficiency: 2)
// Continue holding
WAIT 300
ENDIF
Result: The VIP gets the best agent if available. If not, they still get a standard agent quickly, jumping ahead of standard callers because the VIP_Support skill itself can be configured with a higher base priority than the General_Support skill in the CXone Admin console.
5. Applying Omnichannel Priority (Digital Channels)
The strategies above apply equally to Emails and Chats in Digital First Omnichannel (DFO). However, digital channels have different Service Level Agreements (SLAs). A Voice call SLA is 30 seconds; an Email SLA is 4 hours.
The Omnichannel Priority Conflict:
If an agent handles both Emails and Voice, CXone must decide what to route them next. By default, Voice always preempts Email. But what if a VIP Email has been waiting 3.5 hours, and a standard Voice call just arrived?
Configuring Global Omnichannel Routing:
- Navigate to ACD > Contact Settings > Omnichannel Routing.
- Understand that CXone calculates a “Priority Ratio” to normalize priorities across channels.
- If you want a VIP Email to interrupt an agent and prevent them from receiving a standard voice call, you must adjust the Base Priority of the VIP Email Skill to be significantly higher than the Standard Voice Skill, and increase the Acceleration Rate so the email’s priority climbs rapidly over its 4-hour SLA window.
Recommendation: For true VIP treatment, avoid blending asynchronous (Email) and synchronous (Voice) channels on the same agents. Dedicate your White Glove agents to live channels (Voice/Chat) and use a separate pool for VIP Emails to prevent SLA collision.
Validation, Edge Cases & Troubleshooting
Edge Case 1: The “Priority Starvation” Problem
If you have a high volume of VIPs and you give them an initial priority of 10,000, your standard callers might experience “Starvation.” Every time an agent frees up, there is always a VIP in queue, so the standard callers wait infinitely.
Solution: Cap the maximum priority of VIPs, or use a highly aggressive Acceleration Rate for standard callers (e.g., +100 points per minute). Eventually, a standard caller who has waited 45 minutes will mathematically overtake a VIP who just entered the queue. This ensures VIPs get fast service, but standard callers are not abandoned entirely.
Edge Case 2: Identifying VIPs in Chat
A customer initiates a web chat anonymously (no login required). Your script cannot do a data dip because there is no ANI or Email address.
Solution: Implement pre-chat data collection. Require the customer to enter their Account Number or Email address in the chat widget form before the chat initiates. Pass this data as a custom parameter into the CXone DFO routing engine, allowing the initial flow to query the CRM and identify the VIP before assigning a priority.
Edge Case 3: VIPs Using Unrecognized Phone Numbers
A CEO (VIP) calls your contact center from their spouse’s mobile phone instead of their registered corporate number. The data dip fails, and they are routed to the standard 45-minute queue.
Solution: Provide VIP customers with a dedicated, unpublished Toll-Free Number (TFN) known only to them (e.g., printed on the back of a premium credit card). In CXone, map a Point of Contact (PoC) to this TFN. Configure the routing script to bypass the CRM data dip entirely for this PoC and instantly assign VIP priority based purely on the DNIS (the number they dialed).