Notice: Trying to access array offset on value of type int in /var/www/html/wp-includes/formatting.php on line 889 Warning: fopen(/var/www/html/wp-content/themes/phlox-pro-child/temp/pdf/cache/gilroy_bold_3af507257cc34acc8a5b483f81bf64e3.ufm): failed to open stream: No such file or directory in /var/www/html/wp-content/themes/phlox-pro-child/libraries/dompdf/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php on line 45 Warning: fwrite() expects parameter 1 to be resource, bool given in /var/www/html/wp-content/themes/phlox-pro-child/libraries/dompdf/vendor/phenx/php-font-lib/src/FontLib/AdobeFontMetrics.php on line 191 /var/www/html/wp-content/themes/phlox-pro-child/temp/pdf/12485.pdf

Salesforce Zendesk Integration: The 2023 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 toward choosing the right technology for this integration and finally, gives a step-by-step approach to 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:

Get the Salesforce Zendesk Integration Guide

Learn how to achieve seamless integration between Zendesk and Salesforce, step-by-step.

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 a 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 feedback 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.  Security measures like encrypted file transfers and 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. 

If you prefer a video tutorial, then go ahead and watch this short video instead:

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

Step 1 – Install Exalate on Salesforce

Exalate for Salesforce can be installed through Salesforce AppExchange. You can even access it through your Salesforce instance by searching for it in the global search bar.

We are going to discuss the installation through AppExchange here, but the procedure for installing it within the Salesforce instance shouldn’t be different. You can refer to the detailed procedure for installation here.

Note: Exalate accesses Salesforce through APIs, and it’s got its own guidelines for API Access add-ons. For instance, API access is provided by default in Enterprise accounts, while it is not the case with other accounts like Professional. Learn more about the different Salesforce editions Exalate supports on this documentation page.

Type Exalate in the search bar of AppExchange and select the Exalate app from the list that appears.

Exalate app in salesforce

Then click the “Get It Now” button.

Then proceed to choose where you want to install the package: Production or Sandbox. We have selected “Install in Production” here. 

Environment in Salesforce on which Exalate app is installed

On the next pop-up screen, agree to the terms and conditions, and at the bottom of the page click “Confirm and Install”. You will need to log in to your Salesforce instance at this point in case you still haven’t.

Then you can select the users that are going to have access to the Exalate app. Choose ones based on your requirements. You can also change the permissions later in case they aren’t clear immediately. We are installing it for admins here, so click the “Install” button after choosing “Install for Admins Only”.

Access to the Exalate app on Salesforce

Also if you choose specific profiles on the screen above, you will be briefly redirected to a screen that displays the available users and their permissions that you can set before proceeding.

Quickly approve access to 3rd party websites and click “Continue”.

An “Installation Complete!” message will be displayed to confirm the package installation. Click “Done” to go to your Salesforce instance.

Successful installation of Exalate on Salesforce

The next step is to request an Exalate node. For this, click on the “Apps” section on the top-left screen of your Salesforce application and search for Exalate there.

Exalate app in Salesforce

Then click on the blue “Request node” button and don’t forget to give the necessary permissions to the app by clicking “Allow”.

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

Fill them out and click “Agree and Submit” and continue. 

Exalate then sends you an email with your Exalate for the Salesforce instance. Click on the “Verify Exalate instance” green button in the email.

And then you will be redirected to your Exalate console for Salesforce. In case you are prompted to log in to your Exalate console for Salesforce, follow these steps.

exalate console in salesforce

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. 

select account on 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. 

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

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

Allow Zendesk access

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. 

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

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. 

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 a 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 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 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”.

exalate basic mode

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. 

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 sync in basic mode

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. 

Salesforce Zendesk sync connection details

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 “Done”.

copy exalate invitation code

Once you do that, 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. 

Go 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 also do the same thing on the Salesforce instance. 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. 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 the 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, 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 trigger 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 them, like 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.