Screen pop is the single highest-ROI integration in any contact centre deployment. When a Webex CC agent answers a call and the customer's Salesforce or ServiceNow record appears automatically, handle time drops and CSAT rises. When screen pop fails — wrong record, slow load, blank desktop — agents revert to manual lookup and the integration investment is wasted. This guide covers the CTI architectures, desktop layout patterns, and event-driven designs we use for Webex + CRM integrations.
How Webex CTI screen pop works
Cisco Webex Contact Center exposes call events through the Agent Desktop SDK and the Finesse CTI framework (for hybrid deployments). The screen pop flow:
- Inbound contact arrives at the Webex CC routing engine
- Agent is selected and the contact is delivered to their desktop
- The Agent Desktop SDK fires a
contact:connectedevent with ANI, DNIS, and contact attributes - Your CTI adapter intercepts the event, queries the CRM, and returns the record URL
- The CRM record opens in the agent's embedded browser panel or a separate tab
Total elapsed time from ring to screen pop should be under 800ms. Beyond one second, agents start alt-tabbing to CRM before the pop completes.
Pattern 1: Native Salesforce Open CTI
For Salesforce-centric organisations, the Webex for Salesforce managed package provides pre-built CTI integration. Setup:
- Install the Webex Contact Center adapter from Salesforce AppExchange
- Configure the Open CTI softphone layout with screen pop rules
- Map ANI to Contact.Phone and Contact.MobilePhone fields
- Enable automatic case creation on unmatched calls
// Salesforce Open CTI: screen pop on call connect
sforce.opencti.setSoftphoneItem({
key: 'screenPop',
value: {
type: 'PopRecord',
params: {
recordId: matchedContactId,
showOnLeft: true
}
}
});
// Fallback: search screen when no match
sforce.opencti.searchAndScreenPop({
searchParams: ani,
callType: 'Inbound',
deferred: false
});
The managed package handles event subscription and error recovery. Use it unless you have a specific reason to build custom — typically multi-CRM environments or non-standard match logic.
Pattern 2: Custom CTI adapter with middleware
When the managed package doesn't fit — multi-CRM, ServiceNow primary, or custom identity resolution — build a middleware CTI adapter:
- Event listener — subscribe to Webex Agent Desktop SDK contact events via WebSocket
- Identity resolver — query CRM API with ANI, email, or account number; return record ID and metadata
- Desktop orchestrator — instruct the agent desktop to open the CRM URL in the embedded panel
- Interaction logger — write a Task or Activity record in CRM with call duration, disposition, and agent notes
// Webex Agent Desktop SDK event handler
desktopSDK.on('contact:connected', async (contact) => {
const ani = contact.getAttribute('ani');
const channel = contact.getChannelType();
const customer = await middleware.resolve({
phone: ani,
channel: channel,
sources: ['salesforce', 'servicenow']
});
if (customer.matched) {
desktopSDK.showScreenPop({
url: customer.crmUrl,
title: customer.name,
position: 'left-panel'
});
contact.setAttribute('crm_record_id', customer.id);
} else {
desktopSDK.showScreenPop({
url: `/crm/search?q=${ani}`,
title: 'Search Customer',
position: 'left-panel'
});
}
});
Pattern 3: Event-driven screen pop for digital channels
Voice screen pop is well understood. Chat and email screen pop requires event-driven architecture because there's no ANI — you match on session ID, email address, or authenticated user token.
For web chat with pre-authentication:
- Customer logs in before chat starts; session token passed as a Webex contact attribute
- On
contact:offered, middleware resolves the token to a CRM record - Screen pop fires before the agent accepts — record is visible on ring, not after connect
For email, match on the From address against CRM Contact.Email. For WhatsApp, match on the registered phone number. The middleware layer normalises all channel identifiers to a single CRM lookup function.
Desktop layout best practices
Screen pop content should be curated, not comprehensive. Agents need:
- Customer header — name, account tier, loyalty status, open case count
- Recent interactions — last 3 contacts across all channels with disposition
- Open cases — active cases with status and assigned agent
- Quick actions — create case, log note, schedule callback (one click each)
Avoid populating the entire CRM record. Field overload slows page load and distracts agents from the conversation. Use a custom Lightning page or ServiceNow form layout optimised for contact centre — not the default sales layout.
Handling screen pop failures gracefully
Screen pop will fail. Design for it:
- Timeout fallback — if CRM lookup exceeds 2 seconds, show a search screen with the ANI pre-filled
- Multiple match disambiguation — present a pick list when 2+ records match; never auto-pop the wrong customer
- Offline CRM — if Salesforce is down, log the interaction locally and sync when CRM recovers
- Agent override — let agents manually search and link a record; write the link back for future calls
Log every screen pop attempt with match result, latency, and agent action. This data drives continuous improvement — if match rate drops below 80%, your identity resolution needs attention.
What's next
Screen pop is the entry point for deeper CRM integration — predictive routing that uses CRM attributes, AI agents that read case history, and closed-loop analytics that tie contact outcomes to revenue. Start with reliable screen pop; everything else builds on it. See our use cases for integration patterns or contact us for a Webex + CRM assessment.



