

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 sidebar.
- 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 sidebar.
- 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.
92 Comments
hello Anika Rani
you mention a workaround for attachments four months ago
Do you have any recipe to do that? I have a dedicated custom field for my tickets but I have looked at trigger or automation without success to fill it.
Hi Gaëtan Tobie-Echeverria
Unfortunately, I don't think Zendesk triggers will automatically update a ticket field with an attachment URL, my suggestion is more manual.
You would probably need to have the attachment hosted somewhere (Google drive, Dropbox etc), and then provide the URL of its hosted location.
We are working to build a workflow for zendesk tickets for certain topics to automatically send information to salesforce to have certain case types. For most of this the field mapping is working well. We are having issues though on two fields - one field to capture a phone number and one to capture email. In Zendesk it's a text field for both, in salesforce it's a phone number and email field. I created a regex version of the field but not finding this in the mapping area in Zendesk Admin Center. Any ideas? Is regex not supported?
Hi Schuyler,
Thanks for getting back.
I'm currently checking with our Salesforce on the use of regex fields when mapping fields between Zendesk and Salesforce.
I'd still like to get a better understand on how you've set up mapping using these two fields and why it's not working. In order to take a closer look at this can you please:
• Share a ticket example where the mapping didn't work for these two fields.
• Share some screenshots from your Salesforce configuration.
• Some screenshots of your Zendesk mapping configuration showing these two fields.
I'll be looking forward to your answer and I'll be sending you an update once I hear back from the Salesforce team.
Best regards,
Oscar Mejias |
Customer Advocate | support@zendesk.com
Hey Folks! Excited to start using this feature. I put in a support ticket just over 4 days ago and I have not gotten a response. I'll copy where I'm getting stuck below with setting this up.
We went live with Zendesk almost 2 months ago. At the time of launch, we set up the Salesforce <> ZD Integration and have Accounts <> Organizations Sync working successfully, and the ZD View (visualforce/canvas) app all working great.
Now that we've moved out of Salesforce Service Cloud, I'd like to start syncing ZD Tickets as SF Cases to utilize SF reporting off of our Zendesk tickets.
When I navigate to Admin Panel > Integrations > Data Sync > Ticket Sync > "Re-install", I get an error message every time "Ticket Sync Package Failed to Install". Following the suggested articles, I checked in Salesforce > Setup > Deployment status and verified the 19/19 completed showing a success (over and over again).
I actually now notice that when I return to the install page I am getting an initial message that states "Zendesk ticket sync fields are missing from your Salesforce case object. Please install the ticket sync package to ensure all tickets are created."
I can see all of the Case fields have indeed been created on our case object, deployment is successful. I'm stuck, help! ( https://support.zendesk.com/hc/en-us/requests/5496821 ) for details. Thanks!
HeyO Dan,
Apologies about the delay on that. There's a few possible causes of this so we'll want to get at which is applicable in your case. I'll see that someone reaches out to you shortly in that ticket with more details.
Dwight responded promptly and got this working for me. Thanks Dwight!!! I'll post his reply below to share.
****
There are a few different reasons that this might be happening, but the most common one has to do with the SFDC profile of the user who connected the integration within Admin Center. By default those 19 fields created by the package installation shown in your deployment status screenshots are only accessible to the
System Administrator
profile (the SFDC default profile). Many customers give their administrators a copy of that profile (Company Name Main Admin
or something similar), and we'll need to make sure that whatever the profile is for the user in your instance, that they have access to those fields.To do so, head into Setup > Object Manager > Case object > Fields & Relationships and pull up one of the fields listed in this article - let's use
Zendesk_Support_Ticket_Assignee_Name__c
as an example. After clicking on the name of the field, please click "Set field-level security" at the top:
and insure that the profile discussed earlier is enabled therein (visible and not read-only)
You'll have to repeat this for all of the fields listed in the aforementioned article.
*****
Thanks again!
Is it still possible to send multiple emails in a thread (multiple back and forth replies) in Zendesk to Salesforce in the first sync?
Example:
Customer submits ticket, Zendesk agent responds, Customer replies, Ticket is sent to Salesforce and Salesforce has record of each email (3 total) in the thread.
Hello Lauren Gallant,
The ticket sync no longer includes comment history. If you are looking to see comment history, your best bet would be to utilize the ticket view instead.
Best regards.
Hello, Team.
I have been testing Ticket sync in the sandbox and for Ticket requester matching i have enabled create if no match is found in Salesforce.
A new contact gets created which is fine and we do not want to create new accounts.
How can i make sure that all the new contacts created via ticket sync should be attached to a single account for example "Zendesk Ticket Sync Account"?
Would appreciate your response.
Hi Harsharndeep,
It should be possible to set a default account in the Ticket Sync settings:
My testing shows that this will still link to an account if a matching account exists, but if no matching account is found it places the resultant contact/ticket into the account specified here.
Hello, Dwight.
As per your response: https://support.zendesk.com/hc/en-us/articles/360037607294/comments/360006462073
I have added a default Account ID on the ticket sync:
Also, i have enabled option on Contact to user sync:
Now , i created a new user in Zendesk which doesn't exist in Salesforce.
After creating a ticket, new user got created in Salesforce and account should be set to default account and here it is blank:
Please help me on how can i map default account here?
Hi Harsharndeep,
It looks like the requester of ticket with which you're testing doesn't belong to any organization. As a result, that ticket does not have an associated organization. I'm fairly certain that our integration only attempts to map an account (whether matching or using the default account as we've been discussing) when there is an organization present, but I will check with our team to confirm this.
UPDATE:
I have conferred with our developers, and it seems that the integration should not require an organization to be present on the ticket in order to place the case into the default account. I'm raising a bug ticket, and would be happy to create for you so that you're informed as a fix is released for this
1. When will this page be updated, to reflect the updated Ticket Sync functionality/settings (ref screenshots below)?
2. Until then, can you please explain the options currently available (ref. screenshot below), especially the "Map your Zendesk Support user ID to a Salesforce Contact field." option?
3. To my understanding, the "Sync to existing Contacts/Leads and create if no match" option is supposed to create a Contact in SFDC if the Ticket requester is not found in SFDC.
The Contact is NOT being created in SFDC.
I'm using Contacts Sync to Users, with the Email as Matching Criteria.
When a Ticket is created in ZD, a Case is created in SFDC, linked to an Account if pertinent, however NOT linked to any Contact, as a Contact is not being created.
Please help!
Anika Rani Dwight Bussman Can you please respond to my post from almost a week ago? Thanks!
Hi Reuven Shelef (ZD Dev at OUT OF THE BOX Consulting)
Thanks for the reminder on your earlier post: we try to answer everything in a timely fashion but this one slipped through a gap in my process and for that I am sorry.
To your 3 questions:
* required contact fields - if there are required contact fields, these would need to be populated via our sync. This would involve mapping the field in the Contact Sync settings, as those field-mappings are also used for the creation of new contacts in SFDC.
* validation rules - if there are validation-rules for contacts, these could cause creation-failure
* APEX triggers/workflows - if there are apex triggers/workflow processes that occur when a contact is created, making sure these can execute properly with the information being sent over from Zendesk.
Dwight Bussman Thanks for responding.
Re #3:
The only Required field on the Contact object is Last Name. SFDC's "Full Name" is mapped to ZD's
"Name". There is no option to map the Last Name field (and I do not believe that this would be needed).
No Validation Rules.
No Process Builder / Workflows / Apex running upon Contact creation.
I've responded to the ticket.
Just to close the loop here: we've identified an issue where the "create contact if no match" will fail if there is a formula field mapped in the contact > user sync settings. Formula fields are read-only in SFDC. Has been escalated to our Devs as a bug. Thanks for bringing it to our attention
For Ticket sync from Zendesk to Salesforce Case , email notifications are not working for auto-assign Case rules, although upon manul creation of Case we do receive assignment emails,when contacted Salesforce support they notified tus hat this is product limitation and API generated cases needs to have "EmailHeader" with "triggerUserEmail" enabled at API level.
https://help.salesforce.com/articleView?id=000323134&type=1&mode=1
We can not find the option to enable triggerUserEmail for EmailHeader or EmailHeader for that matter in Salesfore Ticket sync settings, Is this something Zendesk can help us with?.
Hi Noor Fazli
If those fields are not available with the Ticket Sync Settings, it sounds like this will need to be handled within Salesforce with a custom workflow or trigger. Such custom work is outside the scope of what our Support team can assist with.
There is a similar issue to the one Steven points out, but with no workaround that I can see. Salesforce Case object Description field has character limit of 32000. Since this is a built-in it is unchangeable (people have been asking SF to increase it for several years though!!)
If someone raises a ticket with a longer text body than this, it will fail to sync to SF. Please can the integration do something sensible (like truncating the text if that's the best that can be achieved) rather than fail the sync?
Bruce Bye
Good catch on that character limit. I'll reach out to our Developers to see if they can add some truncation logic to the Case-creation flow.
Cheers!
Hey Team!
One thing we've had a major challenge with and are hoping sync can help with is rolling up all of our categories and subcategories into the same fields in Salesforce. Currently we have multiple Forms, each form being a product area. Then for each form I've created a Primary Category field and Subcategory, (specific to that product area) which uses the Conditional Fields logic to display subcat based on category.
The problem is we have so many different columns of data, 5 categories and about 10 or more subcategory fields. We'd like to roll these up to just two columns of data in Salesforce for reporting. I was initially thinking maybe I map multiple Zendesk fields to the same Salesforce field, but it looks like I get an error when I try to save. Is this possible. Does anyone else have a good workaround for rolling up all of my data? The other thought I had was to create a process builder that triggers on case update that copies all cat and subcat fields into the two fields in SF.
Hello, Team.
I have a question on ticket requester matching setting:
If I select "Sync to existing Contacts and create if no match", What exactly does Map your Zendesk Support user id to Salesforce Contact field indicate?
If i create a custom field in salesforce called Zendesk User ID, Will it map Zendesk User ID for newly created contacts in SF only or will it map for existing contacts also?
Hi Harsharndeep
That field would only be populated on contacts created by the ticket-to-case syncing going forward (i.e. after that mapping was enabled).
Dan Heintzelman
It's not currently possible to map multiple fields into one (as you're seeing with that error message). I recommend making separate fields as you described. If you come across a good method for handling this gracefully, we'd love it if you share some of the details here to help others with a similar need in the future.
Thanks!
Dan Heintzelman Rather than using process builder, I think you could achieve what you want more simply by using the formula type for your two aggregating fields in Salesforce. The formula is the same one you'd have to define in process builder anyway, but saves having to add an explicit trigger and therefore trying to work out how, why and where those values are getting created in the future - it'll all be in the object definition.
Bruce Bye , thanks for the suggestion! With PB, I'd have to perform null checks in PB on every field (I'd be looking through 4-5 categories for not null. Leave it to me to think of the more complex solution... I have about 4 different categories (zd mapped fields) to check for a value, so assuming I can just create a formula field that check all possible fields to find the one != null, then this should work. I'm wondering if there is a benefit to the PB method, eg, keeping the category fields as text types rather than formula fields, which sometimes can lead to limitations with reporting/integrations/etc.
Hello, Team.
We have field called API Source on Contact object which captures the source of origin of contact like if the contact is created through Pardot, API Source will be mapped to Riva (Pardot) etc.
We have been using ticket sync and we have selected the option of matching existing contacts and create new contact if no match is found.
Is there any specific field to identify and can be used to update our API Source field?
Thank you!
HeyO Harsharndeep
When syncing tickets to SFDC cases which create a Contact, the fields set for contact-syncing are set using the values in zendesk (like a reverse-sync, but only for creation).
To that end, if you'd like to populate that API Source field in the newly-created Contact, you'd need to have that field mapped and a value present on the Zendesk user to sync over at the moment of creation.
Alternately, perhaps there's a way to programmatically populate that field exclusively within SFDC when created via the Zendesk integration. This would involve custom coding within Salesforce if it's not being done via the field-mapping I mentioned above. If you'd like to pursue this path, I recommend reaching out to your Salesforce Admins to explore whether an apex trigger/workflow process might accomplish this.
Please sign in to leave a comment.