Zendesk plugins
Introduction
The Zendesk plugins can be used to read one or more Zendesk objects from your Zendesk account. This can allow you to get deeper insights into your customer success by enriching Zendesk data with other data sources.
Use case(s)
User Storie(s)
As a pipeline developer, I would like to fetch a single object from Zendesk, so that I can get deeper insights into my customer success stories.
As a pipeline developer, I would like to fetch multiple objects from Zendesk, so that I do not have to create multiple source nodes merely to replicate all objects to a destination.
As a pipeline developer, I would like to fetch all objects apart from a blacklist from Zendesk, so that I can skip a few objects, but don't have to specify all the remaining ones explicitly.
Plugin Type
Configurables
This integration should be built using two plugins:
Zendesk single object
Used when you want to pull only a single object from Zendesk
Section | User Facing Name | Type | Description | Optional | Constraints |
|---|---|---|---|---|---|
Basic | Admin Email | text | Zendesk's admin email. | No | Should validate email. |
| API Token | text | Zendesk's API token. Can be obtained from the Zendesk Support Admin interface. Check out Zendesk's documentation for API Token generation. | No |
|
| Subdomains | csv | List of Zendesk's Subdomains to read object from. | No | Can have multiple values. |
| Object to Pull | select | Select an object to pull from Zendesk: Comments, Groups, Organizations, Satisfaction Ratings, Tags, Ticket Fields, Ticket Metrics, Ticket Metrics Events, Tickets, Users. | No | Defaults to all. |
|
|
|
|
|
|
| Start Date | textbox | (required by some Zendesk's API Endpoints) | No | Depends on list of the selected objects. |
Zendesk multi-object
Used when you want to pull multiple objects from Zendesk
Section | User Facing Name | Type | Description | Optional | Constraints |
|---|---|---|---|---|---|
Basic | Admin Email | text | Zendesk's admin email. | No | Should validate email. |
| API Token | text | Zendesk's API token. Can be obtained from the Zendesk Support Admin interface. Check out Zendesk's documentation for API Token generation. | No |
|
| Subdomains | csv | List of Zendesk's Subdomains to read objects from. | No | Can have multiple values. |
| Objects to Pull | multi-select | Select a list of objects to pull from Zendesk: Comments, Groups, Organizations, Satisfaction Ratings, Tags, Ticket Fields, Ticket Metrics, Ticket Metrics Events, Tickets, Users | Yes | Defaults to all. |
| Objects to Skip | multi-select | Select a list of objects to skip from Zendesk. All other objects will be pulled. | Yes | Only used when Objects to pull is not specified |
|
|
|
|
|
|
| Start Date | textbox | (required by some Zendesk's API Endpoints) | No | Depends on list of the selected objects. |
The plugin should output one record per row in Zendesk, with an additional field specifying the object where the record came from. Refer to the Salesforce multi-objects plugin for examples
Design / Implementation Tips
v2 is current version of supported Zendesk's API.
Zendesk API has support of Incremental Exports. The API lets export data from specified start_time till end_time.
Plugin will be implemented using Zendesk Java Client by Cloudbees.
Authentication will be performed using Admin Email and API Token.
Output schema will be automatically generated from selected fields.
References
Object Reference
Object Description
Field Name | Type | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Comments | ||||||||||||||||||||||||||||||||||||
Article Comments | ||||||||||||||||||||||||||||||||||||
id | number | |||||||||||||||||||||||||||||||||||
url | string | |||||||||||||||||||||||||||||||||||
body | string | |||||||||||||||||||||||||||||||||||
author_id | number | |||||||||||||||||||||||||||||||||||
source_id | number | |||||||||||||||||||||||||||||||||||
source_type | string | |||||||||||||||||||||||||||||||||||
locale | string | |||||||||||||||||||||||||||||||||||
html_url | string | |||||||||||||||||||||||||||||||||||
created_at | datetime | |||||||||||||||||||||||||||||||||||
updated_at | datetime | |||||||||||||||||||||||||||||||||||
vote_sum | number | |||||||||||||||||||||||||||||||||||
vote_count | number | |||||||||||||||||||||||||||||||||||
Post Comments | ||||||||||||||||||||||||||||||||||||
id | number | |||||||||||||||||||||||||||||||||||
url | string | |||||||||||||||||||||||||||||||||||
body | string | |||||||||||||||||||||||||||||||||||
author_id | number | |||||||||||||||||||||||||||||||||||
post_id | number | |||||||||||||||||||||||||||||||||||
official | boolean | |||||||||||||||||||||||||||||||||||
html_url | string | |||||||||||||||||||||||||||||||||||
created_at | datetime | |||||||||||||||||||||||||||||||||||
updated_at | datetime | |||||||||||||||||||||||||||||||||||
vote_sum | number | |||||||||||||||||||||||||||||||||||
vote_count | number | |||||||||||||||||||||||||||||||||||
Ticket Comments | ||||||||||||||||||||||||||||||||||||
id | number | |||||||||||||||||||||||||||||||||||
type | string | |||||||||||||||||||||||||||||||||||
body | string | |||||||||||||||||||||||||||||||||||
html_body | string | |||||||||||||||||||||||||||||||||||
plain_body | string | |||||||||||||||||||||||||||||||||||
public | boolean | |||||||||||||||||||||||||||||||||||
author_id | number | |||||||||||||||||||||||||||||||||||
attachments | list[attachment]
| |||||||||||||||||||||||||||||||||||
@Bhooshan Mogal Could you please kindly clarify the following questions:
SubdomainTo request API we need to know Zendesk subdomain. It is possible than one email can have multiple subdomains. For example, account can have multiple Brands and each Brand has it's own subdomain.
Do we need to add support for multiple subdomains?
Rate limits
Zendesk's API has Rate limits for number of requests per minute.
Is there any best practice to handle it?
Tags
Limitation: Lists the 500 most popular tags in the last 60 days, in decreasing popularity.
Do we need to mention it in doc?
It is also possible to get Tags for each ticket, organization, user.
Do we need to add an advanced options in this case? It requires list of ids from Zendesk or some sort of autocomplete widget with requests to Zendesk API.
Comments
There are 4 types of comments available:
Article Comments. Requires article id or user id.
See question about advanced options in Tags.
Post Comments. Requires post id or user id.
See question about advanced options in Tags.
Ticket Comments. Requires ticket id.
See question about advanced options in Tags.
Request Comments. Requires request id.
See question about advanced options in Tags.
Which one to use?
Ticket Events
Unable to find API endpoint for it. There are 2 endpoints:
Ticket Audits endpoint. Audits are a read-only history of all updates to a ticket. Has limitation: Archived tickets are not included in the response.
Ticket Activities endpoint. The Ticket Activities API returns ticket activities by other people affecting the agent making the API request. Has limitation: Lists ticket activities in the last 30 days affecting the agent making the request.
Maybe one of those endpoints can be used?
Ticket Metrics
There is a limitation: Archived tickets are not included in the response.
Do we need to warn about it?
It is possible to get Ticket Metrics for each ticket.
See question about advanced options in Tags.
Ticket Metrics Events
Requires request parameter start_time: The Unix UTC epoch time of the oldest event you're interested in. Example: 1332034771.
Do we need to set any default value and add advanced option for it?
Tickets
It is possible to get Tickets for each organization, user (for user there are 3 possible tickets: requested, ccd, assigned).
Same question about advanced options as for Tags.
Users
It is possible to get Users for each organization, group.
See question about advanced options in Tags.
Java SDK
There is Java SDK. It is third-party SDK by CloudBees with Apache 2.0 Licence. It covers 60-70% of required Zendesk objects and has a bunch of models already mapped on Zendesk API.
Can we use it?
Zendesk account
Is there any Zendesk account that can be used for testing purposes?
Thank you for your attention to this matter.