
The Zendesk for Salesforce integration provides a sync of Zendesk tickets to Salesforce cases. This enables reporting on Zendesk tickets support analytics generated in Salesforce, and triggering other business workflows in Salesforce.
This article contains the following sections:
- Recommendations before setting up
- Setting up Ticket Sync
- Creating a Salesforce Case Record Type
- Installing the Ticket Sync package in Admin Center
- Configuring Zendesk tickets to Salesforce cases sync
- Configuring and activating Zendesk triggers
- Standard field mappings
- Custom field mappings
- Configuring organization matching
- Configuring ticket requester matching
- Checking if Ticket Sync has successfully installed
- Checking your ticket sync setup
Related articles:
Recommendations before setting up
Ticket sync is an advanced feature and it is important to understand the behavior before setting it up in your production accounts. We recommend the following tasks:
- Test ticket syncing in your Salesforce and Zendesk sandbox accounts first before setting it up in your production account.
- If you have data sync enabled and you are testing with Salesforce sandbox and Zendesk production accounts, it is recommended to not enable Create if no match found in Ticket Organization Matching and Ticket Requester Matching since this may create duplicate organization records and user records in Zendesk.
- If you are using the legacy integration, don't enable ticket sync in both integrations at the same time. This may cause duplicate records to be created in Salesforce. When you are ready to enable the new Ticket Sync, turn off this feature in the legacy integration first. For more information, see Migrating the legacy Salesforce integration to the new Salesforce integration.
Setting up Ticket Sync
Setting up ticket sync requires performing a number of tasks to the Salesforce Case Object, Zendesk triggers, and in the Zendesk Admin Center.
To set up Ticket Sync from Zendesk to Salesforce
Creating a Salesforce Case Record Type
To create a Salesforce Record Type
- In Salesforce, click the Setup icon in the upper right, then click Object Manager
- In the Object Manager page, click Case.
- Click Record Types in the left navigation pane, and click New in the upper right of the page.
- Follow the steps on the Salesforce page to create a record type. It is recommended to name your Record Type Label: Zendesk Ticket Sync.
Installing the Ticket Sync package in Admin Center
The ticket sync package creates standard Zendesk ticket fields in the case object and maps them to standard Case fields.
For the ticket sync package to create Case fields, the authenticated user must have permission to modify the Salesforce metadata API.
To install the ticket sync package
- In Zendesk Admin Center, click the Integrations icon (
) in the left navigation pane.
- Next to Salesforce, click Configure.
- Click the Data Sync side tab, and in Ticket sync, click Configure.
- In Ticket sync package, click Install.
Configuring Zendesk tickets to Salesforce cases sync
Once the steps in the previous sections are completed, the ticket sync is enabled to allow mapping and syncing Zendesk fields to Salesforce cases.
To configure settings for sending tickets to Salesforce cases
- In your Zendesk Admin Center, select Integrations icon (
) in the left navigation pane.
- Next to the Salesforce Integration, click Configure.
- Click the Data Sync side tab, and in Ticket Sync, click Configure.
- Select the Enable syncing checkbox, and configure the settings for sending Zendesk tickets to Salesforce cases.
- In Record Type, enter the Record Type ID created earlier. You can find the Record Type ID in your Salesforce account by clicking the Setup icon, then Object Manager > Case > Record Types, and clicking on the record type to find the ID in the URL.
- In Custom ticket field mapping, map Zendesk ticket fields with the Salesforce case fields you want populated. Standard field mapping is provided and the ability to customize mapping.
Note: You must map all required Salesforce Case fields. If a required field is not mapped, the sync will fail. Drop-down fields mapped to picklists must have all possible values from Zendesk mapped to options in Salesforce. For more information, see Standard field mappings and Custom field mappings.
- In Organization matching, configure how Zendesk organizations are synced to Salesforce accounts. For more information, see Configuring organization matching.
- In Ticket requester matching, configure how Zendesk ticket requesters are synced to Salesforce Contacts or Leads. For more information, see Configuring ticket requester matching.
- Click Save.
- Target: (Salesforce Integration) Sync tickets to Salesforce
- Trigger: (Salesforce Integration) Sync tickets to Salesforce
Targets are used to send notify external applications when a ticket is created or updated. Triggers are business rules that are defined in Zendesk.
Configuring and activating Zendesk triggers
Zendesk Triggers are created from conditions and actions. They run immediately after Zendesk tickets are created or updated.
By default, the Salesforce trigger is inactive. The trigger conditions must be reviewed and the trigger activated in order for ticket sync to work.
To configure and activate the trigger
- In Support, click the Admin icon (
) in the sidebar, and under Business Rules, select Triggers.
- Find the (Salesforce Integration) Sync tickets to Salesforce trigger, and click the trigger name to edit it.
- Modify the trigger conditions as needed. Use the conditions as a filter, to set which tickets should be sent to Salesforce. Do not rename the trigger.
- Click Save to save your trigger settings.
- On the Triggers page, select the Inactive tab.
- Next to the (Salesforce Integration) Sync tickets to Salesforce trigger, click the More Options icon, and select Activate.
Standard field mappings
When the ticket sync package is installed, Zendesk creates and maps most of the standard ticket fields to Salesforce case fields as shown in the following table.
Zendesk Ticket Field | Salesforce Case Field |
Type | Type |
Priority | Priority |
Status | Status |
Zendesk Ticket ID | Zendesk_Support_Ticket_ID__c |
Subject | Subject |
Description | Description |
Requester ID | ContactId |
Requester Name | Zendesk_Support_Ticket_Requester_Name__c |
Requester Email | Zendesk_Support_Ticket_Requester_Email__c |
Organization ID | AccountId |
Organization Name | Zendesk_Support_Ticket_Organization_Name__c |
Brand Name | Zendesk_Support_Ticket_Brand_Name__c |
Assignee Name | Zendesk_Support_Ticket_Assignee_Name__c |
Assignee Group | Zendesk_Support_Ticket_Group_Name__c |
Tags | Zendesk_Support_Ticket_Tags__c |
URL | Zendesk_Support_Ticket_URL__c |
Ticket form name | Zendesk_Support_Ticket_Form_Name__c |
Date/Time created | Zendesk_Support_Ticket_Created_At__c |
Date/Time updated | Zendesk_Support_Ticket_Updated_At__c |
Date/Time solved | Zendesk_Support_Ticket_Solved_At__c |
Date/Time initially assigned | Zendesk_Support_Ticket_Initial_Assigned__c |
Resolution time (calendar) | Zendesk_Support_Ticket_Resolution_Cal__c |
Resolution time (business) | Zendesk_Support_Ticket_Resolution_Bus__c |
Custom field mappings
- Requester wait time (calendar)
- Requester wait time (business)
- Agent wait time (calendar)
- Agent wait time (business)
- On-Hold time (calendar)
- On-Hold time (business)
- First Reply time (calendar)
- First Reply time (business)
To map custom Zendesk ticket fields to the Salesforce Case Object
- In Salesforce, click the Setup icon in the upper right, then click Object Manager
- In the Object Manager page, click Case.
- Click Fields & Relationships section in the left navigation pane, then click New.
- Select a Data Type for your new field, then click Next. In most cases Text, Text Area, or Number is appropriate. For Zendesk drop-down fields, a Text field is sufficient. Only the selected value is be synced.
- Enter a Field Label. It is preferred to match the Field Label to the Zendesk Custom Field Name.
- Complete the other mandatory fields, and click Save.
- Repeat steps 3-6 to create additional the custom fields.
- In Admin Center, go to the Salesforce integration, then Ticket sync > Configure > Custom ticket field mapping. The custom case fields previously created appear in the Salesforce fields.
- Map your Zendesk fields to Salesforce fields, and click Save.
After mapping, when a ticket is sent into Salesforce, custom field data is automatically populated according to the field mappings.
Configuring organization matching
When configuring ticket sync, there are two options for setting the matching criteria for organizations:
- If your Account to Organization data sync is disabled, use default matching criteria and field mappings. The default matching criteria is Organization Name to Account Name. By default, when Zendesk sends ticket information to Salesforce, if an exact email match is not found between the ticket’s organization and account, a new account is created in Salesforce.
- If your Account to Organization data sync is enabled, the custom matching criteria configured is used to match the ticket’s organization with Salesforce accounts. You can view your custom matching criteria in Admin Center > Integrations > Salesforce Integration > Configure > Data sync >Ticket Sync > Configure. See Organization syncing options.

Organization syncing options
The organization syncing section provides the following configuration options:
- Sync to existing Accounts - This option syncs the organization to the exisiting Salesforce Account based on the matching criteria
- Sync to existing Accounts and create if no match - When this option is selected, you can choose to map the Zendesk organization ID to a Salesforce account field. You can select from any standard and custom Salesforce account fields. This is a one-way sync, useful for displaying which Salesforce Account is linked to a Zendesk Organization
-
Salesforce default Account - You can enter an existing account as the default account in Salesforce if no organization exists in Zendesk. Setting a default account prevents orphaned accounts from being created
Note: The Organization field in Salesforce does not inherit the account of the contact in the Requester field. This Organization field only populates based on the organization information present on the ticket within Zendesk.
Configuring ticket requester matching
When configuring ticket sync, there are two options for setting the matching criteria for ticket requester:
- If your Contact or Lead to user data sync is disabled, use default matching criteria and field mappings. By default, when Zendesk sends ticket information to Salesforce, and an exact email match is not found between the ticket requester and a Contact, a new Contact is created in Salesforce.
- If your Contact or Lead to user data sync is enabled, the custom matching criteria configured is used to match the ticket requester with Salesforce Contacts or Leads. You can view custom matching criteria in Admin Center > Integrations > Salesforce > Configure > Data Sync > Ticket Sync > Configure.
Requester syncing options
The ticket requester section provides the following configuration options:
- Sync to existing Contacts/Leads - This option syncs the requester to the existing Salesforce Contact/Lead based on the matching criteria
- Sync to existing Contacts/Leads and create if no match - You can choose to map the ticket requester's user ID to a Salesforce Contact or Lead field. Select from any standard and custom Salesforce Contact/Lead field. This is a one-way sync useful for displaying which Salesforce Contact/ Lead is linked to a Zendesk user
- Salesforce default Contact/Lead - If you opt to create new contacts for unmatched ticket requesters, you can enter an existing Contact or Lead as the default Contact/Lead for new Contacts if no user exists in Zendesk. Enter the Salesforce Contact or Lead ID in the provided field
Checking if Ticket Sync has successfully installed
- Go to Salesforce > Setup > Deployment Status
- Check for a deployment time for when you installed the package to see if deployment was successful or failed. If deployment failed, Salesforce will provide you with detailed errors. Review the errors and resolve them. If you are unable to resolve them, contact Zendesk Support and provide a screenshot of the error.
- Go to Salesforce > Object Manager > Case > Fields & Relationships. Check if additional case fields were created in your Salesforce Case Object, as shown below for each standard Zendesk ticket field.
- Once you have confirmed steps 2 and 3 were successful, continue with setting up Ticket Sync.
Checking your ticket sync setup
Use the following checklist to check your data sync is set up correctly:
- Confirm you have activated the Salesforce trigger in your Support settings.
- Confirm the trigger JSON body has not been edited and is as shown below. Any change to the JSON body causes the sync to fail.
{"ticket_id": {{ticket.id}}, "salesforce_org_id": "YOUR_SFDC_ORG_ID"}
- Confirm you have entered the correct Record Type ID. If the Record Type ID is incorrect, the sync will fail. Note: Record Type ID is not your Salesforce Org ID.
- Confirm that all required Salesforce case fields are included custom ticket field mappings. If you do not map all required fields, the sync will fail.
88 Comments
I feel guilty as I discovered this a couple weeks ago and did not post.
However I would have assumed the Developers would have patched it and/or posted a fix somewhere
I have been very disappointed with the rollout of the new Salesforce Sync. However if you are lucky enough to work with Dwight from support you are in good hands!
Awww - thanks much, Jeff.
There are a few other reasons that this sync could fail and our Developers are trying to correct for them as they come across them. These are just the ones we document as there isn't a more graceful way to patch around them.
Dwight Bussman is it possible to get that list or can you point me in the right direction?
I was able to test integration between Zendesk trial sandbox and a salesforce test sandbox. Now I'm trying to built the integration on the Zendesk sandbox previously was successfully used for legacy integration between ticket in Zendesk to SFDC ticket object. While checking the trigger I realized it is still pointing to old target. Not sure how to modify the target to point to right org Id. Also tried creating new target via Admin=>extenstion add New target to Salesforce Case but got Oauth error from Salesforce. Not sure how to repurpose the zendesk sandbox for new integration.One more thing worth mentioning here is the SFDC sandbox thats part of inegration was also successfully part of legacy integration too.
Hi Steven,
Two of these spring to mind at the moment:
Checking that their profile has access can be done from the Setup > Object Manager > Case > Fields & Relationships > (choose field) > "Set Field-Level Security" and verifying that it's accessible and not read only to the profile in question.
That having been said, if you're seeing something that's not covered by the cases listed, please let us know and we'll get them listed here as we find them.
Thanks Dwight Bussman I'm working with Travis on my issue and if it appears to be something else I'll post here for visibility. I'm a sys admin in both ZD and SFDC so I haven't run into any of those issues.
I am not seeing the case object being created in SFDC. I can see the ticket view being updated with the tet ticket. How do we verify this on the SFDC side? Is there a particular way to see why the sync would be failing?
Triggers enabled and verified the target is sending
Verified the record type ID is correct
Only one required field in my case layout for testing and this is mapped
Hi Justin,
I'm going to raise a ticket with our Support Team to look into this matter for you, as I have some questions that would be easier to handle in a more private venue.
Mandy Major it is not currently possible to sync CSAT. We will consider this as a future enhancement.
Anika Rani This would be optimal because we currently have to use a third party integration tool which runs multiple times through the day. If the tool did this, it would mean that we could drop our integration tool and make the Zendesk application more important in our internal stack of tools. Our IT team consistently evaluates our tools and the more value we can show the better.
Hi, I'm having a few sync issues: 1. I'm not able to map Zendesk multi line fields to SF fields 2. Picklist values are not getting updated in SF after being mapped in Zendesk. Any idea why these won't sync properly?
Thanks!
Christina Draper has your Zendesk Support Ticket Tags field been changed to a long text area with more than 255 characters? If so, I'd read Dwight Bussman's recommendations earlier in the post around making sure your SFDC user has the appropriate permissions into the case object. If those are true, support ticket seems to be in your future.
I will say that I am disappointed in the rollout for this new integration and it's starting to impact our business pretty critically. I am posting this here in case someone else runs into this issue and urge everyone to test and test and test and test some more. Additionally, it doesn't appear that Zendesk is being very proactive in posting issues they are seeing. We've changed our tag field to a long text area field which resolved some issues, but we are still working with Zendesk support on two issues that we are seeing with the sync today. These are:
We spent extensive time re-building this integration and the many risk/escalation workflows that we have built out on this data and we're three days into the new integrations and I'm already getting emails about inaccurate data. For those using this integration I suggest rigorous testing into the various scenarios support leaders know cause issues. I'll post an update once we hear back from their support team into why our sync isn't bringing over all the tickets it should be.
We are seeing similar issues in that we can see cases created in SF when the tickets are created in ZD but when the tickets are updated in ZD the update is not reflected in SF. Seems to be inconsistent at best.
Would love to hear what you find out.
Reporting these issues as well. Also I see that ticket descriptions with multiple lines get new line char replaced with "nn" - reducing its readability - anyone else having this issue as well?
For the tickets that we are not seeing come into ZD we heard back that it seems "follow up" tickets are not syncing at least for us. Again, would just test religiously and report everything to ZD support. I've got a report that I monitor daily where I took for missing tickets. Where it becomes time consuming is some are merged/deleted which I have to review because my only indicator at this point is looking for missing tickets in SFDC :( Hoping these issues get resolved soon so I can stop spending so much time on the integration.
Dwight Bussman
I have a follow up ticket open from the case we worked on together and another ticket open regarding these same issues. They have both been open for 3+ days and have yet to be responded to even being opened as high priority.
This is becoming a bigger problem for us as some of our teams are not able to accurately report on ZD tickets in SF.
Justin Federico I haven't been able to get any traction with them unless I start yelling at my CSM. For us, we provide customers access to usage information with our product including open case information. While this is much better than it was last week (wildly off) they still aren't totally accurate and I'm spending a large chunk of each of my days validating just to make sure records that should be create are. It hasn't been a pleasurable experience to say the least.
Thanks Steven.
We have our support teams providing snapshots that are to be viewed by our sales team. The idea is that the info is available in SF since that is where they live. recently we moved this to a report in SF using the old integration and this worked great. This meant not having to build out a weekly snapshot manually and the reports could be viewed at any time. The new integration did mean we would have to recreate the reports but just for a new object.
Having caes missing from the report is becoming the issue and will be noticed more and more by our sales teams. As for now we are getting by, but like you said, we are spending too much time on this integration.
+1 to Brian's comment, which explanation is correct?
--
In this documentation it says about account sync:
Default Salesforce Account ID: If you opt to create new accounts unmatched ticket organizations, you can enter an existing account as the default account in Salesforce if no organization exists in Zendesk. Setting a default account prevents orphaned accounts from being created.
However, next to the field in the admin app it says:
Default Salesforce account ID
Hi Justin,
I did a bit of testing and here's what I've found. If there is a value in the Default Organization ID field in Admin Center, tickets sent to SFDC will attempt to match their Organization with an Account in Salesforce (seemingly based on the matching criteria in the Account > Org data-sync page).
If a match is found, the Case in SFDC will be associated with that Account (effectively ignoring the Default Organization ID).
This makes sense to me, as a known org/account should be matched to its tickets.
If no matching Account is found, the Case in SFDC will be associated with that Account listed in the Default Organization ID field.
This makes some sense, although it seems to ignore the "Create Account if no match" setting in the Admin Center.
This behavior seems a bit puzzling to me, as I expected org-less tickets to still be associated with that default Account ID.
Given these results, I'm reaching out to our Developers to see what they have to say on points 2 & 3.
Please let me know if I'm failing to explain this sufficiently well.
I can see accept the Ticket View section in Salesforce for viewing ticket comments, but is there a way to have a Ticket View within the case itself? Right now, someone would have to enter the case, find the Ticket ID #, then back out to the account to then find the Ticket in the Ticket Viewer.
Just trying to put the Ticket View into the Case page states No Tickets Found.
Hi Josh,
Unfortunately there's nothing like that at this time, but good feedback on a cumbersome workflow. I've not seen many customers who look into these cases directly and also use the ticket-views. Most of the folks with whom I've worked use the cases purely for reporting purposes and rely on the ticket-views for folks who look into tickets. Is there a reason the view-focused approach doesn't serve your needs? I guess I'm mostly curious why folks are starting in the Case, knowing that this may underscore my naiveté with various SFDC workflows...
Dwight Bussman
Our RMA department utilizes Salesforce only and not Zendesk. We have flows designed to convert specific cases into RMA cases within Salesforce, however the comments of the Ticket do not get pushed to Salesforce Cases. This means the RMA techs need to have access in the Salesforce Case to continue their workflow, while also having access to the Ticket View to see potentially important comments not viewable in the Salesforce Case.
Thanks for clarifying - that makes good sense. I will make sure our Product team is aware of this use-case/feedback.
Dwight Bussman,
Can you please help us in our production issue, where there was an issue with the account and further logging was added by Zendesk Engineer. What are next steps. Can you please help.
Hi Noor - I will put an update into your ticket shortly.
Dwight Bussman Thanks for your response, this is puzzling to me too. Let me know what you hear back from the Developers about points 2 & 3.
Has anyone else faced the issue of the trigger in Zendesk not being automatically created? I've searched in active and inactive triggers and do not show this trigger added to my Zendesk Sandbox account.
HeyO Schuyler
If the trigger (or target) was deleted from within your Zendesk account, we've seen an issue where they would not be re-created upon reconnection. Please reach out Support to look into whether this is what's happening in your case.
Please sign in to leave a comment.