How to Integrate Zendesk and Salesforce in 5 Steps

Salesforce Zendesk integration

This article was originally published on the Zendesk Community and the Salesforce Community.

Do I need an integration?

I have often come across companies that have their sales team working in Salesforce and their customer support team working in Zendesk. 

But with such different applications, these teams often end up working in silos. For them to deliver a coherent customer experience, these silos need to be broken without leaving your favorite platforms. 

So a Zendesk Salesforce integration is needed where information is exchanged automatically and bi-directionally in real-time. This will keep the teams up with information useful to each other.  

With this in mind, I thought of putting together a post to help set up a step-by-step integration process between Zendesk and Salesforce. 

Choose an Integration Solution

The tool I use for this tutorial is called Exalate. It is a bi-directional synchronization solution that integrates different platforms like Zendesk, Salesforce, Jira, ServiceNow, Azure DevOps, GitHub, and more. You can even implement the same tracker integrations using Exalate; for instance, integrating multiple Salesforce instances

This app offers each side independent control over their configurations, so no worries about admins messing up each other’s sync. We will see in a while how it is done. 

Let’s get to the implementation part first. 

Implementation Using Exalate 

The following are the basic steps: 

Step 1: Install Exalate on Zendesk and Salesforce

First Exalate needs to be installed on both Zendesk and Salesforce. The installation is done via Zendesk marketplace and AppExchange from Salesforce and is pretty straightforward and easy to follow. So stick around while it’s done.  

Step 2: Establish a Connection

Next, you need to create a connection between Zendesk and Salesforce. One side initiates the connection and the other side accepts the connection invitation. 

So at either end, under the ‘Connections’ tab of the Exalate menu panel, click on ‘Initiate Connection’. 

Exalate console on Salesforce

Suppose you start with Salesforce and enter the destination instance URL, i.e the Zendesk URL. 

You will now choose between the Script mode or the Basic mode. 

The Basic mode is used for syncing simple tickets or Case information and you can’t configure it. So it is suitable for basic integration cases and is on the free plan

Initiate connection in Exalate

The Script mode is based on a Groovy-based scripting engine. So as an Exalate admin, you can control both the incoming and outgoing information independently. This is possible with the help of incoming and outgoing processors that filter information to be sent and received at both ends. 

On the Exalate UI, they are configured using ‘Rules’ aka Sync Rules. This mode gives the necessary flexibility to support complex or advanced integration cases. 

Proceed to give a local and remote name to your instances and a connection name will be generated, which can also be changed.

script mode sync

An invitation code is generated. Copy it and then paste it on the destination, i.e Zendesk in our case. 

And that’s all that is needed to create a connection. 

script mode connection

Now that you have created the connection, let’s configure it.

Step 3: Configure the Connection to Control What Information to Share 

Sync rules that we discussed above are used to control what information needs to be sent and received. When you edit the connection or click on ‘Configure sync’ above, you will see something like this.

Sync rules in Zendesk

I will throw light on ‘Rules’ in this section. 

As seen, ‘Outgoing sync’ and ‘Incoming sync’ denote information flowing out of or into the 2 platforms. 

The replica is an empty placeholder and acts as a message or payload to send the required fields from one side to the other. 

You can save the information you want to send in the ‘Outgoing sync’ and then map it to the ‘Incoming sync’ of the receiving side. 

If there is some additional information apart from the default scripts presented above, then you simply add it to the ‘Rules’ tab. For instance, if you want to send some custom fields from Zendesk to Salesforce then you write: 

replica.customFields. “CF Name” = issue.customFields. “CF Name”

in the Outgoing sync. 

If there is certain information that you want to stop syncing, then simply comment or remove those lines from the code. 

Once you have worked on configuring the ‘Rules’, it’s time we head towards creating triggers.

Step 4: Configure Triggers

Triggers are used to start the automatic synchronization of information once the conditions you set are fulfilled. Start by clicking on the ‘Triggers’ tab to create them. 

On the Zendesk instance, you will use the Zendesk search syntax for creating triggers whereas, on the Salesforce instance, you will use the SOQL (Salesforce Object Query Language). 

First, select the entities to which the trigger applies from the drop-down list. Then in the ‘If’ section enter the trigger query. You can also choose the entities you want to create a trigger for using a drag-and-drop

Triggers in Salesforce


Activate the trigger and ‘Publish’ the changes. 

You can also perform ‘Bulk Exalate’, a feature that allows you to synchronize all existing entities that meet the trigger condition. 

Step 5: Synchronize Information

Once all the configuration is done and the trigger condition is met, then synchronization will start as per the ‘Rules’ you have set. So sit back and enjoy!

NoteThere is also a detailed article on a Zendesk Salesforce integration if you like to read more about it. 


At some point in using software, we have all felt the pain of making different software communicate with each other. Exalate helps to ease that pain a little and we saw how. If you feel this tool can help with your use case, then feel free to book a demo and talk with one of our experts. 

Comments are closed.