Skip to content
Salesforce Dictionary - Free Salesforce GlossarySalesforce Dictionary
ServiceBeginner

CTI Adapter

A CTI Adapter is the vendor-supplied JavaScript component that connects a telephony platform to Salesforce so agents can handle phone calls without leaving the console.

§ 01

Definition

A CTI Adapter is the vendor-supplied JavaScript component that connects a telephony platform to Salesforce so agents can handle phone calls without leaving the console. It loads inside the softphone panel and listens for events from the phone system. Those events become Open CTI calls that pop the matching record and write the call log. When an agent clicks a phone number in Salesforce, the adapter catches that click and tells the phone system to dial.

Adapters normally arrive as an AppExchange package from the telephony vendor and are registered in Salesforce with a Call Center definition file. Admins configure the call center record and the routing rules; they rarely touch the adapter code itself.

Salesforce has deprecated Open CTI, the framework underneath every one of these adapters. It sits in maintenance mode, is already unavailable in newly created Agentforce Service orgs, and retires on February 28, 2028. Existing adapters keep working until that date. Salesforce Voice, the product previously called Service Cloud Voice, is the named replacement.

§ 02

In plain English

Your phone system and your customer records live in two separate places. The adapter is the wire between them. When someone calls in, it tells Salesforce who is on the line so the right file opens on screen. The company that sells you the phone system writes that wire, not Salesforce.

§ 03

Worked example

scenario · real-world use

A municipal water utility runs a vendor softphone in its Service Console. A resident calls the outage line from +1-604-555-0188. The adapter catches the ringing event and calls searchAndScreenPop with that number. Salesforce finds one Contact match, Devon Whitaker, and opens his record with the related Case list already visible. The agent answers. Six minutes later the caller hangs up and the adapter fires saveLog. A Task is written with Subject set to Inbound call, CallType set to Inbound, CallDurationInSeconds set to 372, and WhatId pointing at Case 00051842. None of that required custom code in the org. The adapter was registered once by importing a Call Center definition file with reqInternalName set to AcmeTelephonyLightning and reqSalesforceCompatibilityMode set to Lightning.

§ 04

What the adapter actually does between the phone system and the page

Where the adapter runs, and why it is fenced in

The adapter does not run as loose script on the Salesforce page. It loads inside an iframe in the softphone panel, and every message between it and Salesforce travels over the browser Window.postMessage() API. Outgoing messages are targeted at Salesforce specifically, and each incoming message has its format and sender origin verified before anything acts on it. That is why one vendor's softphone cannot read the page around it or reach into a second vendor's panel. Traffic has to go through the published sforce.opencti interface. In a Lightning Experience org, reqAdapterUrl has to use https. Salesforce recommends it in Classic too, so traffic between your telephony server and the browser stays encrypted. In Salesforce Classic, admins also had to allowlist the adapter domain, including any non-standard port such as myserver:8500. Lightning console apps drop that requirement.

The Open CTI calls an adapter makes

Anything the adapter wants Salesforce to do, it does by invoking an Open CTI method. screenPop opens or focuses a record when a call arrives. searchAndScreenPop runs a search on the caller ID first, then pops what it finds. saveLog writes or updates the call record once the conversation ends. notifyInitializationComplete is the handshake fired when the panel has finished loading, so Salesforce knows the softphone is live. refreshView re-renders the current page after data has changed behind it. Past those, runApex invokes Apex and getSoftphoneLayout reads the configured pop and log rules. enableClickToDial and onClickToDial handle phone-number links. A family of setSoftphonePanel methods resizes and relabels the panel. Mapping telephony events onto those calls is the entire job of the component.

The Call Center definition file that registers it

Salesforce learns about an adapter through a Call Center definition file, an XML document built from three element types: callCenter, section, and item. reqInternalName is the one value that must appear in the file itself, up to 40 alphanumeric characters starting with a letter. reqAdapterUrl says where the softphone is hosted. reqDisplayName is the label shown in Setup. reqSalesforceCompatibilityMode decides which interface the component targets, and accepts Classic, Lightning, or Classic_and_Lightning. Omit it and the file quietly defaults to Classic, which is the usual reason a Lightning softphone loads as a blank rectangle. Other values can live in the file or be edited in Salesforce after import. From Setup, type Call Centers in the Quick Find box, select Call Centers, and click Import. To stand up a second call center on the same component, clone the first record instead of importing again.

Two different things get called a CTI adapter

Salesforce uses this phrase in two ways, and the collision trips people up. The original meaning came from Desktop CTI, the CTI Toolkit that predates Open CTI, where real software had to be installed on every agent machine. Open CTI exists to kill that model, which is why its own documentation advertises calling from a softphone without installing CTI adapters on your machines. Meanwhile the Call Center help pages still tell you to import a definition file for a newly installed CTI adapter, meaning the packaged browser component. When someone hands you a vague ticket about the adapter, ask first whether anything sits on the desktop. If not, you are dealing with browser-side JavaScript and a Call Center record, and there is nothing to reinstall on the endpoint.

Planning the exit, and what it actually costs

The retirement notice tells you where to go. It does not tell you what the move costs, and that is the part teams underestimate. The structural change is ownership. A third-party panel sits in an iframe and talks to Salesforce through a published interface. Salesforce Voice is a Salesforce product instead, so routing runs on Omni-Channel and supervisors watch live calls from Command Center. Transcription and Agentforce assist arrive with the platform rather than with a vendor. Getting there is still a telephony cutover: numbers to port, IVR trees to rebuild, agents to retrain, a carrier contract to unwind. Those run in quarters, not sprints. Get a number on it this year and treat your next vendor renewal as the real decision point.

The replacement has been renamed twice

The product the retirement notices send you to is Salesforce Voice, which is what used to be called Service Cloud Voice. Then Trailhead's partner-telephony module opens by describing itself as Partner Contact Center, formerly Salesforce Voice, while its URL still reads service-cloud-voice. Three labels are in circulation for closely related things. Treat the Open CTI end-of-life pages as authoritative on the destination, since those are what Salesforce updates when the plan changes. When you go looking for setup instructions, search all three names or you will miss half the material. Put the aliases in a glossary line at the top of your migration doc.

§ 05

How organizations use CTI Adapter

Uses the adapter's click-to-dial links so reps dial from the Account record, with each attempt logged against the renewal Opportunity.

Clones one Call Center record per client brand off a single adapter, so each queue gets its own softphone layout without a second package.

Keeps its existing adapter answering order-status calls while scoping a move to Salesforce Voice, with the retirement date as the budget deadline.

Was this entry helpful?
Help us write better definitions. Quick reactions or detailed edit suggestions.

About the Author

Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He writes and edits salesforcedictionary.com, published by KineticBit Inc., to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.

§

Test your knowledge

+5 pts / day

Q1. When does Salesforce retire Open CTI, the framework a CTI Adapter depends on?

Q2. A Lightning console app shows the softphone panel as a blank rectangle. Which definition file problem is the likeliest cause?

Q3. Salesforce's Open CTI retirement notices point customers at which product as the migration path?

§

Discussion

Loading…

Loading discussion…