
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.
90 Comments
What is the ETA on support for Ticket Comments?
Are there plans to support Salesforce Lookup fields?
Hi Jeff -
Apologies that the team working on the integration hasn't had a chance to get back to you yet. If you're available, they're doing a live Q&A on the new Salesforce integration for customers who have API rights tomorrow (11/21) at 12pm CT, which you could join and ask your questions in.
In the previous integration when the Ticket Requester Contact did not exist in Salesforce and Zendesk created it a Zendesk ID was added to the SF Contact record.
This does not appear to be the case in the new SF Sync.
We based several workflows off of this field. Is there another identifier to determine that this is a Zendesk created contact?
Jeff Callahan
1. We are still gathering feedback and requests for syncing ticket comments to cases. This was not a highly adopted feature in the previous integration. However, you can still view full ticket details and comments using Ticket View.
2. Lookup fields - are you asking about mapping Salesforce lookup fields to Zendesk for data syncing? We will continue to gather requests for this as well, however lookup fields may reference data that our sync does not support. The best workaround for this at the moment is to create a field in a supported object (Account or Contact/Lead) and use a trigger or process builder to update that field from the lookup field. Then map this field over to Zendesk.
3. We will be supporting syncing Zendesk User ID and Organisation ID to Salesforce. This will be available in upcoming releases in the next few weeks.
Anika Rani - thanks for the response.
1. It is problematic that we now have to sync to the Case Object. The irony here is that my Company has been pushing to switch to Service Cloud which I have been able to block so far. However if all of the ZD data will now be in the Case Object then the Data Migration piece is no longer an excuse.
2. I am looking to sync Lookup fields from SF Account to Picklist fields on the ZD org. The reason for this is that we have corresponding Picklists fields on the Tickets. When a User raises a Ticket from an Org where the Version Picklist is set to 1.25 (tag=v1.25) this will also set the corresponding field on the Ticket.
I got around this by creating a single SF formula field to transform/combine all of the Account Lookup values into a tag format. I then sync'd this to the Org tag field in ZD. The tags will sync and populate corresponding fields on Tickets. I also created individual SF fields to transform the lookup values into text and sync these with Text field on the ZD Org for Reference.
3. Glad to hear the ZD ID will be supported. Will there be a notification?
Hi Team Zendesk!
Re. ticket comments sync with Salesforce, where you've stated, "Note: Ticket comments are not currently supported." (found on this page, https://support.zendesk.com/hc/en-us/articles/360037607294, right after the header, Standard field mappings, at the end of the mapping table), could you please provide us with any thoughts/insights/ETA on When would the feature be available? And in the meantime, is there any recommended workaround/solution to sync them with Salesforce?
Ticket comments are highly valuable to our business and we really need them to be in sync with SF.Many thanks in advance and looking forward to your thoughts on this!
Best,
Taka
@taka
Thanks for your question and feedback.
We are gathering feedback and requests for syncing ticket comments to Cases. This will determine whether we support syncing comments and the ETA.
This was not a highly adopted feature in the previous integration and we found the most common use case for syncing tickets was for reporting and triggering workflows in Salesforce. Comments don't seem to be critical for this in the majority of the scenarios we see.
You can see full ticket details and comments in Salesforce using Ticket View. The difference here is that these are visible in Salesforce, but not stored in Salesforce.
I would love to learn more about the value of storing ticket comments in Salesforce and your use case for this. if you don't mind, I'll reach out to you directly? This is valuable feedback for us and we will consider supporting syncing of comments as we get more feedback on this.
Anika Rani
Facing this issue of "Failed to install Ticket Sync Package". Not sure if someone else is facing the same. Trying to get Tickets to sync with Case object in Salesforce.
Not only are ticket comments very important to us, but also attachments.
We are a software company and our product is highly customizable. Our customers can write their code and integrate with our product. Our customer support personells have Zendesk accounts but R&D don't. In many cases, our developers need to get involved and help support for troubleshooting and customizing codes. This requires them to read comments and download attachments sent from our customers.
With the current custom Zendesk object in Salesforce, we can have comments available for developers. We also have a Salesforce cron job to retrieve attachment info (file name, download url, etc) via Zendesk's REST API, and save them in another custom object that has lookup reference to the ticket object.
Please help me understand how we can keep this practice going, after migrating to the new Case object. Without comments being pushed to SF this could be a very big problem for us.
Thanks.
Hi! I've been having some issues with the new ticket sync. I have some New and Updated tickets that show the
"Message pushed to target
Anika Rani
Hi Anika,
Thank you very much for sharing your insights re. ticket comments sync with Salesforce.
Have a great day!
Best,
Taka
@Victor, I'm going to bring this into a ticket so our Customer Advocacy team can look into this further.
You'll receive an email shortly stating your ticket has been created.
Cheers!
I am experiencing the same issues as Victor.
The Ticket Sync worked with just default fields in the Custom ticket field mapping
I then added a Custom Ticket field to the Mapping and the sync stopped working.
I have since removed the Customer field however the Sync has not resumed.
Note I have both the Legacy SF Sync and the new SF Sync enabled. The Legacy sync is configured to sync tickets into the Zendesk managed Salesforce Object.
The ZD Ticket Events show that both triggers are firing however Tickets are only created for the sF Legacy Sync
I experienced a similar issue with the Account Sync.
Please advise how I can troubleshoot this
Not sure if this is related, but the sync stopped at the same time I deleted a test ticket in ZD
Murthy Tumuluri
If your package install is failing, please check:
1. The user authenticating to the integration has modify access to the Salesforce metadata API
2. Have you exceeded the number of fields allowed on the Case Object?
3. Check that the package install was actually successful by:
- seeing if any additional Zendesk fields were created on the Case Object
- checking the deployment status in Salesforce, is this successful or failed.
Based on your findings here we can resolve the issue. Please raise a ticket with us accordingly.
Thanks!
Victor Carreon
Zendesk triggers currently support tickets being created and updated, which means any update to the ticket will trigger the sync to Salesforce (assuming it also meets any other conditions). If you mark a ticket as Solved, this will sync to Salesforce. Can you please provide an example of a Ticket # marked as solved in Zendesk which did not arrive in Salesforce, on the ticket that Brett created for you.
Ping Lu
We do realise the importance of having comments visible to Salesforce users so your developers can still view ticket comments, by setting up and using Ticket View.
We will consider supporting attachments based on feedback of the new integration. Attachments were not a widely used feature in the previous integration and are not a common use case.
As a workaround, you could consider having the attachments URL loaded into a custom ticket field, and this URL field can be synced as a custom field to the Case Object.
I noticed the Zendesk Ticket ID is available on the Case object. There are a few fields we had in our legacy sync that we're hoping get updated: 1.The Organization ID & Last Sync Date fields to the Account Object 2. Zendesk Support User ID to Contact object 3.External ID populated on the Zendesk side that showed the Salesforce Account ID so our team knew the sync created the Organization in Zendesk.
Hi Anika,
Thanks a lot for coming back to me. The Ticket Views are helpful for displaying tickets related to contact, account or lead. Is there a centralized place for Salesforce users to search and/or show tickets, e.g. by Zendesk Id? Currently we have a custom Visual Force page for that purpose, and it is based on the Zendesk custom object. Are the Ticket Views based on a new External Object in SF that we can access via Apex codes, so as to create a similar page?
As for the attachments URL, I guess it will be saved in a custom field in Case object. As far as I understand, high level info of tickets will be saved in the Case Object, while details like comments are shown in the ticket view. Is there any way to link Case and the data behind the Ticket Views, and show everything in one place?
Thanks so much.
I have been messing with the sync the last couple days. I noticed that my Zendesk_Support_Ticket_ID__c isn't getting populated. This seems to be the only field with that issue. I checked the salesforce case object and Zendesk_Support_Ticket_ID__c Text(255) is available.
Also I would like to sync contacts and leads. Is that going to be available soon?
Update: I found that there is two Support ticket IDs
Zendesk_Support_Ticket_ID__c and Zendesk__Zendesk_Ticket_ID__c
They both show as "Zendesk Support Ticket ID" in the interface.
Christina Draper
We have released syncing for External ID for Zendesk Users and Organisations. You can find more about this in data sync.
We will be releasing Zendesk Org ID sync to Salesforce Accounts and Zendesk User ID sync to Salesforce Contacts/leads this week.
I am still unable to get the Account Sync working reliably. Also what is the SF Account Field the ZD ID sync's to? How do I get this to create in SF?
Ping Lu
Ticket View is not an object in Salesforce, it leverages the canvas app so its basically an iframe. The data is not stored in Salesforce. If you want to see all tickets in one place, a workaround is that you create a custom field on your Zendesk Organisation and Salesforce Account, and populate this with the same value for all records. Then you can set this field as the matching criteria for Ticket View, which show display all the tickets under one account.
You could also show tickets in a related list, once they are synced to the Case Object.
In the new year, we will look at linking the Case to the Ticket View. Unfortunately, there are some limitations around how we implement this because the Ticket View is an iframe, so are exploring the right solution.
Jeff Callahan please reach out to us if with the issues you are having with account sync. In particular, if you can specify certain records/ fields that were not synced as expected we can investigate.
We will add instructions for how to use Zendesk ID sync once this is released.
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
Thanks Anika! Which document shows how to expose the Zendesk ID fields and turn on the Zendesk Org ID sync to Accounts and Zendesk User ID to Contacts/Leads?
Is it possible to sync CSAT results back to SFDC? I am not seeing it anywhere in the available fields when mapping the fields.
How can we sync the owner of the ticket in zendesk with the appropriate owner in Salesforce? Our zendesk users all have SF licences, I just don't see any possibility to natively sync it...
There is a very important bug to know about as it will break your sync. There is a field called Zendesk Support Ticket Tags (Zendesk_Support_Ticket_Tags__c) which is a text area (length 255). There is apparently a bug that if the character length is exceeded your tickets will stop syncing.
Workaround: Change the field type to a long text area field and set the length to something absurd so you never exceed the field length.
Hope this helps in case someone runs into it.
Thanks for reporting this Steven! I've messaged our Salesforce PM's so they'll be taking a look at this post.
Cheers!
Please sign in to leave a comment.