Salesforce Zendesk Integration: The 2021 Guide (Step-by-Step)

Salesforce Zendesk Integration

Sales and customer support teams often work on different platforms like Salesforce and Zendesk. So normally they tend to work independently of one another. But these teams can benefit a lot from a Salesforce Zendesk integration as key customer data and tickets can be accessible to both sides and updated in real-time. 

Such integration will allow data to flow seamlessly between teams so they can work in harmony to deliver a coherent customer experience. 

This guide highlights why a Salesforce Zendesk integration is needed in the first place and how it can benefit your teams. Then it works towards choosing the right technology for this integration and finally, gives a step-by-step approach for implementing it.

Note: In this guide, we are using a software integration tool called Exalate. We will learn more about it as we go ahead. 

Here’s what we’ll cover in this article:

Why set up a Salesforce Zendesk Integration?

What is Zendesk? 

Zendesk is a popular customer support platform used by many mid and large-sized companies. Its main aim is to improve customer relationships. It has a lot of tools like helpdesk, email marketing, live chat, and customer engagement. 

zendesk

What is Salesforce? 

Salesforce is a cloud-based CRM platform that provides a single and shared view of the customer for different departments in the organization. It is customizable to adapt to different business needs and also has a variety of apps to make the customer experience better. 

salesforce

Why integrate Salesforce and Zendesk? 

It is likely your sales team uses Salesforce while your customer support agents use Zendesk. In such a scenario when teams are working in different environments, it often leads to silos. 

But sometimes these silos need to be broken and  information or expertise needs to be shared to deliver a consistent customer experience. All this without anyone having to leave their familiar platforms.  

Here, the first solution that comes to mind is for the teams to copy-paste information like tickets, customer queries and feedbacks manually between different platforms. And then follow the updates through emails or phone calls thereon. This involves a waste of valuable time and introduces manual data entry errors. 

The teams can benefit the most from an automatic, real-time information exchange between them so they always have the latest information. This will reduce errors and lead to a smooth information flow between them, leaving them free to work on improving the overall customer experience. 

A Salesforce Zendesk integration can help achieve all this. 

But before we see how it’s implemented, we need to learn how we can choose the right tool for implementing it. 

Choosing the Right Solution for a Salesforce Zendesk Integration

To ensure your integration delivers its purpose, it’s necessary to consider a few points when it comes to choosing your integration technology. 

Decentralized Integration and Security 

An integration tool should allow you to work in your trusted environment without having to worry about the other side. You should be able to control what you send to the other side and how you want to deal with data coming from the other side, independently. 

exalate autonomy

In this case, a decentralized integration where each side has the autonomy to decide what information is sent and received will ensure you don’t send critical or insider information across by mistake.  Added security measures like encrypted file transfers, secure protocols for exchanging information are also important aspects to consider. 

Flexibility 

It’s natural for your integration use case to change with time. As your expectations from the integration mature, so must the tool. It needs to be able to adapt to your changing workflows or systems. The data you initially wanted to share with your partner might change now or you might want to share something additional or filter some data out using advanced logic. The tool must be able to support all these changing requirements with minimal time and effort. 

Reliability 

Computer systems are vulnerable to breakdowns. It’s possible that your synchronization stops when this happens. The tool must then be able to resume without any manual intervention the next time your system is up and running. All the changes that need to be rolled out and the paused synchronizations that are pending must be applied in the same order as expected. 

exalate reliability

I choose Exalate as the preferred tool here because it was built to fulfill the above requirements. 

It supports decentralized integration through outgoing and incoming sync rules that control what information is sent and received from each side. It comes with a scripting engine that allows for complex and unique integration scenarios to be implemented with minimal configuration. Changes or updates are always queued in a sync queue to be applied automatically in the same order as their initiation in case of downtimes or failures. 

Note: You can learn more about Exalate’s security features in this whitepaper 

Let’s now proceed to set up a Salesforce Zendesk integration. 

How to Set up a Salesforce Zendesk Integration: the step-by-step approach

To start the integration between Salesforce and Zendesk, you must first install Exalate on both platforms, then establish a connection between them. Once that is done, you can start synchronization by configuring the connection and creating triggers. 

I will walk you through all these steps one by one. 

Step 1 – Install Exalate on Salesforce

You can currently install Exalate for Salesforce only through its Early Access Program. So the installation steps given here are specific to this program only.
Note: You can refer to the detailed procedure here.

You start by setting Exalate up in your Salesforce instance. For this, click the cog icon at the top right of the screen in Salesforce. 

Salesforce lightening app manager

Then go to “Apps” in the left sidebar menu and click “App Manager”. Now click on “New Connected App” to set up Exalate in Salesforce for the first time. 

Salesforce Lightnening app manager

After clicking this, a form asking you to enter some basic information will appear. Fill in the required details for your app. 

Here, I named the app “Exalate” and then entered an email address. 

Salesforce app manager

Now we move ahead and work on the API settings.  For this, click on “Enable OAuth Settings” and provide the call-back URL. This callback URL is specific to the Early Access program. 

Salesforce API

Next, we have to decide on the scope of access. Select the OAuth scopes shown above and add them to the right side using the arrow key “Add”. 

Once done, click the “Save” button at the top or the bottom of the page. Wait for some time for the changes to take effect. 

connect Exalate to salesforce

Now quickly check the OAuth policies of your connected app. For this in the left-hand menu, click Apps> Connected Apps> Manage Connected Apps and then select “Exalate”. There make sure the “Permitted users” is set to “All users may self-authorize”. If it’s not, follow these steps to get it done.

Your work at the Salesforce side is done here. 

To proceed, you now need to request for an evaluation license and choose Salesforce as your tracker. 

Salesforce integration page on Exalate

A pop-up form for requesting the integration will be displayed. To fill this form you need some information from your Salesforce instance, more specifically the “Consumer Key”, the “Consumer Secret” and your Salesforce tracker URL.  

Form for requesting Salesforce integration


To fetch the consumer key and the secret in Salesforce, quickly go to “Apps” on the left-hand menu and click “Apps Manager” as you did before. Find your newly created app which we named “Exalate” from the list. Click the arrow and then select “View”.  

salesforce app manager

You will see all the details of your connected app on this page, but you only need the “Consumer Key” and the “Consumer Secret”. Make sure to click the “Click to reveal” button in case the consumer secret is not visible. Copy both these values and keep them handy.

manage connected apps in salesforce

Your Salesforce tracker URL must be of the Classic version, not the Lightning edition. If you are already in the Lightning Edition, click on the profile icon on the top right of the screen and select “Switch to Salesforce Classic”. It will redirect you to the classic version and you can copy the URL from there. 

Salesforce classic

Now you have all the information required to fill the form. So fill in the “Consumer Key”, “Consumer Secret” and your Salesforce URL gathered above.

Next, select the “Organization type” of your Salesforce instance. We have selected “Production” here. But in case you don’t know which one to select, click here and find out. After you finish entering all the necessary information click “Submit”.

Exalate then sends you an email with your Exalate for Salesforce instance. Now you need to proceed with the app configuration. Click on the link in the email and allow access to Salesforce

Allow access Jira Salesforce integration

Next, Exalate asks you to enter your personal details. This is used by Exalate to activate your evaluation license, verify your instance, and making an admin account to receive error notifications.

Exalate for Salesforce

Fill them out and click “Agree and Submit”, agree to the EULA, and continue. 

You will receive an email asking you to verify your Exalate instance. Inside your email, click on “Verify Exalate instance”.

verify exalate instance for a Salesforce Zendesk Integration

And you will be redirected to your Exalate console for Salesforce. In case you are logged out of your Salesforce instance, follow these steps to log in again.

exalate email validation

Now you need to install Exalate on Zendesk. 

Step 2 – Install Exalate on Zendesk 

Exalate on Zendesk is installed via the marketplace, and the wizard is pretty easy to follow. 

After you log in to your Zendesk account, click on the cog icon on the left-hand menu. Under “Apps” select “Marketplace”. 

zendesk marketplace

Find Exalate by entering it in the search box. You will find an “Install” button next to the app. 

You will then be asked to select an account. This is applicable in case you have multiple ones. Select the account you want to install the app with. It can be an account from an existing user or you can create a completely new one for Exalate. 

Click “Install” after it’s done. 

exalate for Zendesk

Now, you can change the title of the app, enable restrictions or choose to go with the defaults. In either case, click “Install” when done. 

install exalate on zendesk

You will now be redirected to your Zendesk instance. Select the Exalate icon from the left menu. 

exalate for salseforce zendesk integration

Then click “Allow” to allow Exalate to access your Zendesk Account.

allow access to exalate for Zendesk

Fill in the pop-up that appears so that Exalate can verify your instance. Click “Agree and Submit” and you will receive a verification email. 

exalate for Zendesk registration

In the email, click “Verify Exalate instance” and you will be redirected to the Zendesk portal. 

verify exalate instance

After a successful verification, you can proceed to avail the 30-day free trial. To get started, click “Continue” and go to the next step. 

exalate email validation

Step 3 – Establish a connection between Salesforce and Zendesk 

Now that we have installed Exalate on both Salesforce and Zendesk, we can establish a Salesforce Zendesk integration. To do so, one side initiates the connection and the other side accepts it. Once the connection has been established, information can be passed between them according to the conditions specified. 

You can start initiating the connection from either Salesforce or Zendesk. For this guide, I start with Salesforce. 

On the Exalate console in Salesforce, click the green “Initiate Connection” button. In case you are not on this screen, you can navigate to “Connections” in the left-hand menu. This tab lists all the connections you have set up. If it’s your first time, the list is empty. 

initiate salesforce Zendesk connection

On the next screen, enter the destination instance URL. Since I am initiating from the Salesforce side, the destination URL will be of the Zendesk instance. 

Exalate will now perform a quick check to see if it’s been installed on the destination side. If yes, then you get additional selection options. 

exalate basic mode

These include selecting the mode of connection. 

Exalate comes in the Basic and Script modes. 

The Basic mode is suitable for simple synchronization use cases. It includes some predefined mappings and sync rules that cannot be modified. Also, this mode is available through a Free Plan (you can get started here) that allows up to 1000 free syncs per month. So it’s useful to experience the way Exalate works firsthand with this plan. You can choose to upgrade to the Script mode anytime you want. 

The Script mode comes with advanced configuration features and sync rules that can be modified to suit complex or customized use cases. We recommend you use the Script mode since it is customizable for unique integration needs.

We will cover both these modes one by one since they have different flows. 

Using the Basic Mode

After you select Basic mode, click “Next”. 

You will be required to verify if you have admin access on the destination side, Zendesk in our case. Since I have access, I click “Yes, I have admin access”. In case you don’t, follow these steps

In either case, click “Initiate”.

initiate exalate basic connection

After verification, you will be redirected to the Zendesk side. 

Here you need to enter the ticket key. This means the key specified will be immediately synchronized on the Salesforce instance. With this, you can start synchronizing Zendesk tickets or Salesforce entities right away.

You can also create triggers for synchronization such that when the condition is met, tickets or entities are automatically synchronized with the other side. If there are already a number of tickets or entities you want to synchronize, you can perform a “Bulk Connect” on them. If you want to sync individual tickets you can use the connect operation instead. 

Note: The connect operation is currently available only on Zendesk.

After entering the ticket key, click “Exalate”.

successful Salesforce Zendesk basic connection

The same screen on the Salesforce side looks like this. 

Synchronization of Case in Salesforce

You can enter the Case key and proceed to synchronize it on the Zendesk side. 

Here, the Case key needs to be fetched from the URL of the Case, as shown in the image below.

salesforce case URL

For the synchronization to happen, you need to wait for a few minutes. Appropriate status messages are displayed in the meantime. 

accept salesforce Zendesk sync invitation

Upon successful synchronization, the status is displayed. 

You can follow the new Case created on the Salesforce side by clicking on the remote link generated or even refer to the ticket on the Zendesk side by clicking on its link. 

successful Salesforce Zendesk sync

Using the Script Mode

If you decide to go with the Script mode, select it and click “Next”.

Salesforce Zendesk sync script mode

Enter the connection details and give names to the local and the remote instances. The local instance in our case is Salesforce since we are initiating the connection from it and the remote one will be Zendesk. 

You can edit the name of the connection right away. Don’t forget to enter a relevant description. This is useful when you have a lot of connections. 

 Take your time and click “Initiate” once you are ready. 

initiate Salesforce Zendesk Integration

Now Exalate will generate an invitation code. This is a unique code that you need to copy on the destination side to complete the connection. Click on “Copy invitation code” and save it somewhere. Then click “Go to remote” and you will reach Zendesk. 

copy exalate invitation code

If you don’t click on “Go to remote”, you can still close the window and your connection will be displayed in the “Connections” list with a status called “Pending”. This status will become “Active” once you finish setting up the connection on the Zendesk side. 

I pressed the “Go to remote” button and was redirected to the “Connections” screen on the Zendesk side. If you are not on this screen, you can still reach it on the left-side menu of Exalate. Over there, click “Accept Invitation”. 

This will open up a multi-line text box for you. The invitation code you saved earlier needs to be pasted here. Once done, click “Next”.

accept exalate invitation code

Now the connection has been established. To configure the connection and control what information is sent to the other side, click on the “Configure Sync” button shown below.

successful zendesk salesforce sync

Step 4 – Configure the connection to control what information is shared

As mentioned earlier, you can continue configuring the connection by clicking the “Configure Sync” button. 

But in case you don’t want to do it immediately, you can come back and configure it later. For this, go to the “Connections” tab on the left side menu and you will see your latest connection with the status shown as “Active”. 

I am showing this on the Zendesk side, but you can do the same thing on the Salesforce instance as well. Exalate has a uniform UI so it won’t be a problem. 

list of exalate connections

Right in front of the connection name, you can see an edit connection icon. Click that to begin your configuration. Here you can also find the antenna icon to go to the other side of the connection. With the help of the three dots, you can either activate or deactivate your connection or even delete it if you don’t require it anymore. 

The edit connection screen consists of 4 tabs: “Rules”, “Triggers”, “Statistics” and “Info”.

We will see the rules tab in this step and triggers in the next. 

The Statistics tab gives an overview of the sync statistics like the number of issues, comments, and attachments under synchronization.  It also mentions the number of the last issues synced and the date and time of it. 

The Info tab gives general information about the connection like its name, type, description, and destination URL. 

Let’s now see how the “Rules” tab works. 

Salesforce Zendesk sync rules

Exalate has 2 kinds of sync rules: incoming and outgoing written in the Groovy Scripting language. They are simple to understand and follow. These rules exist on both sides of the connection.

The outgoing rules decide what information is sent from a particular platform to the other side. 

Incoming rules, on the other hand, decide how the information coming from the other side is interpreted. 

Having such rules on both sides of the connection provides autonomy so that each side can control the information it sends and receives independently. 

These rules can be edited as well. If there is certain information you do not wish to share with the other side, you can either delete that line from the respective sync rules or temporarily delete it with the help of comments. 

Comments given before the start of the line will allow that line to be ignored at the time of synchronization. For commenting a single line use “//”. For commenting a block of lines, put “/*” at the start of the block and “*/” wherever you want the comment to end. 

Suppose you don’t want to sync the description of a Case from Salesforce, you simply add a comment as shown below. And you are all set! 

exalate outgoing sync rules

If instead of deleting, you wish to add certain new information to be shared, you can simply add scripts to the rules. 

For this, let us consider the “Rules” tab on the Salesforce side. It looks like this.

salesforce to Zendesk outgoing sync rules

Suppose in addition to Case, we want to also sync Tasks in Salesforce. We simply add the following script in the image shown above. 

if(entity.entityType == “Task”) {

    replica.key        = entity.Id

    replica.summary    = entity.Subject

    replica.description = entity.Description

}

The changes you make will be applied from the next sync onwards. 

Step 5 – Create triggers for automatic flow of information 

If you are already done editing the sync rules, click on the “Triggers” tab to set conditions for automatic synchronization. Whenever the condition is met, the synchronization takes place. 

To create triggers click on the “Triggers” tab that shows the list of triggers that are created. If this is your first time, then click the green “Create Trigger” button. 

Salesforce Zendesk Integration triggers

Note: Triggers can also be created by clicking “Triggers” on the left-hand menu of the Exalate console. The only difference in this approach is that while creating a trigger you need to select the connection to which the trigger is applied. All the other fields are the same. 

Once you click the button, an “Add trigger” screen will pop up. Here, you mention the entity type to which the trigger is applied.

salesforce to zendesk integration triggers

The “If” field here expects you to enter the condition under which the ticket is to be synchronized. This section basically is for entering the platform-specific search queries.

In the example shown above, according to the Zendesk search syntax, tickets that have an open status will be synchronized. 

The above trigger screen on the Salesforce side will look like this. 

Note: There are many Salesforce entities you can sync using Exalate, but the most common ones are: Case, Opportunity, Product, Task, and Account. 

create triggers

There is an additional option of selecting specific conditions to filter Salesforce entities for synchronization. For instance, if we select “Opportunity” then we can enter the name, description, quantity, etc of the Opportunity and create a trigger condition.

Or we can simply toggle the “Use search query” button to enter a query using the Salesforce Object Query Language as shown below.

create triggers using SOQL

You can even add notes to describe what a particular trigger is used for. 

There is a toggle button(“Active?”) that either enables or disables the trigger. This is useful when you don’t want to create the trigger all over again, so instead, you simply disable it. Remember to make it active if you want the tirgger to work.

Click “Add” after making the changes. 

Once the trigger has been added, it can be viewed on the “Triggers” tab. There is an option to edit or delete the trigger from here. You also choose to “Bulk Exalate” existing tickets or Salesforce entities from here. Once done, click the “Publish” button and let the synchronization work on its own. 

exalate triggers tab

Step 6 – Start synchronization between Salesforce and Zendesk

After you’ve created your Salesforce Zendesk integration, synchronization automatically starts depending on the triggers and sync rules you have set. 

The newly created or updated tickets will be synced with the Salesforce entities or vice versa, in accordance with the conditions you give. You can even control the direction of the information flow and make it either uni or bi-directional. You can also sync the existing tickets or entities with the help of “Bulk Connect”. 

Common Use Cases

It would be helpful for the sales team to get updates on the status of tickets related to key customers, where a ticket raised in Zendesk automatically reflects in Salesforce. Then each time there is a status update on that particular ticket, it gets updated on Salesforce in real-time. This way the sales teams can build towards making better customer relationships. 

Similarly, customer support agents using Zendesk can review Cases in Salesforce and gather information from it, like the customer queries and feedback, to resolve tickets faster. 

They can also benefit from seeing the customer’s deal size in Salesforce. It will help them with triaging and prioritizing tickets of high-value customers. They could further develop an approach to help them faster. 

You can also sync all the support tickets to the organization level, so they would be an overview of all the tickets a particular organization raised. 

Customer success representatives can benefit from having a complete customer overview from Salesforce so they can enhance their customer experience and keep them happier.  

Conclusion

We saw how different teams, like sales and customer support, working in silos does not always work. Information, if shared automatically and in real-time can help deliver a coherent customer experience. 

For this, we chose Exalate as the tool that provides a Salesforce Zendesk integration in the most flexible way and supports key integration features like decentralized architecture and reliability. 

We also went over the steps to setting up a Salesforce Zendesk integration and saw a few common use cases supported by such an integration afterward. 

Recommended Reads:

Comments are closed.