# Zendesk ETL

### Snapshot

| Features                        | Details                                                         |
| ------------------------------- | --------------------------------------------------------------- |
| Release Status                  | Released                                                        |
| Source API Version              |                                                                 |
| Table Selection                 | Yes                                                             |
| Column Selection                | Yes                                                             |
| Edit Integration                | Yes                                                             |
| Replication Type Selection      | No                                                              |
| Authentication Parameters       | <p>Zendesk Subdomain<br>Zendesk LoginId<br>Zendesk Password</p> |
| Replication Type                | Key Based Replication                                           |
| Replication Key                 | Date                                                            |
| Suggested Replication Frequency | 24 hrs                                                          |

| Tables/APIs Supported |               |
| --------------------- | ------------- |
| GroupMemberships      | Groups        |
| Macros                | Organizations |
| SatisfactionRatings   | Tags          |
| TicketComments        | TicketFields  |
| TicketForms           | TicketMetrics |
| Tickets               | Users         |

### Integrate Zendesk with Daton

1. Signin to Daton&#x20;
2. Select Zendesk from Integrations page
3. Provide Integration Name, Replication Frequency, and History. Integration name would be used in creating tables for the integration and cannot be changed later&#x20;
4. Provide Zendesk Subdomain, LoginId, and Password to authorize Daton to periodically extract data from Zendesk
5. Post successful authentication, you will be prompted to choose from the list of available tables
6. Then select all required fields for each table
7. Submit the integration

### Workflow

1. Integrations would be in Pending state initially and will be moved to Active state as soon as the first job loads data successfully on to the configured warehouse
2. Users would be able to edit/pause/re-activate/delete integration anytime
3. Users can view job status and process logs from the integration details page by clicking on the integration name from the active list

### Zendesk Data

**GroupMemberships**

Purpose: A membership links an agent to a group. Groups can have many agents, as agents can be in many groups. You can use the API to list what agents are in which groups, and reassign group members.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/group_memberships>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name        | Target Datatype |
| ----------- | --------------- |
| id          | INTEGER         |
| url         | STRING          |
| user\_id    | INTEGER         |
| group\_id   | INTEGER         |
| created\_at | DATETIME        |
| updated\_at | DATETIME        |

**Groups**

Purpose: Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/groups>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name        | Target Datatype |
| ----------- | --------------- |
| id          | INTEGER         |
| url         | STRING          |
| name        | STRING          |
| deleted     | BOOLEAN         |
| updated\_at | DATETIME        |
| created\_at | DATETIME        |

**Macros**

Purpose: A macro consists of one or more actions that modify the values of a ticket's fields. Macros are applied to tickets manually by agents. For example, you can create macros for support requests that agents can answer with a single, standard response.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/macros>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name        | Target Datatype |
| ----------- | --------------- |
| id          | INTEGER         |
| restriction | RECORD          |
| actions     | RECORD          |
| active      | BOOLEAN         |
| description | STRING          |
| position    | INTEGER         |
| title       | STRING          |
| url         | STRING          |
| updated\_at | DATETIME        |
| created\_at | DATETIME        |

**Organizations**

Purpose: Just as agents can be segmented into groups in Zendesk Support, your customers (end-users) can be segmented into organizations. You can manually assign customers to an organization or automatically assign them to an organization by their email address domain. Organizations can be used in business rules to route tickets to groups of agents or to send email notifications.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/organizations>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name                 | Target Datatype |
| -------------------- | --------------- |
| id                   | INTEGER         |
| domain\_names        | RECORD          |
| external\_id         | STRING          |
| group\_id            | INTEGER         |
| name                 | STRING          |
| notes                | STRING          |
| shared\_tickets      | BOOLEAN         |
| shared\_comments     | BOOLEAN         |
| organization\_fields | STRING          |
| url                  | STRING          |

**SatisfactionRatings**

Purpose: If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/satisfaction_ratings>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name          | Target Datatype |
| ------------- | --------------- |
| id            | INTEGER         |
| updated\_at   | DATETIME        |
| assignee\_id  | INTEGER         |
| created\_at   | DATETIME        |
| group\_id     | INTEGER         |
| reason\_id    | INTEGER         |
| requester\_id | INTEGER         |
| ticket\_id    | INTEGER         |
| url           | STRING          |
| score         | STRING          |
| reason        | STRING          |
| comment       | STRING          |

**Tags**

Purpose: You must enable the tagging of users and organizations in Zendesk Support for the API calls to work.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/tags>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name  | Target Datatype |
| ----- | --------------- |
| name  | STRING          |
| count | INTEGER         |

ticket\_audits id | INTEGER author\_id | INTEGER ticket\_id | INTEGER metadata | RECORD events | RECORD via | RECORD

**TicketComments**

Purpose: Ticket comments represent the conversation between requesters, collaborators, and agents. Comments can be public or private.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/ticket_comments>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name             | Target Datatype |
| ---------------- | --------------- |
| id               | INTEGER         |
| created\_at      | STRING          |
| body             | STRING          |
| html\_body       | STRING          |
| plain\_body      | STRING          |
| public           | BOOLEAN         |
| audit\_id        | INTEGER         |
| author\_id       | INTEGER         |
| attachments      | RECORD          |
| via**source**rel | STRING          |
| via\_\_channel   | STRING          |

**TicketFields**

Purpose: Zendesk Support allows admins to customize the fields displayed on the ticket form. Basic text fields as well as customizable dropdown and number fields are available. You can customize The visibility of these fields for end users in the admin interface.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/ticket_fields>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name                    | Target Datatype |
| ----------------------- | --------------- |
| id                      | INTEGER         |
| created\_at             | STRING          |
| updated\_at             | STRING          |
| title\_in\_portal       | STRING          |
| visible\_in\_portal     | BOOLEAN         |
| collapsed\_for\_agents  | BOOLEAN         |
| regexp\_for\_validation | STRING          |
| title                   | STRING          |
| position                | INTEGER         |
| type                    | STRING          |
| editable\_in\_portal    | BOOLEAN         |
| raw\_title\_in\_portal  | STRING          |
| tag                     | STRING          |
| removable               | BOOLEAN         |
| active                  | BOOLEAN         |
| url                     | STRING          |
| raw\_title              | STRING          |
| required                | BOOLEAN         |
| description             | STRING          |
| raw\_description        | STRING          |
| agent\_description      | STRING          |
| required\_in\_portal    | STRING          |
| custom\_field\_options  | RECORD          |

**TicketForms**

Purpose: Returns a list of all ticket forms for your account if accessed as an admin or agent. End users will only see the list of ticket forms that are marked 'end\_user\_visible'.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/ticket_forms>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name                   | Target Datatype |
| ---------------------- | --------------- |
| id                     | INTEGER         |
| updated\_at            | STRING          |
| created\_at            | STRING          |
| name                   | STRING          |
| raw\_name              | STRING          |
| display\_name          | STRING          |
| raw\_display\_name     | STRING          |
| url                    | STRING          |
| position               | INTEGER         |
| active                 | BOOLEAN         |
| default                | BOOLEAN         |
| end\_user\_available   | BOOLEAN         |
| in\_all\_brands        | BOOLEAN         |
| ticket\_field\_ids     | RECORD          |
| restricted\_brand\_ids | RECORD          |

**TicketMetrics**

Purpose: Returns a list of tickets with their metrics. Tickets are ordered chronologically by created date, from newest to oldest. The last ticket listed may not be the absolute oldest ticket in your account due to ticket archiving.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/ticket_metrics>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name                                 | Target Datatype |
| ------------------------------------ | --------------- |
| id                                   | INTEGER         |
| updated\_at                          | STRING          |
| group\_stations                      | INTEGER         |
| assignee\_stations                   | INTEGER         |
| created\_at                          | STRING          |
| reopens                              | INTEGER         |
| replies                              | INTEGER         |
| assignee\_updated\_at                | DATETIME        |
| requester\_updated\_at               | DATETIME        |
| status\_updated\_at                  | DATETIME        |
| initially\_assigned\_at              | DATETIME        |
| assigned\_at                         | DATETIME        |
| solved\_at                           | DATETIME        |
| latest\_comment\_added\_at           | DATETIME        |
| reply\_time\_in\_minutes             | RECORD          |
| first\_resolution\_time\_in\_minutes | RECORD          |
| full\_resolution\_time\_in\_minutes  | RECORD          |
| agent\_wait\_time\_in\_minutes       | RECORD          |
| requester\_wait\_time\_in\_minutes   | RECORD          |
| on\_hold\_time\_in\_minutes          | RECORD          |

**Tickets**

Purpose: Tickets are the means through which your end users (customers) communicate with agents in Zendesk Support. Tickets can originate from a number of channels, including email, Help Center, chat, phone call, Twitter, Facebook, or the API. All tickets have a core set of properties.

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/tickets>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name               | Target Datatype |
| ------------------ | --------------- |
| id                 | INTEGER         |
| updated\_at        | STRING          |
| organization\_id   | INTEGER         |
| requester\_id      | INTEGER         |
| is\_public         | BOOLEAN         |
| description        | STRING          |
| follower\_ids      | RECORD          |
| submitter\_id      | INTEGER         |
| brand\_id          | INTEGER         |
| group\_id          | INTEGER         |
| type               | STRING          |
| collaborator\_ids  | RECORD          |
| tags               | RECORD          |
| has\_incidents     | BOOLEAN         |
| created\_at        | STRING          |
| raw\_subject       | STRING          |
| status             | STRING          |
| custom\_fields     | RECORD          |
| url                | STRING          |
| allow\_channelback | BOOLEAN         |
| due\_at            | STRING          |
| followup\_ids      | RECORD          |
| priority           | STRING          |
| assignee\_id       | INTEGER         |
| subject            | STRING          |
| external\_id       | STRING          |

**Users**

Purpose: Returns all user details

Source API Documentation  <https://developer.zendesk.com/rest_api/docs/support/users#list-users>

Replication: Key-Based Replication

Replication Key: created\_at

**Fields**

| Name                       | Target Datatype |
| -------------------------- | --------------- |
| id                         | INTEGER         |
| updated\_at                | STRING          |
| active                     | BOOLEAN         |
| alias                      | STRING          |
| chat\_only                 | BOOLEAN         |
| custom\_role\_id           | INTEGER         |
| created\_at                | STRING          |
| default\_group\_id         | INTEGER         |
| details                    | STRING          |
| email                      | STRING          |
| external\_id               | STRING          |
| last\_login\_at            | STRING          |
| locale                     | STRING          |
| locale\_id                 | INTEGER         |
| name                       | STRING          |
| notes                      | STRING          |
| moderator                  | BOOLEAN         |
| organization\_id           | INTEGER         |
| only\_private\_comments    | BOOLEAN         |
| phone                      | STRING          |
| photo                      | RECORD          |
| role                       | STRING          |
| role\_type                 | INTEGER         |
| shared                     | BOOLEAN         |
| shared\_agent              | BOOLEAN         |
| shared\_phone\_number      | BOOLEAN         |
| signature                  | STRING          |
| suspended                  | BOOLEAN         |
| tags                       | STRING          |
| ticket\_restriction        | STRING          |
| time\_zone                 | STRING          |
| two\_factor\_auth\_enabled | BOOLEAN         |
| url                        | STRING          |
| verified                   | BOOLEAN         |
| user\_fields               | RECORD          |
