Setting up Salesforce Open CTI 2.0 Chat
These steps will guide you through the Salesforce and CxEngage setup and configuration of your chat integration in order to accept and handle chats directly within their Salesforce instance while benefiting from the flow, queue, and other configurable options within CxEngage.

-
Log into Salesforce.
-
Click the Settings icon in the upper right corner.
-
Click Service Setup from the menu. The Service Setup Home page displays.
-
In the Recommended Setup section, click View All.
-
Select Chat with Customers on the Setup dialog.
-
On the Chat with customers instantly window, click Start.
-
On the Create a chat queue window, enter aQueue Name, for example, Enghouse_External_Chat_Queue.
-
Enter a group name in Name this Group, for example, Enghouse_External_Chat_Group.
-
In the list of users, check the box next to a user's name to add them to the queue. Check the box in the User header to Select all users.
-
Click Next.
-
On the Prioritize chats with your other work window, under Create a Routing Configuration for Enghouse_External_Chat_Queue, enter Enghouse_External_Chat_Queue_Routing for the Name.
-
Enter 1 as the Priority.
-
Click Next.
-
On the Adjust your agents' chat workload window, enter 5 as the Work Item Size.
-
Enter 20 as the Agent Capacity.
-
Click Next.
-
On the Let's make chat work on your website window, enter your chat Web URL.
-
On the What's your type? window, click Service.
-
Click Next.
-
On the In case your team's busy window, ensure the Offline Support toggle is set to Off.
-
Click Next.
-
On the Grab your code snippet window, click Copy to Clipboard.
-
Paste the copy into Notepad and Save on your local machine. Use the code snippet as needed for your website.
-
Click Next.
-
Click Done.

-
Log into Salesforce.
- On the Setup panel, in the Quick Find box, enter Routing.
-
Under Omni-Channel, select Routing Configurations.
Note: If Omni-Channel is not enabled, you will need to turn it on before continuing. -
In the Routing Configurations list, click Edit on the Enghouse_External_Chat_Queue_Routing line.
-
Under Routing Settings, for the Routing Model, select External Routing.
-
Click Save.

- On the Setup panel, in the Quick Find box, enter Presence Statuses.
-
Under Omni-Channel, select Presence Statuses.
-
On the Presence Statuses page, click New.
-
Enter Available - Chat for the Status Name.
-
Enter Available_Chat for the Developer Name.
-
Under Status Options, select Online.
-
Under Service Channels, move Chat from the Available Channels list to the Selected Channels list.
-
Click Save.
Ensure that Presence Statuses are assigned to the appropriate profiles in Salesforce so that they are available to your agents.

- On the Setup panel, in the Quick Find box, enter Visualforce.
-
Select Visualforce from the search results.
-
On the Visualforce page, click New.
-
Copy and paste the following:
<apex:page >
<head>
<style type='text/css'>
.embeddedServiceHelpButton .helpButton .uiButton {
background-color: #005290;
font-family: "Arial", sans-serif;
}
.embeddedServiceHelpButton .helpButton .uiButton:focus {
outline: 1px solid #005290;
}
</style>
</head>
<body>
// Add the code that was copied from the code snippet window clipboard
</body>
</apex:page>
-
Click Save.

To create a queue in Salesforce that will own the cases created by incoming chats:
- Under Administration Setup, go to Manage Users > Queues to open a list of queues in your organization.
- Click New.
- Enter the Label that you want, for example, CTI_External_Chat_Queue.
The Label is the queue's display name in Salesforce. The Queue Name will automatically populate based on the Label.
-
Under Configuration with Omni-Channel Routing, click the Routing Configuration search and from the list, select the routing configuration created for chat, for example, Enghouse_External_Chat_Queue_Routing.
- Under Supported Objects, highlight an item under Available Objects and click Add to move it to Selected Objects. Messaging Session, Case, and Voice should be selected.
- Under Queue Members, select the members who will have access to the queue (roles, users, or groups) from the Available Members list and click the Add arrow to move them to the Selected Members list. At minimum, select your name in the list.
- Click Save.
For detailed information on queues in Salesforce, see Queues and Create Queues.

To create a fallback queue in Salesforce that will own the cases created by incoming chats:
- Under Administration Setup, go to Manage Users > Queues to open a list of queues in your organization.
- Click New.
- Enter the Label that you want, for example, Fallback_Chat_Queue.
The Label is the queue's display name in Salesforce. The Queue Name will automatically populate based on the Label.
- Under Supported Objects, highlight an item under Available Objects and click Add to move it to Selected Objects. Messaging Session should be selected.
- Under Queue Members, select the members who will have access to the queue (roles, users, or groups) from the Available Members list and click the Add arrow to move them to the Selected Members list. At minimum, select your name in the list.
- Click Save.
For detailed information on queues in Salesforce, see Queues and Create Queues.

Ensure that digital experiences are enabled in Salesforce.
- On the Setup panel, in the Quick Find box, enter Digital.
- Under Feature Settings > Digital Experiences, select Settings.
- In the Enable Digital Experiences section, ensure that the box is checked for Enable Digital Experiences.
- Click Save.

- On the Setup panel, in the Quick Find box, enter Messaging.
- Under Feature Settings > Service > Messaging, select Messaging Settings.
- Click New Channel.
- Click Start.
- On the Add a Messaging Channel window, click Messaging for In-App and Web.
- Enter the Channel Name, for example, Enghouse Chat.
- The Developer Name will populate based on the Channel Name you enter..
- Select Web as the Deployment Type.
- Enter the Domain for your channel, for example, enghouse.com.
- Click Next.
- Select Omni-Queue as the Routing Type.
- Select Enghouse_External_Chat_Queue as the Group.
- Click Save.
- On the Terms and Conditions window, check the box that confirms you read and agree to the terms.
- Click Save.
- Wait on the page while your channel is built.
The Messaging for In-App page displays when your channel is created.

Once you create your channel, you must publish it.
- On the Setup panel, in the Quick Find box, enter Deploy.
- Under Feature Settings > Service > Embedded Service, select Embedded Service Deployments.
- On the Embedded Service page, Click on your chat channel name in the list. The settings page opens for your channel.
- Click Publish. This can take up to 10 minutes.
- Click the Test Messaging link for instruction on how to test your messaging deployment.

As part of setting up CxEngage integration with Salesforce for chat, you need to create and subscribe to a Push Topic in Workbench. Push Topics are a connection between Salesforce and CxEngage that recognize when there is a new chat message in Salesforce and sends that information to CxEngage.
![]() |
Before you complete these steps, ensure that you have completed all of the steps to configure your Salesforce and chat settings. |
Creating a Push Topic
- Go to https://workbench.developerforce.com/.
-
Select either Production or Sandbox depending on which environment your Salesforce organization is in.
- Click Login with Salesforce.
Make sure that you log in with the same Salesforce account for the Salesforce organization that you are setting up with the integration.
- Go to data > Insert.
- For Object Type, select PushTopic.
- Select Single Record.
- Click Next.
- For the Chat PushTopic enter these values:
- ApiVersion: Select the API version to use
- Name: AWChat
- NotifyForFields: Referenced
- NotifyForOperationCreate: true
- NotifyForOperationDelete: true
- NotifyForOperationUndelete: false
- NotifyForOperationUpdate: true
- Query: Select Id, Status, UserId, WorkItemId from AgentWork
- Click Confirm Insert.
- For the final Chat PushTopic enter these values:
- ApiVersion: Select the API version to use
- Name: PSRPushTopic
- NotifyForFields: Referenced
- NotifyForOperationCreate: true
- NotifyForOperationDelete: true
- NotifyForOperationUndelete: false
- NotifyForOperationUpdate: true
- Query: Select Id, Serial, GroupId, WorkItemId, IsPushed, IsTransfer, ServiceChannelId, LastDeclinedAgentSession, CreatedDate from PendingServiceRouting where RoutingModel = 'ExternalRouting'
-
Click Confirm Insert.
-
Use the SOQL Query Builder to test your PushTopics.

- Log in to the CxEngage for your region.
- Navigate to Configuration > Integrations.
- Click the existing active Salesforce integration to modify it.
- In the Listeners section, click +.
- Enter the following details for the chat listener:
- Name: Enter Salesforce Chat.
- Active: Click to enable the listener. When the indicator is green, the listener is enabled. The Salesforce integration must be enabled before you can enable the listener.
- Listener Type: Select OmniChannel.
- Routing Topic: Enter PSRPushTopic.
- Agent Work: Enter AWChat.
- Click Submit.
Test your chat setup. Open Skylight 2.0 and select OmniChannel.
Important: Once you have updated to Salesforce Open CTI 2.0 you must also migrate your data and users. For detailed instructions see Migrating Data to Open CTI 2.0.