The legacy Salesforce Integration is no longer available to install. If you need to upgrade the legacy integration to version 5.9, please contact Zendesk Support.
We are excited to be offering a new Salesforce Integration - built on Zendesk which is now generally available. You need to have a Salesforce Edition with API rights to use this. Get started with setting up the new integration here.
If you do not have a Salesforce Edition with API rights, you can:
Try the Workato Salesforce to Support Integration
Try Zendesk Sell with its native integration to Zendesk Support
Updated: February 13, 2018 (for package 5.6.1)
You can configure a one-way, ongoing sync from Salesforce to Zendesk. You can sync Contacts/Leads to users, and Accounts and to organizations. You can also filter the Contacts/Leads and Accounts that are synced into Zendesk.
Related articles:
For links to all of our Salesforce documentation, see Salesforce integration resources.
Understanding limitations of sync
- Neither the organization sync or the user sync will move Person Accounts. The organization sync treats Parent Accounts as normal organizations in Zendesk. It does not give any special consideration to the Parent relationship.
- The user sync does not support Converted Leads.
- Currently, ongoing sync will not run if triggered by more than one record (such as a bulk upload of records through Salesforce data loader, or bulk update of records using Salesforce batch job). We do not support bulk sync triggers, as we cannot control the record processing rate, and multiple sync requests can excessively consume system resources in both Salesforce and Zendesk, which can impact performance. If you need to sync a large number of records, we recommend using our bulk sync feature, which can sync up to 250,000 records.
- If an account has previously synced from SFDC to Zendesk, the related organization ID is stored in a hidden Account field called Zendesk Support Organization ID. If organizations are failing to sync, please add this field to a layout to see whether this value is set, and to which organization it corresponds.
Warning: A value present within this field will take precedence over other sync matching logic. If you have previously synced with a different instance of Zendesk, the difference in organization ids may cause issues when syncing with the new instance. Removing this value and re-syncing would force a sync based on matching logic which should resolve the issue.
Preparing for the sync process (Professional edition only)
If you are using the Professional edition, you need to complete this procedure before you can start the synchronization process.
- Add all of the following Zendesk package fields to the page layouts for admins on Account:
- createdUpdatedFlag
- Domain_Mapping
- Last Sync Date
- Last Sync Status
- Notes
- Tags
- Zendesk_oldTags
- Zendesk_OutofSync
- Zendesk_Organization
- Zendesk_Organization_Id
- Zendesk_Result
- Add all of the following Zendesk package fields to the page layouts for admins on Contact:
- isCreatedUpdatedFlag
- Notes
- Tags
- Zendesk_oldTags
- Zendesk_OutofSync
- Zendesk_Result
- Zendesk_User_Id
- Add all of the following Zendesk package fields to the page layouts for admins on Lead:
- isCreatedUpdatedFlag
- Notes
- Organization
- Tags
- Zendesk_oldTags
- Zendesk_OutofSync
- Zendesk_Result
- Zendesk_User_Id
If you do not add these fields to the layout before you set up the sync, you'll see a section called Objects and field permissions in the settings page listing all the missing field permissions. You'll need to add the fields to your layout to resolve the missing permissions.
(Optional) Setting a logging level
You can determine if and when you'd like to collect a log. Logs are saved in a custom object included in the package called Integration Logs.
- In Salesforce, click the Zendesk tab in the Zendesk for Salesforce app.
- Locate the Logging level section.
- Select a Logging level from the drop-down:
- None does not create a log
- Error creates a log when errors occur only
- Debug always creates a log
- Select an option for Weeks to retain logs.
- Click Save Logging Level.
Configuring ongoing syncing to Zendesk organizations and users
You can configure an ongoing sync that automatically creates and updates Zendesk organizations immediately after accounts are created or updated in Salesforce. Likewise, you can configure an ongoing sync that automatically creates and updates Zendesk users immediately after contacts or leads are created or updated in Salesforce.
This is a one-way sync of data; changes applied in Zendesk are not reflected in Salesforce. The sync is triggered when a mapped
field is updated (in an existing record), or created (in a new record). Updates to unmapped fields do not trigger the ongoing sync.
If you set up the ongoing sync, we suggest performing an initial bulk sync (see Using the Zendesk Support bulk sync feature). The bulk sync option is also an advanced feature.
Enabling and configuring the sync requires updating a number of settings on the User and Organization Sync Settings page.
Begin by opening the User and Organization Sync Settings page and verifying the general settings.
When a record in Salesforce is created or changed, part of the syncing process is an attempt to establish whether a new record in Support should be created, or if an existing record should be updated. This is done by comparing field values based on user-configurable criteria.
If more than one matching result is found, the sync is unable to determine which record in needs to updated; and, since this is a background process, there is no way to ask the user to clarify which record is the correct match (which is what bulk sync does). In this case ongoing sync won't update any of the records, and instead will log an unsuccessful sync event.
The automatic matching criteria are shared with bulk sync and are explained here.
As in a bulk sync, once a successful match of existing records has been made, or a new record has been created in Support, the Salesforce record and the Support record are linked by placing an external ID on each one.
This means that subsequent updates to the record in Salesforce won't need to use matching criteria but rather update the linked record on the Support side.
This also allows Support users to configure the Salesforce sidebar app to look up Salesforce data based on the external ID stored in Support.
Zendesk Searchable Fields
Not all fields in Zendesk are available for searching (standard fields like domain_names, details, etc are not available to be used in a matching criteria).
Available Zendesk fields that can be used are listed below:
Organization Searchable Fields
- name
- custom fields
User Searchable Fields
- name
- custom fields
- In Salesforce, click the Zendesk tab in the Zendesk for Salesforce app.
- In the User and Organization Sync Settings section, click Go to Mappings. The Sync Settings page opens.
- Use the Sync Pairing drop-down menu to select Accounts - Organizations, if it is not already selected.
- In the General Options section, use the Enable Updates drop-down menu to select Yes, if it is not already selected.
To complete the sync setup, you need to configure the following:
Updating the sync filters
First, you should consider setting the sync filters to choose what information is synced to Zendesk. You can tightly control the elements used in the sync by building conditional statements to filter the results.
To update the sync filters
- On the Sync Settings page, locate the Filters section:
- To create a sync filter condition, specify the Field, the Operator, and the Value (value field is left empty for "is blank" and "is not blank" operators) in the condition builder sections:
- Meet ALL of these conditions: All of the Conditions added to this section must be satisfied to include the Salesforce record in the sync.
- Meet ANY of these conditions: One or more of the conditions in this section must be satisfied to include the Salesforce record in the sync.
For more detailed instructions on building filtering conditions, see Creating a sync filter condition.
- (Optional) Click the Test Query button to see if the record count, sample records queried, and SOQL query match your expected outcome. The information is displayed in the Test your filters section:
Important: Testing your filters does not mean the filters are already taking effect as your sync filter settings. Until you click the save button, the last saved filter configuration will still be the one used on currently running syncs. That also means, it is safe to tweak and test every filter combination on this page until you get your desired filtering as long as you don’t save it.
If no filters were set up, all the supported records are in scope for syncing.
- Click Save.
Mapping Zendesk and Salesforce fields
Now you need to map the Zendesk fields to the Salesforce fields you want to populate them.
To setup which account field to map to organization:
- Navigate to Zendesk > User and Organization Sync Settings > Go to Mappings and set Sync Pairing dropdown to Accounts - Organizations.
- In the Field Mappings section, configure the following:
- Zendesk Support Organization Name: By default, this option is set to Account Name (Name). This controls which field in the Salesforce account record is synced as its related organization’s name.
- Zendesk Domain Names (Optional): Use the drop-down menu to select the Salesforce fields you want to map to the Domain Names field, then use the Notes drop-down menu to select the Notes field on a Zendesk organization profile. If the domain value in Salesforce includes a protocol prefix (i.e. https://www.abc.com -> abc.com) it will be stripped when syncing to Zendesk.
- Zendesk Tags: Use the picklist to select the available Salesforce fields to use as tags in your Zendesk, by clicking the field(s) in the left pane and using the arrows to move it to the right pane.The selected Salesforce field values are added as tags in your Zendesk.
Mapping a field to domain names enables user mapping for organizations in Zendesk. User mapping automatically adds users to an organization based on their email domain when they are created in your Zendesk. If you want to enable user mapping, you must first set up a field on Account with the organization email domain(s) (separated by a space).
- Click Save
Configuring custom mappings and assigning picklist values
Finally, configure any custom field mappings and assign picklist values, if needed.
To configure custom mappings and assign picklist values
- On the Sync Settings page, locate the Field Mapping section:
- Use the Salesforce Field drop-down menu to select a Salesforce field, and to display a new drop-down list of available Zendesk fields.
- Use the Zendesk Fields drop-down to select a Zendesk custom organization field, then click Add.
Mapping these fields means that they update during the ongoing sync and the bulk sync. The options in the Zendesk Field drop-down vary according to the type of field you select in the Salesforce Field drop-down; only fields of the same type will be available (see Allowed field types for Zendesk field mapping).
- If you mapped a Salesforce picklist field to a Zendesk drop-down field, click Map beside each one, then select a drop-down value for each picklist value and click Add.
Configuring syncs for Contacts to users, or for Leads to users
You can also configure an ongoing sync for Contacts to users, and for Leads to users.
To configure a sync for Contacts to users, or for Leads to users
- At the top of the User and Organization Sync Settings page, use the Sync Pairing drop-down menu to select Contacts - Users, or Leads - Users.
- In the General Options section, use the Enable Updates drop-down menu to select Yes, if it is not already selected.
- Update the Filters, Tag Mapping, and Field Mapping sections as described above.
Allowed field types for Zendesk field mapping
The following table shows the supported Salesforce field types and the corresponding allowed Zendesk field types.
Supported Salesforce field type | Drop-down | Text | Multi-line text | Numeric | Decimal | Checkbox | Date |
---|---|---|---|---|---|---|---|
Auto Number | X | X | |||||
Checkbox | X | ||||||
Currency | X | ||||||
Date | X | ||||||
Date/Time | X | X | X | ||||
X | |||||||
Geolocation | X | X | |||||
Number | X (if no decimal is present) | X | |||||
Percent | X | ||||||
Phone | X | X | |||||
Picklist | X | ||||||
Text | X | X | |||||
Text Area | X | X | |||||
Text Area (Long) | X | X | |||||
Text Area (Rich) | X | X | |||||
Text Area (Encrypted) | X | X | |||||
URL | X | X |
Creating a sync filter condition
To create a sync filter condition, specify the field, the operator, and the value (value field is left empty for ‘is blank’ and ‘is not blank’ operators).
If you wish to remove a condition from the table, click the Clear link on its row.
Related-record field filtering
Related-record fields have a double angle bracket (>>) at the right side of the label:
If you click the bracket, the fields for that related record are displayed. Click Back to return to the main field list.
Operators for each field type
Operator options will vary depending on the type of field you have selected.
Date field operators:
- = (exactly the same date)
- != (not the same date)
- > (later than)
- >= (later than or same)
- < (earlier than)
- <= (earlier than or same)
- is blank
- is not blank
Datetime field operators:
- = (exactly the same datetime)
- != (not the same datetime)
- > (later than)
- >= (later than or same)
- < (earlier than)
- <= (earlier than or same)
- is blank
- is not blank
Id field operators:
- =
- !=
Text field operators:
- =
- !=
- contains
- does not contain
- is blank
- is not blank
Picklist field operators:
- in
- not in
- is blank
- is not blank
Number field operators:
- =
- !=
- >
- >=
- <
- <=
- is blank
- is not blank
Checkbox field operators:
- =
Formula field operators:
Operators will depend on the output type of this formula. Except for the Picklist operators, it could be any of those field type mentioned above.
52 Comments
Has there been any movement on the syncing of formula fields to zendesk tags
Hi, Im having problems with deleting the logs (they are taking up almost 90% of storage)
I tried:
<Zendesk\_\_ZendeskLog\_\_c> tmpList = [SELECT Id FROM Zendesk_ZendeskLog_c ORDER BY CreatedDate ASC LIMIT 10000];
if (!tmpList.isEmpty()) delete tmpList;
But I get the following error:
Line: 1, Column: 0
required (...)+ loop did not match anything at input '<'
Any advice?
Can you try this instead?
@erin Works perfectly. Thank you.
I don't want a new organization to be created in Zendesk for every new account created in SFDC. I only want an organization created when an opportunity for an account is closed/won. It doesn't look like the integration can be configured in such a way. Can someone confirm? If not, can someone also confirm whether this is on the roadmap?
When syncing a contact, I only want to sync contacts with a specific role. Is that possible? Also, I only want to sync contacts when an opportunity is set to closed/won. Is that also possible? Thanks!
Oh one more question:
During the sync, we also want to pull in the support level associated with the product that was sold in the opportunity. Is that possible? The "support level" is a field within the product.
Hi Allen! At this time, the integration does not support Salesforce Opportunities. The sync tools only work on Accounts, Contacts, and Leads. Also, keep in mind that the ongoing sync is triggered by opening the record and clicking “save."
To make this work, you could create fields on your Accounts and Contacts, then populate them with data from other places. For example, you could make an “opportunity status” field, which is updated when the Opportunity is closed or won. Then you could use that “opportunity status” field to filter your Account and Contact sync.
For the contact role, as long as it is a compatible field on the Contact, you should be able to include it in your sync filter. The “filter by field” instructions are in the article above.
For the “product support level,” you could create matching fields in Salesforce and Zendesk, then map them using the steps in the article above. Make sure they are compatible types - most likely, you’d have a Salesforce picklist mapping to a Zendesk dropdown.
Basically, as long as you can get the data to a supported field on the Account and/or Contact, you can incorporate that data in the sync.
@Amy Dee: This is very helpful. Thanks for the detailed reply.
Hi,
Is it possible to send data (tickets) from Zendesk to Salesforce, or can you only send from Salesforce to Zendesk? If not, how would I "Lookup" Salesforce Account data from Zendesk? It looks like I have set it up, as it says "Your Zendesk account is connected to your Salesforce organization and can retrieve user information" but I don't see Zendesk tickets in Salesforce. Do I need to be in the Enterprise trial for this?
Any help or links to the correct help file would be appreciated. Lots of information so sorry if I missed something!
Aron
Hi Aron,
This particular article is only for syncing users and organizations from Salesforce to Zendesk. I think you'll want to read through these two options in Choosing Zendesk for Salesforce features instead to set up seeing tickets in Salesforce.
Hope this helps!
Erin
Has anyone found a standard solution for populating an "Email Domains" field in Salesforce (automatically) so that Zendesk can pick it up and automatically associated requestors with their organization? It's easy enough to create a custom field within the Contact object, but the challenge is rolling up these values to the Account object and de-duplicating the values. Expected result would be something like this:
Email Domains: example.com example.co.uk corp.example.com
I realize this is a Salesforce question, but I'm hopeful that someone has solved for this particular Zendesk use case.
Reply to my own question:
We exported a CSV of: Account Name, Email Address
We then did some offline processing to create a new CSV that only had 1 account per line and a comma-delimited list of email address domains as the second field.
Example:
Acme Inc.,"acme.com,acme.co.uk"
Then we did a Bulk import for Organizations. We resigned ourselves to doing ongoing updates manually.
There is a broken image under Step 5 of "Configuring Ongoing Sync".
Should the Zendesk fields in Salesforce (eg. Zendsk_OutofSync) ever be manually modified? I had a case where the Account became out of sync with the Organization and needed to trigger a resync, so I checked the "Zendesk_OutofSync" field and that seemed to accomplish what I wanted. Now I'm unsure if there are side-effects of doing that. Is there a better way to trigger the resync of a single Account (and, if possible, the associated Contacts)?
Thanks for the heads-up on the image, Justin! I'll have our docs team look into it. I've also followed up to see if I can get an answer to your question here.
@Justin
The sync fields can be manually modified but typically we recommend not doing so without guidance as it can cause mismatch issues or the syncs to fail entirely.
That being said, you can trigger a sync on any account/contact record by clicking "Edit" then "Save". This will cause the sync trigger to fire on that record, even if no edit was actually made.
Keep in mind, you would have to do this on each record (account/contact) you wanted to trigger the sync on.
Hi there,
Can you sync a custom object in SFDC to a user/contact in Zendesk.
We are wanting to create a custom object inside of SFDC called 'platform users' that is seperate to the default object 'contacts'. We have 100s of users per account and do not want them all to live in the 'contact' object on salesforce
Hey Ben,
You cannot sync a custom object from SF to Zendesk users using the standard integration. However, using the Force.com Toolkit: https://developer.zendesk.com/rest_api/docs/api-clients/forcecom you could create a custom sync function which could include that ability - but it would require all custom coding on your part!
Is it possible to sync based on another field BESIDES the email address? Say a custom object that contains the USER ID or some other created value? I have some "voice only" users that do not have an email address.
Hi Eddie -
Unfortunately, user-contact syncing can only be configured using email as the key. I hope this clears up any confusion - sorry for the inconvenience.
I am currently working through the integration and get a message:
Attempt to de-reference a null object
An unexpected error has occurred. Your solution provider has been notified. (Zendesk)
Do I need to uninstall and start again?
Hey @Webio Operations -
I'm going to pull your question into a ticket so we can work on it together as there's a number of things that could be going on here. Keep an eye out for an email in the very near future.
I really would like to sync based on a custom field inside SFDC instead of Account Name. Account Name gives me a zillion duplicates that I don't need. I'm talking with Dan over there at Zendesk about this but thought I would post it here, too. My other thought was to put our unique IDs into your Organization Name field. But that still syncs with Account Name on the SFDC side. I wish I could map your Organization Name field to another field in SFDC. That would be perfect for us.
Another note, why are the most current posts on the very LAST page? We are considering Zendesk Community and I would like to show the most recent posts FIRST instead of last. Is that a setting I can configure? The first post on this topic was from 2012!
@Jason,
Very happy you brought this up. We're actually in the process of redesigning the way Sync works, and ability to select how records are matched is a main aspect of the change.
I would love to share my plans and get feedback from your. Let me know if you will be open for a video call?
P.S. Totally agree about last comment should be displayed first. I'll pass your feedback to the right team.
We wrote our own sync in the end as it was critical for us that it was
a. Two way - i.e a user that added themselves to ZD got pushed to SF so the sales team knew there was an additional contact.
b. We had loads of Accounts and Contacts in SF that weren't relevant for ZD, so we had to add in some filtering i.e only sync if the Account has purchased product X.
c. We use a custom field in ZD to store the SF unique ID, so if the SF account changes name or the contact does (they often get married) the sync still happens correctly.
It maybe that the SF sync now does all of these, but at the time it didn't.
Happy to talk/answer any questions.
@Yuri -
I would also be interested in knowing about the plans regarding the redesigning of how the records (especially the organizations to accounts) are matched. The current setup of matching based on the account "name" is really a huge roadblock for us.
Please let me know if there are anyways around this restriction, such that we can match them based on the Salesforce ID? Also, please let me know when can we expect a change in the way the records are matched.
Thanks in advance.
@Ali
We're currently working to completely redesign the way sync works. Instead of relying on org name to match account name, we are planning to allow up to free 3 matching criteria. These will be user configurable.
There are many other enhancements to the sync mechanism included as well.
I tentatively plan to start a closed beta early next year before releasing it publicly.
Hi,
I want to sync Contacts but not Leads.
In the "User and Organization Sync Settings", I want to choose "Enable Updates" = Yes for Contacts and "Enable Updates" = No for Leads.
It seems that I need to choose the same setting for Leads and Contacts.
Is it possible to choose "Yes" for Contacts and "No" for leads?
Thanks
Hi Amarel!
At this time, it is not possible to choose "Yes" for Contacts and "No" for leads. However you should be able to filter the lead object as a workaround:
Please sign in to leave a comment.