The Admin's Guide to Salesforce Open CTI Configuration
50 min
Open CTI has been around for over a decade, but somehow it still manages to confuse even experienced Salesforce admins. Maybe it's the JavaScript API that feels foreign if you're used to point-and-click configuration. Maybe it's the abstraction layer between telephony providers and Salesforce that makes troubleshooting feel like detective work. Or maybe it's just that the documentation assumes you already know what you're doing.
Whatever the reason, if you're a Salesforce admin tasked with implementing or troubleshooting Open CTI, you're in the right place. This guide will walk you through everything you need to know about Open CTI configuration, from the basics to advanced scenarios. And yes, we'll talk about how PhoneIQ handles all of this for you automatically, but understanding the underlying mechanics will make you a better admin regardless of which system you choose.
Let's start from the beginning.
What Open CTI Actually Is (And Why It Matters)
Open CTI stands for Open Computer Telephony Integration. That's a mouthful, so let's break it down into what it actually does.
At its core, Open CTI is Salesforce's framework for embedding phone systems into the Salesforce interface. Before Open CTI existed, integrating phones with Salesforce meant installing desktop software, dealing with complicated middleware, and generally having a terrible time. Open CTI changed that by providing a standard JavaScript API that telephony providers can use to integrate directly with Salesforce through a web interface.
Here's what happens with Open CTI: Your telephony provider (like Twilio, RingCentral, or PhoneIQ) builds a softphone interface using HTML, CSS, and JavaScript. This softphone runs in an iframe inside your Salesforce console. When phone events happen (incoming call, outgoing call, call ended), the softphone uses the Open CTI API to tell Salesforce about them. Salesforce responds by popping screen records, logging calls, and generally making the phone system feel integrated.
The beauty of Open CTI is that it's provider-agnostic. In theory, any telephony provider can build an integration using the same standard API. In practice, the quality of these integrations varies wildly, which is why choosing the right provider matters just as much as configuring Open CTI correctly.
Open CTI vs Service Cloud Voice: Understanding Your Options
Before we dive into configuration, let's address the elephant in the room. Salesforce now offers Service Cloud Voice, which is their native telephony solution built on Amazon Connect. So why would you still use Open CTI?
Service Cloud Voice is excellent for service teams handling inbound support calls. It's deeply integrated with cases, works beautifully for support workflows, and includes Einstein features tuned for customer service. But it has limitations for sales teams, costs add up quickly, and you're locked into Salesforce's telephony partner choices.
Open CTI gives you flexibility. You can choose any telephony provider that builds to the Open CTI specification. You can customize the integration to fit your specific workflows. And for sales teams who need sophisticated power dialing, local presence, and sales-specific AI features, Open CTI providers like PhoneIQ offer capabilities that Service Cloud Voice simply doesn't have.
Most organizations use Service Cloud Voice for service teams and an Open CTI provider like PhoneIQ for sales teams. That's a perfectly valid architecture and we covered it in our Service Cloud Voice integration guide.
For the rest of this article, we're focusing on Open CTI configuration regardless of which provider you're using.
The Open CTI Architecture: What You're Actually Configuring
Understanding the architecture helps demystify the configuration process. Let's walk through what happens when a user makes a call using Open CTI.
The Softphone Interface: This is an HTML page hosted by your telephony provider. It contains the actual phone controls (dial pad, mute button, transfer, etc.) and the JavaScript code that talks to both the telephony system and Salesforce. This page loads in an iframe inside your Salesforce console.
The Open CTI API: This is Salesforce's JavaScript library that the softphone uses to interact with Salesforce. It provides methods like setSoftphonePanelVisibility(), searchAndScreenPop(), and saveLog(). The softphone calls these methods to control Salesforce behavior.
The Call Center Definition: This is XML configuration stored in Salesforce that tells Salesforce where to load the softphone, what features to enable, and various settings about how the integration should behave.
The Console Toolkit API: This is another Salesforce API that Open CTI softphones use for more advanced console interactions like opening tabs, highlighting sidebar items, and managing screen pops.
When you configure Open CTI, you're primarily working with the Call Center definition file and permission settings. The softphone interface itself is provided by your vendor, and you don't typically customize it unless you have developers on your team.
Prerequisites: Before You Start Configuration
Before you start configuring Open CTI, make sure you have these prerequisites handled:
Salesforce Console Application: Open CTI only works in Salesforce console apps. If you're not using a console, you'll need to create one or modify your existing app. The Sales Console or Service Console apps work fine, or you can build a custom console.
Appropriate Licenses: Users need either Sales Cloud or Service Cloud licenses to use Open CTI. Developer, Platform, and some other license types don't support CTI functionality.
Administrator Access: You'll need System Administrator permissions to configure Call Centers and assign users.
Telephony Provider Account: You need an account with your chosen telephony provider. They'll give you configuration details like the softphone URL and API credentials.
Modern Web Browser: Open CTI works best in Chrome, Firefox, or Edge. Safari and Internet Explorer have known issues with certain features.
Stable Internet Connection: This seems obvious, but VoIP calling requires good bandwidth and low latency. Make sure your network can handle it.
Step One: Importing the Call Center Definition File
Your telephony provider will give you a Call Center definition file. This is an XML file that contains all the configuration parameters for the integration. Here's how to import it.
Navigate to Setup > Feature Settings > Service > Call Centers. Click Import and upload the XML file your provider gave you. The file gets parsed and creates a new Call Center record in Salesforce.
After import, you'll see the Call Center listed with all its configuration parameters. These parameters vary by provider but typically include:
CTI Adapter URL: The URL where the softphone interface lives. This is usually on your provider's domain and includes your account-specific information.
Softphone Height: How tall the softphone panel should be in pixels.
Softphone Width: For popout softphones, how wide the window should be.
Screen Pop Settings: Whether to automatically pop screens and what matching rules to use.
Call Logging Options: What information to capture when logging calls.
Custom Parameters: Provider-specific settings that control various features.
Don't modify these parameters randomly. Your provider configured them specifically for their integration. Changing values can break functionality in unexpected ways.
Step Two: Adding Users to the Call Center
Importing the Call Center definition doesn't automatically give anyone access. You need to explicitly add users who should have calling capabilities.
From the Call Center detail page, click Manage Call Center Users. Click Add More Users and search for the users or profiles you want to enable. Select them and click Add to Call Center.
Users can only be assigned to one Call Center at a time. If a user is already in another Call Center, you'll need to remove them from that one first.
Here's a pro tip: instead of adding users one by one, create a public group containing all your CTI users. Then add the entire group to the Call Center. This makes ongoing user management much easier. When someone new joins who needs calling access, just add them to the group and they automatically get Call Center access.
Step Three: Configuring the Softphone Layout
The softphone layout controls which objects show up when calls come in and what information displays in the softphone panel itself. This is where you customize the screen pop behavior.
Navigate to Setup > Feature Settings > Service > Softphone Layouts. Create a new layout or customize the default one. You'll configure several sections:
Screen Pop Settings: Choose which objects to search when an incoming call arrives. Typically you'll include Contacts, Leads, and maybe Accounts or Cases. Set the order they should be searched.
Screen Pop Display: Choose whether to display a single record, a search page, or a new record creation form when no matches are found.
Call Type Mapping: Define which fields on different objects represent phone numbers. Salesforce will search these fields when trying to match incoming calls to records.
Softphone Panel Fields: Select which fields should display in the softphone panel during calls. This might include the contact name, account, phone number, and any custom fields relevant to your business.
Assign your softphone layout to user profiles. Go to each profile that has CTI users and set the Softphone Layout field to your custom layout.
Good softphone layout configuration makes the difference between a seamless user experience and frustrated reps who can't find the records they need during calls.
Step Four: Setting Up Permission Sets
Permission sets give you granular control over CTI features. Even if users are added to the Call Center, they might not have all the permissions they need.
Create a permission set specifically for CTI users. Enable these permissions:
API Enabled: Required for the softphone to communicate with Salesforce.
CTI Access: The master permission that enables Call Center functionality.
Edit Tasks: Needed if your CTI system logs calls as Tasks.
Transfer Calls: If you want users to be able to transfer calls.
Access Contact and Account Records: Obviously needed for screen pops to work.
Any Custom Object Permissions: If you're using custom objects for call logging or CTI-specific data.
Assign this permission set to all CTI users. You can also create different permission sets for different user types. Maybe your managers need additional permissions that regular reps don't.
Step Five: Enabling the Softphone in Your Console
Now you need to make the softphone visible in your console application. The exact steps vary slightly depending on whether you're using a Lightning console or upgrading from Classic.
For Lightning Experience console apps:
Go to Setup > Apps > App Manager. Find your console app and click Edit. Under Utility Items (Desktop Only), add the Open CTI Softphone utility. Configure the utility properties:
Default Width: How wide the softphone panel should be. Most providers recommend 300-400 pixels.
Default Height: How tall the panel should be. Typical range is 400-600 pixels.
Start automatically: Whether the softphone should load immediately when the console opens. Usually set to true.
Save your changes. Users will now see the softphone panel in their console utility bar.
Understanding Screen Pop Logic
Screen pops are one of the most important aspects of CTI integration. When a call comes in, Salesforce automatically searches for records matching the caller's phone number and displays them to the user. Understanding how this works helps you configure it effectively.
Here's the process:
An incoming call arrives with a phone number. The softphone uses the Open CTI API to trigger a search in Salesforce. Salesforce searches the objects specified in your softphone layout, in the order you defined. It looks at phone number fields (Phone, Mobile, Home Phone, Other Phone, and any custom fields you mapped). When it finds matches, it pops them according to your display rules.
The search logic handles phone number formatting intelligently. It strips out parentheses, dashes, spaces, and country codes to find matches even if the formatting differs. A call from +1 (555) 123-4567 will match a record with 5551234567 stored in the database.
If multiple records match, Salesforce typically displays a search results page where the user can click the correct record. You can configure this behavior in your softphone layout.
If no records match, you can configure Salesforce to display a new record creation form with the phone number pre-populated.
Advanced Configuration: Custom Screen Pop Logic
Sometimes the standard screen pop logic isn't enough. Maybe you need to search by more than just phone number. Maybe you want to prioritize certain record types. Maybe you have complex business logic that determines which record should pop.
This is where you need to get into custom development. Your telephony provider's softphone can be customized to use different Open CTI API methods.
Instead of using the standard searchAndScreenPop() method, developers can use runApex() to call custom Apex code that implements your specific logic. That Apex code can query based on any criteria you want and return the record ID to display.
PhoneIQ includes configurable screen pop logic that handles complex scenarios without custom code. You can set up rules like "if the phone number matches multiple contacts, prioritize the one with an open opportunity" or "when a lead calls, check if they've converted to a contact first."
If you're implementing this yourself with another provider, you'll need developer resources. It's not point-and-click configuration.
Configuring Call Logging
Every call should be logged in Salesforce automatically. Nobody wants reps manually creating tasks after calls. That's the whole point of CTI integration.
Call logging happens through the Open CTI saveLog() method. Your softphone calls this method when a call ends, passing information about the call. Salesforce creates a Task record with that information.
Configure what gets logged through your Call Center parameters and softphone layout settings:
Task Subject: Usually something like "Call with [Contact Name]" or "Outbound Call to [Phone Number]."
Task Type: Set to "Call" so you can filter call tasks from other activities.
Call Duration: Captured in a custom field or the Description.
Call Outcome: Disposition codes like "Connected," "Voicemail," "No Answer."
Related To: The Account, Opportunity, or Case the call relates to.
Who ID: The Contact or Lead who was called.
You can customize task creation through Process Builder or Flow. When a task is created with Type="Call", you can trigger additional automation like updating lead status, creating follow-up tasks, or notifying managers.
PhoneIQ's call logging is fully customizable through the admin interface. You can map call data to standard or custom fields, set up disposition code workflows, and configure what information gets captured automatically.
Troubleshooting Common Open CTI Issues
Even with perfect configuration, things go wrong. Here are the most common Open CTI issues and how to fix them.
Issue: Softphone Won't Load
Check that the user is added to the Call Center. Verify they have the CTI Access permission. Check browser console for errors (F12 in most browsers). Verify the CTI Adapter URL in the Call Center definition is accessible. Check for browser extensions that might block iframes. Try in an incognito window to rule out cache issues.
Issue: Screen Pops Not Working
Verify the softphone layout is assigned to the user's profile. Check that the phone number fields are mapped correctly. Look at the phone number format in your records versus incoming caller ID. Test manually by searching for records with the phone number. Check that the user has read access to the objects you're trying to pop.
Issue: Calls Not Logging
Verify users have Edit Tasks permission. Check that the Call Center parameters include the logging settings. Look for validation rules on Tasks that might be blocking creation. Check for required fields on Tasks that aren't being populated. Review any Process Builder or Flow processes that might be interfering.
Issue: Performance Problems
Open CTI can impact console performance if not optimized. Check that you're not loading too many utility items. Verify the softphone height and width are reasonable. Look for JavaScript errors in the browser console. Consider reducing the number of fields displayed in the softphone layout. Talk to your telephony provider about optimizing their softphone code.
Issue: Click-to-Dial Not Working
Verify the softphone supports click-to-dial (not all do). Check that phone fields are properly formatted in your records. Look for custom Lightning components that might override phone field behavior. Try with standard page layouts to isolate custom code issues.
Security Considerations
Open CTI involves giving a third-party softphone access to your Salesforce data through APIs. Security should be top of mind.
Use HTTPS: Your Call Center adapter URL should always use HTTPS, never HTTP. Unencrypted connections expose call data and API tokens to potential interception.
Review API Permissions: The softphone can only access data the logged-in user has access to. Don't give CTI users overly broad permissions just to make CTI work.
Monitor API Usage: CTI softphones make API calls continuously. Monitor your API limits to ensure CTI usage isn't pushing you toward limits.
Regular Security Reviews: Periodically review which users have CTI access and whether they still need it. Remove inactive users from Call Centers.
Vendor Security Posture: Understand your telephony provider's security practices. Where do they store call recordings? How do they handle authentication? Are they SOC 2 compliant?
PhoneIQ is SOC 2 Type II certified and handles all security concerns at the platform level. Call recordings are encrypted at rest and in transit. API credentials are rotated automatically. And we provide detailed security documentation for your compliance teams.
Performance Optimization
Open CTI shouldn't slow down your Salesforce console, but poorly configured integrations can definitely impact performance. Here's how to keep things fast.
Optimize Softphone Layout: Only include the objects and fields you actually need in screen pops. Every additional object searched adds query time. Every extra field displayed adds rendering time.
Limit Custom Visualforce: If your softphone uses custom Visualforce pages for display, optimize those pages for performance. Minimize viewstate, use field sets instead of hardcoded fields, and avoid unnecessary SOQL queries.
Use Lazy Loading: Configure the softphone to load only when clicked rather than automatically. This improves initial console load time, though it means users have to manually open the softphone.
Monitor Browser Memory: Long console sessions with active softphones can consume significant browser memory. Encourage users to refresh their console periodically.
Reduce API Calls: Work with your provider to minimize unnecessary API calls. Some softphones poll for data continuously when they could use event-driven updates instead.
Mobile Considerations
Open CTI was built for desktop Salesforce consoles. Mobile support is limited and varies by provider.
The Salesforce mobile app doesn't support Open CTI at all. If your users need mobile calling, they need a provider with a separate mobile app that integrates with Salesforce through other means.
PhoneIQ offers a full mobile app for iOS and Android that provides the same CTI functionality as the desktop experience. Screen pops, call logging, and all the AI features work seamlessly on mobile. But this is separate from the Open CTI implementation.
If mobile calling is important to your organization, make sure your provider has a solid mobile story beyond just Open CTI.
Multi-Provider Scenarios
Some organizations use different telephony providers for different use cases. Maybe you have an international team using one provider and a domestic team using another. Maybe you're transitioning between providers.
Salesforce allows multiple Call Centers to exist simultaneously. Different users can be assigned to different Call Centers. This lets you run multiple providers side by side.
However, each user can only be in one Call Center at a time. You can't have a user switch between providers dynamically.
If you need multiple providers, plan your user assignments carefully. Create clear policies about who uses which system and why. Document the configuration for each Call Center separately.
In practice, running multiple providers adds significant admin complexity. Do it only if you have a compelling business reason.
Integration with Salesforce Automation
Open CTI integrations should play nicely with your existing Salesforce automation. Here's how to make that happen.
Process Builder: Trigger processes when call tasks are created. You can use criteria like Task Type = "Call" to identify CTI-logged calls. Update lead status, create follow-up tasks, notify managers, or any other automation your business needs.
Flow: Use Screen Flows to present custom disposition forms after calls. Use Autolaunched Flows to process call data and update related records.
Apex Triggers: For complex logic that can't be handled in Process Builder or Flow, write Apex triggers on Task. Check for call-related tasks and implement your business logic.
Validation Rules: Be careful with validation rules on Task. They can block automatic call logging if the softphone doesn't populate required fields.
Field Dependencies: Similarly, field dependencies on Task can cause issues if they make fields required that the softphone doesn't populate.
The key is testing your automation with actual CTI calls, not just manually created tasks. The softphone might populate fields differently than users do.
Reporting on CTI Activity
Once you have calls flowing through Open CTI, you'll want to report on the activity. Standard Salesforce reporting works fine, but there are some tips specific to CTI data.
Use Task Reports: Most CTI systems log calls as Tasks. Create task reports filtered to Type = "Call" or Subject contains "Call."
Create Custom Report Types: Build a report type that includes Tasks with related Contacts, Accounts, and Opportunities. This lets you analyze calling activity in the context of your sales process.
Track Call Outcomes: Use custom fields to capture disposition codes or call outcomes. Report on these to understand connection rates and call effectiveness.
Time-Based Metrics: Track calls by time of day, day of week, and rep. This helps identify optimal calling times and individual performance patterns.
Call Duration Analysis: If you capture call duration, analyze it to understand typical call lengths and identify outliers.
PhoneIQ includes pre-built dashboards for all the standard calling metrics. But even with PhoneIQ, you'll want to create custom reports that tie calling activity to your specific business processes.
The Case for Letting PhoneIQ Handle This
We've covered a lot of configuration complexity in this guide. And honestly, we've only scratched the surface. Custom screen pop logic, advanced call routing, AI integration, conversation intelligence, power dialing, local presence, and dozens of other features all require additional configuration and often custom development.
This is exactly why PhoneIQ exists. We've built all of this functionality into a managed package that installs in minutes and works out of the box. The softphone is optimized for performance. Screen pop logic handles complex matching scenarios automatically. Call logging is fully customizable through an admin interface. And you get AI-powered conversation intelligence, automated call scoring, and sophisticated power dialing capabilities that would take months to build yourself.
PhoneIQ's managed package approach means:
No XML Configuration Files: You don't import Call Center definitions or edit parameters manually. Everything is point-and-click configuration through our setup wizard.
Automatic Updates: When we release new features or bug fixes, they deploy automatically to your org through the managed package. You don't maintain code or configuration.
Built-In Best Practices: Our default configuration reflects best practices learned from thousands of implementations. You get a great setup without being a CTI expert.
Expert Support: When you have questions or issues, you're talking to people who know Open CTI inside and out. We can troubleshoot problems quickly and suggest solutions specific to your use case.
Integrated AI Features: The AI capabilities we discussed in our other guides come built into the same package. You don't integrate multiple vendors.
Mobile Apps Included: Full iOS and Android apps that provide the same experience as desktop, with all your custom configuration automatically synced.
Understanding Open CTI makes you a better admin and helps you troubleshoot when issues arise. But building and maintaining a production-grade Open CTI integration from scratch is a significant undertaking. PhoneIQ lets you leverage all the benefits of Open CTI without the complexity.
Making the Build vs Buy Decision
Should you configure Open CTI manually with a basic provider, or use a complete solution like PhoneIQ? Here's how to think about it.
Build it yourself if: You have simple calling needs with no power dialing requirements. You have developer resources to build custom features. You have time to troubleshoot and maintain the integration. You don't need AI features or advanced analytics. Your budget is extremely limited.
Use PhoneIQ if: You need power dialing for sales outreach. You want AI-powered conversation intelligence. You need advanced features without custom development. You want a solution that's maintained and updated for you. You value your admin team's time. You need reliable support when issues arise.
Most organizations find that the time and complexity saved with PhoneIQ far outweighs the cost difference versus trying to build equivalent functionality themselves.
Your Next Steps
If you're implementing Open CTI from scratch, follow the configuration steps we outlined. Test thoroughly before rolling out to your team. Document your setup and create training materials for users.
If you're struggling with an existing Open CTI implementation, work through the troubleshooting section. Don't hesitate to reach out to your provider's support team.
If you're evaluating whether to build or buy, consider requesting a PhoneIQ demo. See how much functionality comes out of the box and how little configuration is required to get started. Compare that to the effort of building and maintaining a custom integration.
Understanding Open CTI architecture and configuration makes you a more effective Salesforce admin regardless of which path you choose. But knowing when to leverage a complete solution like PhoneIQ instead of building from scratch is equally valuable.
Visit PhoneIQ.co to learn more about how we've simplified Open CTI configuration and added enterprise features that would take months to build yourself. Your sales team needs calling capabilities that work reliably and deliver real value. PhoneIQ gives you that without the configuration headaches.
Open CTI is powerful when implemented well. Make sure your implementation sets your team up for success rather than creating frustration and support tickets. Whether you build it yourself or let PhoneIQ handle it, the goal is the same: seamless phone integration that helps your team work more effectively.








