Page tree
Skip to end of metadata
Go to start of metadata

xCALLY Shuttle provides a seamless CTI integration with Salesforce,  customer relationship management (CRM) system. The integration works on Salesforce Enterprice, Ultimated or Performance.

The integration automatically creates a Task for each call, according to the configured Queues and Triggers.

The Task is opened and shown to the Agent on the same TAB; the Agent can also manage calls using a phone embedded on the Salesforce interface.

The guide contains these sections:

Connected App

In order to use the Integration you have to create, in Salesfoce, the xCally Shuttle Connected App, following the two steps below:
1. After the login, the Administrator has to go in the Setup section. In the menu, on the left, he has to click on Build -> Create -> Apps and then on the New button in the Connected Apps section.

2. Insert the following data into the New Connected App:
- Connected App Name: xCally Shuttle
- API Name: xCally_Shuttle
- Enable OAuth Settings: Enabled
- Callback URL:
- Selected OAuth Scopes:
- Access and manage your Chatter feed (chatter_api)
- Access and manage your data (api)
- Access custom permissions (custom_permissions)
- Access your basic information (id, profile, email, address, phone)

- Allow access to your unique identifier (openid)
- Full access (full)
- Perform requests on your behalf at any time (refresh_token, offline_access)
- Provide access to custom applications (visualforce)
- Provide access to your data via the Web (web)

Here you can find all the information about the Connected App creation:

Important configurations and hints

The integration between xCally Shuttle and Salesforce uses the new Shuttle Push Technology in order to speed the Task creation and agent pop-up.
In order to have it working properly please note that:

  • the integration WORKS ONLY if the Agents are logged on the XCALLY Phone bar (minimum version required: 3.7). The Agents can manage calls through the XCALLY Phone bar or through the embedded phone on the Salesforce console. The login on the Shuttle Agent Web interface is optional.

  • the integration WORKS ONLY if you force Chrome to always load the script.

    1. Go under "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" and select chrome.exe. Click with the right mouse button on it. Select Send to Desktop in order to create a shortcut.

    2. Go to the Desktop and click with the right mouse button on the Chrome icon. Select Properties and, under the tab called Shortcut, edit theTarget field adding after the application path --allow-running-insecure-content

    Target Field Sample: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-running-insecure-content

    Please note that your Agents must launch the browser ONLY from the Chrome Desktop icon.

    3. Verify that the point 2 has been correctly applied on your Chrome browser, launching the command chrome://version/strings.js on the Chrome nav bar. If everything is ok you will see the following screenshot (in particular the text highlighted). If you can't see the "--allow-running-insecure–content" string, please do again the step 2.


    Turn off Content Sniffing Protection in Salesforce Setup -Security Controls -> Session Settings.

  • we suggest you to use the same Agent name on XCALLY and Salesforce.

  • please check on Salesforce that the field Type of the Task is enabled, since it will be used to set the type of call.

    1. Go under Build -> Activities -> Task Fields
    2. Select Type

    3. Select View Field Accessibility

    4. Check if the Field Access is editable for the level of the user that you inserted in xCALLY Shuttle. If it is Hidden, please click on it.

    5. Set Field-Level Security as Visible

How it works*

*from version 2.4.26 

Create a new Integration - Salesforce Admin

In order to set the integration on Salesforce you have to create a new Call Center and a new XCALLY Softphone application following the steps below.

XCALLY Call Center Adapter

  • Go to Setup -> Build -> Customize -> Call Center -> Call Centers 

  • Click on the Import button

  • Download the call_center.xml file and upload it has shown below:

    Now you will see the created Call Center, called xCally Call Center Adapter

  • Click on edit and, in the Shuttle parametersset your Shuttle IP in the host field. Finally click on Save.

    Please do not edit:

    - the parameters contained in the General Information section, in particular the CTI Adapter URL!

    The CTI Adapter URL should be

    - the Inbound parameters. If you enable them your integration will not consider the configurations made on Shuttle (for example Queues and Triggers) so it will not work as you planned but as the basic Salesforce Light integration.

    Please edit the Outbound parameters ONLY if you want to enable the Advanced outbound integration (see here).

  • Under the Shuttle parameters, you can see the Call Centers Users section, where you can enable Users to use the integration clicking on the Manage Call Center Users button.
  • Under the Fields association section you can associate the Activity fields that will be populated after the call hangup. Please see here: HangupHandler

XCALLY Softphone App

  1. Go to Setup -> Build -> Create -> Apps
  2. Click on the New button and follow the steps below:
    1. Select the Console Type
    2. Define the App Label (the App Name is automatically created after you insert the App Label)
    3. Optionally, specify a logo
    4. Select which objects you want to include (i.e. Cases, Home, Accounts, Leads...)
    5. Finally select which Users can access to the new App

Create a new Integration - Shuttle Admin

To create a new Integration click on the button New Integration and fill the form with the following information:

You can choose a Name which represents the Integration and then fill the Username and Password fields, which require the same username and password of an Administrator Salesforce Account. Then compile the URI field with your Salesforce URL and the Integration Type, in this case selecting Salesforce from the dropdown menu.

IMPORTANT: the URI must end with /

e.g. -> CORRECT URI -> WRONG URI, the integration won't work!

The Enable Lead Search means that the integration seeks the customer in the Leads, then in the Contacts. If it doesn't find anything on Salesforce, it creates a Lead. Finally the integration creates a Task, associating it to the Contact/Lead and the Agent.

The Embedded flag means that, by default, the created integration will be the Embedded one. If you would like to use the Salesforce Classic integration, please deselect it.

You also have to insert:
- the ClientID and Client Secret, that you can find in the SalesForce App Settings
- the Security Token, which is sent by email and must be reset every time you change the password in SalesForce.

After the creation of the Integration, you can edit parameters or remove it.

Create a Trigger

Now let’s focus on the Triggers Section: here you can set how the integration works by adding a new Trigger. To create it click on New Trigger and choose your integration strategy filling the form:

Through the Event field you can decide when the integration starts, so when the Salesforce Task page (dedicated to the actual call, which includes all the relevant fields of the caller) will be created:

  • Ringing: when the phone is ringing, before the agent’s answer
  • Up: when the agent picks up the call
  • Hang up: when the agent hangs up the call
  • Unmanaged call: when the caller has hang up before talking with an agent

You can also choose for which Queue the integration is valid. If you need to apply the Integration on more queues, you have to create one trigger for each queue.
Finally you have to select the Salesforce Integration.

After the creation of the Trigger you can edit parameters or remove it.

Custom fields

Custom Case Fields are typically used to gather more information about the support issue or product or service in Salesforce.
Using Shuttle you can now create a MAPPING between the Salesforce custom field key and the available field values.
In order to do it just enter in the Shuttle administration web interface -> Section Integrations and add your custom field mapping in the Custom Fields sub-section clicking on New Custom Field.

Fill the form with the requested information:


Custom Field ID: insert here the Salesforce custom field name

Prefix: String prefix

- Available Fields

  • From: Caller 
  • Date: Enter Time Call 
  • To: Called 
  • Unique ID: Asterisk Unique ID Call 
  • Id: Caller ID Zendesk 
  • Recording Link: Link Recorded Call 
  • Name: Caller Name 

  • SIP: Shuttle SIP 
  • Queue: Shuttle Queue 
  • Agent: Shuttle Agent 
  • Position: Queue’s Position 
  • Count: Queue’s Count 
  • Trunk: Shuttle Trunk 

- Suffix: String Suffix 

- Integration: Integration Name

The result is that in Salesforce your agents will get the Case pop-up with the custom fields auto-filled.

In this example the Custom Field ID is:

The Result

The Agents who uses the XCALLY Softphone console can manage calls directly from the embedded phone in the Salesforce interface, using also the click to call function.

According to the Queues and Triggers configuration, the Agent will see the Task related to the call appear on the same tab of his Salesforce console.



Advanced Configuration for Outbound Calls

The integration works ONLY for Agents logged with the XCALLY Phonebar 3.7.

Outbound calls - show popup

Example: the Agent wants to call the Customer of the Case #00001147. He just need to click on the Contact Phone number and the call will start through the OpenCTI integration and click to call feature.

A new Task, related to that Case (in general, to the Salesforce Object from which the call has been originated), is created by the integration (LogCall outbound parameter -> true) and shown to the Agent (Popup outbound parameter -> true).

Here the parameters set on the Salesforce Call Center application:


The Task is also automatically added on the Case Open Activities, as shown below:



Outbound calls - hide popup

Example: The Agent wants to call the Customer of the Case #00001147; he just need to click on the Contact Phone number and the call will start through the OpenCTI integration and click to call feature.

 A new Task, related to that Case (in general, to the Salesforce Object from which the call has been originated), is created by the integration (LogCall outbound parameter -> true) but not shown to the Agent (Popup outbound parameter -> false).

Here the parameters set on the Salesforce Call Center application:


The Task is also automatically added on the Case Open Activities, as shown below:


Hangup Handler

On the Call center file you find the section Fields association where you can associate the Activity fields that will be populated after the call hangup.

In order to use this, you need to install the hangup manager script (hangup-manager.js).


For the standard Task Fields mapping, you have to use the Field Name value.

For the custom Activity Fields mapping, you have to use the API Name value.

See the images below.


The Integration doesn’t work? Check carefully the following steps:

  • Be sure that you are using Salesforce Enterprice, Ultimated or Performance.

  • Verify that the integration data you gave are correct. Check if:
      • the username and password correspond to a valid Salesforce Admin Account
      • the Salesforce URI is correct
      • the ClientID, Client Secret and Security token are correct.

  • The Agent is correctly associated to the Queue specified in the created Triggers.
  • The Agent is correctly logged into the XCALLY Phone bar. 

  • When you create an agent on Salesforce, remember to check that he/her can see/edit the components used by the APIs (Contact, Case, Task, Lead).
  • You have correctly forced Chrome to always load the script.
    If you see on the browser the shield icon, it means that you have not configured it correctly:


How to debug the application

If you want to debug the application you have to open the Console developer (on Chrome, ctrl+shift+j to open it or Menu -> More tools -> Developer tools -> Console tab).

If the application is running correctly, you will see, under the Logs, something like in the image below; instead, if you see some error messages, please contact our team! 

  • No labels