Zendesk is a popular CRM and customer support service suite that enables you to resolve all your customers' queries and concerns with features like live chat, call center software capabilities, and a smart knowledge base for your executives.

RudderStack supports Zendesk as a destination to which you can seamlessly send your customer data.

Find the open source transformer code for this destination in the GitHub repository.

Getting started

Before configuring Zendesk as a destination in RudderStack, verify if the source platform is supported by Zendesk by referring to the table below:

Connection ModeWebMobileServer
Device mode---
Cloud modeSupportedSupportedSupported
To know more about the difference between cloud mode and device mode in RudderStack, read the RudderStack Connection Modes guide.

Once you have verified that the source platform supports sending events to Zendesk, perform the steps below:

  1. From your RudderStack dashboard, add the source. Then, from the list of destinations, select Zendesk.
  2. Assign a name to the destination and click Continue.

Connection settings

To successfully configure Zendesk as a destination, you will need to configure the following settings:

Zendesk connection settings
  • Email: Enter the email address used to log into your Zendesk account.
  • API Token: Enter the Zendesk API token used to authenticate the integration. To generate a new API token, refer to this Zendesk support article.
  • Zendesk Subdomain: Enter your Zendesk subdomain excluding .zendesk.com.
  • Create users as verified: Enable this setting to create verified users in Zendesk. When enabled, RudderStack sends verified as true in the event payload and Zendesk skips the email verification for these users.
  • Send Group calls without a User ID: Enable this setting if you do not want to associate a particular user with a group. When enabled, RudderStack creates or updates a group only if userId is not present in the event.
  • Enable Removing Users from Organizations: Enable this setting to remove users from an organization via the identify call.
For more information on this setting, refer to the Removing users from an organization section below.

Identify

You can use the identify call to create or update a user in Zendesk.

It is highly recommended to include the user's email in the identify call as RudderStack uses this field to create or update a user in Zendesk.
rudderanalytics.identify("1hKOmRA4GRlm", {
name: "Alex Keener",
email: "alex@example.com",
country: "USA",
});

RudderStack persists the user details from the identify call for all the subsequent calls made to Zendesk.

Supported mapping

RudderStack maps the following event properties to the standard Zendesk user attributes:

RudderStack propertyZendesk attributePresence
namenameRequired
emailemailOptional, but recommended
organizationId / company.idorganization_idOptional
timezonetime_zoneOptional
phonephoneOptional
userIduser_idOptional
userIdexternal_idOptional
RudderStack creates a new custom field in Zendesk for any other unmapped attributes.
The organization_id corresponds to the organization ID assigned by Zendesk.

Removing users from an organization

Enable the Enable Removing Users from Organizations setting in the dashboard to use this feature.

To remove a user from an organization, the following fields must be present in the identify traits:

  • company.id
  • company.remove (set to true)

A sample identify call for this action is shown below:

rudderanalytics.identify("1hKOmRA4GRlm",{
name: "Alex Keener",
email: "alex@example.com",
country: "USA",
company:{
id: 900001329943,
remove: true
}
});

The above identify call updates the user (if they exist) as well as removes them from the organization associated with the ID 900001329943.

RudderStack assumes a valid Zendesk organization_id in the company.id field. Then, it finds the organization corresponding to that ID and removes the user.

Updating user's primary email

To set a new email address as the user's primary email in Zendesk, you can use the primaryEmail trait in the identify call, as shown:

rudderanalytics.identify("1hKOmRA4GRlm", {
name: "Alex Keener",
email: "alex@example.com",
primaryEmail: "test300@email.com",
country: "USA",
});

In the above snippet, test300@email.com is set as the user's primary email and alex@example.com is set as the secondary email in Zendesk. However, if primaryEmail is not specified, then alex@example.com is set as the primary email.

Track

The track call lets you record the user actions along with any associated properties and send this information to Zendesk.

You need to first set the userId by calling identify before sending any track events to Zendesk.

Zendesk expects a userId for every track call.

A sample track call is shown below:

rudderanalytics.track("Order Completed", {
userId: "1hKOmRA4GRlm"
currency: "USD",
revenue: 77,
value: 99.99,
});
RudderStack uses the Zendesk Events API to send the track calls.

Group

You can use the group call to create or update an organization in Zendesk. RudderStack uses the groupId to do this.

A sample group call is shown below:

rudderanalytics.group("group01", {
name: "Softworks",
country: "UK",
group_plan: "trial",
});

Associating user to an organization

You can also use the group call to associate a particular user to an organization. To do so, disable the Send Group Calls without User ID dashboard setting in RudderStack and pass the userId via the identify call before sending any group calls to Zendesk.

RudderStack assumes that an identify call (containing the userId) is made before any group call.

If you do not want to associate a particular user with a group, enable the Send Group Calls without User ID dashboard setting. If this setting is enabled, the group will be created or updated only if userId is not present in the event.

Standard mapping

RudderStack maps the following optional group traits to the standard Zendesk organization attributes:

RudderStackZendesk
namename
domainNamesdomain_names
tagstags
groupIdexternal_id
urlurl
deleteddeleted
RudderStack creates a new custom field in Zendesk for any other unmapped attributes.

How RudderStack does the user-organization association

  • If both userId and groupId are present in the group event, then RudderStack first finds the user by looking for the email field present in the context.traits object.

    • If email is present, then RudderStack associates the user with the organizationId and sends all the user information for this call.
    • If email is absent, RudderStack creates the user. It will then find the organization associated with the groupId present in the payload.
  • If groupId is absent in the event payload, RudderStack creates a new organization in Zendesk and then does the association.

The above discussion can be summarized as follows:

email present?groupId present?DescriptionExpected behavior
NoNoUser and the organization do not exist in Zendesk.RudderStack creates a new user and organization and associates both.
YesNoUser already exists in Zendesk but not the organization.RudderStack creates a new organization and associates the existing user information with it.
NoYesOrganization already exists in Zendesk but not the user.RudderStack creates a new user and associates them with the organization.
YesYesBoth the user and the organization exist in Zendesk.RudderStack does the user-organization association.

Contact us

For more information on the topics covered on this page, email us or start a conversation in our Slack community.

On this page