# Freshdesk

Freshdesk is an online cloud-based customer support software providing help desk support.

Freshdesk integration replicates data using the [Freshdesk REST API](https://developer.freshdesk.com/api/).

See the [Schema](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#Schema) section for a list of objects available for replication.

## Preparing for authentication

To access your data, you need to authenticate the connection with your account credentials.

Information noteMake sure that the account you use has read access to the tables you want to fetch.

You need administrator permissions in Freshdesk.

To find your API key:

1. Log into your [Freshdesk](https://support.freshdesk.com/support/login) account.
2. Click your profile icon in the upper-right corner.
3. Go to Profile settings &gt; View API Key.
4. Copy and paste your API key into a secured file.

## Creating the connection

For more information, see [Connecting to SaaS applications](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Fill in the required connection properties.

2. Provide a name for the connection in Connection name.

3. Select Open connection metadata to define metadata for the connection when it has been created.

4. Click Create.

Connection settings

| Setting | Description |
| --- | --- |
| Data gateway | Select a Data Movement gateway if required by your use case.<br><br>Information note<br><br>This field is not available with the Qlik Talend Cloud Starter subscription, as it does not support Data Movement gateway. If you have another subscription tier and do not want to use Data Movement gateway, select None.<br><br>For information on the benefits of Data Movement gateway and use cases that require it, see [Qlik Data Gateway - Data Movement](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Start Date | Enter the date, in the format `MM/DD/YYYY`, from which the data must be replicated from your source to your target. |
| Subdomain | You can find your subdomain in the URL of your Freshdesk account. If the URL is your-org-name.freshdesk.com, the subdomain is your-org-name. |
| API Key | API key. |

## Schema

Information note

Schemas and naming conventions can change from version to version. It is recommended to verify your version before continuing.

Depending on your destination, table and column names may not appear as they are outlined below.

### agents

The `agents` table contains info about the agents in your Freshdesk account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#agents)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#list_all_agents "Opens in new tab: Freshdesk API method") |

agents table foreign keys

| Join agents with | on |
| --- | --- |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#groups) | ```<br>agents.id = groups.agent_ids<br>```<br><br>```<br>agents.group_ids.type = groups.id<br>``` |
| [satisfaction_ratings](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#satisfaction-ratings) | ```<br>agents.id = satisfaction_ratings.agent_id<br>```<br><br>```<br>agents.group_ids.type = satisfaction_ratings.group_id<br>``` |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>agents.id = tickets.responder_id<br>```<br><br>```<br>agents.group_ids.type = tickets.group_id<br>``` |
| [time_entries](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#time-entries) | ```<br>agents.id = time_entries.agent_id<br>``` |
| [roles](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#roles) | ```<br>agents.role_ids.type = roles.id<br>``` |

agents table schema

| **available**<br><br><br>BOOLEAN |
| --- |
| **available\_since**<br><br><br>DATE-TIME |
| **contact**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>active: BOOLEAN</li><li>created_at: DATE-TIME</li><li>email: STRING</li><li>job_title: STRING</li><li>language: STRING</li><li>last_login_at: DATE-TIME</li><li>mobile: STRING</li><li>name: STRING</li><li>phone: STRING</li><li>time_zone: STRING</li><li>updated_at: DATE-TIME</li></ul> |
| **created\_at**<br><br><br>DATE-TIME |
| **group\_ids**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **id**<br><br><br>INTEGER |
| **occasional**<br><br><br>BOOLEAN |
| **role\_ids**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **signature**<br><br><br>STRING |
| **ticket\_scope**<br><br><br>INTEGER |
| **updated\_at**<br><br><br>DATE-TIME |

### companies

The `companies` table contains info about the companies your various customers and contacts belong to.

#### Custom Fields

If applicable, Stitch will replicate custom fields related to `companies` in Freshdesk.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#companies)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#list_all_companies "Opens in new tab: Freshdesk API method") |

companies table foreign keys

| Join companies with | on |
| --- | --- |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>companies.id = tickets.company_id<br>``` |

companies table schema

| **created\_at**<br><br><br>DATE-TIME |
| --- |
| **custom\_fields**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>name: STRING</li><li>value: STRING</li></ul> |
| **description**<br><br><br>STRING |
| **domains**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **id**<br><br><br>INTEGER |
| **name**<br><br><br>STRING |
| **note**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |

### conversations

The `conversations` table contains info about replies and public/private notes added to the tickets in your Freshdesk account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#conversations)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#list_all_ticket_notes "Opens in new tab: Freshdesk API method") |

conversations table foreign keys

| Join conversations with | on |
| --- | --- |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>conversations.ticket_id = tickets.id<br>``` |
| [satisfaction_ratings](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#satisfaction-ratings) | ```<br>conversations.ticket_id = satisfaction_ratings.ticket_id<br>``` |

conversations table schema

| **bcc\_emails**<br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **body\_text**<br><br><br>STRING |
| **cc\_emails**<br><br>ARRAY<br><br>This is a nested data structure. |
| **created\_at**<br><br>DATE-TIME |
| **from\_email**<br><br><br>STRING |
| **id**<br><br><br>INTEGER |
| **incoming**<br><br><br>BOOLEAN |
| **private**<br><br><br>BOOLEAN |
| **source**<br><br><br>INTEGER |
| **support\_email**<br><br><br>STRING |
| **ticket\_id**<br><br><br>INTEGER |
| **to\_emails**<br><br>ARRAY<br><br>This is a nested data structure. |
| **updated\_at**<br><br>DATE-TIME |
| **user\_id**<br><br><br>INTEGER |

### groups

The `groups` table contains info about the groups your agents belong to.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#groups)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#list_all_groups "Opens in new tab: Freshdesk API method") |

groups table foreign keys

| Join groups with | on |
| --- | --- |
| [agents](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#agents) | ```<br>groups.agent_ids = agents.id<br>```<br><br>```<br>groups.id = agents.group_ids.type<br>``` |
| [satisfaction_ratings](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#satisfaction-ratings) | ```<br>groups.agent_ids = satisfaction_ratings.agent_id<br>```<br><br>```<br>groups.id = satisfaction_ratings.group_id<br>``` |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>groups.agent_ids = tickets.responder_id<br>```<br><br>```<br>groups.id = tickets.group_id<br>``` |
| [time_entries](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#time-entries) | ```<br>groups.agent_ids = time_entries.agent_id<br>``` |

groups table schema

| **agent\_ids**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **auto\_ticket\_assign**<br><br><br>INTEGER, BOOLEAN |
| **business\_hour\_id**<br><br><br>INTEGER |
| **created\_at**<br><br><br>DATE-TIME |
| **description**<br><br><br>STRING |
| **escalate\_to**<br><br><br>INTEGER |
| **id**<br><br><br>INTEGER |
| **name**<br><br><br>STRING |
| **unassigned\_for**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |

### roles

The `roles` table contains info about the various roles that can be assigned to team members in your Freshdesk account.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#roles)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#list_all_roles "Opens in new tab: Freshdesk API method") |

roles table foreign keys

| Join roles with | on |
| --- | --- |
| [agents](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#agents) | ```<br>roles.id = agents.role_ids.type<br>``` |

roles table schema

| **created\_at**<br><br><br>DATE-TIME |
| --- |
| **default**<br><br><br>BOOLEAN |
| **description**<br><br><br>STRING |
| **id**<br><br><br>INTEGER |
| **name**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |

### satisfaction\_ratings

The `satisfaction_ratings` table contains info about customer satisfaction survey responses, or satisfaction ratings.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk documentation](https://developers.freshdesk.com/api/#satisfaction-ratings)<br><br>[Freshdesk API method](https://developers.freshdesk.com/api/#view_all_satisfaction_ratings "Opens in new tab: Freshdesk API method") |

satisfaction\_ratings table foreign keys

| Join satisfaction\_ratings with | on |
| --- | --- |
| [agents](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#agents) | ```<br>satisfaction_ratings.agent_id = agents.id<br>```<br><br>```<br>satisfaction_ratings.group_id = agents.group_ids.type<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#groups) | ```<br>satisfaction_ratings.agent_id = groups.agent_ids<br>```<br><br>```<br>satisfaction_ratings.group_id = groups.id<br>``` |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>satisfaction_ratings.agent_id = tickets.responder_id<br>```<br><br>```<br>satisfaction_ratings.group_id = tickets.group_id<br>```<br><br>```<br>satisfaction_ratings.ticket_id = tickets.id<br>``` |
| [time_entries](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#time-entries) | ```<br>satisfaction_ratings.agent_id = time_entries.agent_id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#conversations) | ```<br>satisfaction_ratings.ticket_id = conversations.ticket_id<br>``` |

satisfaction\_ratings table schema

| **agent\_id**<br><br><br>INTEGER |
| --- |
| **created\_at**<br><br><br>DATE-TIME |
| **feedback**<br><br><br>STRING |
| **group\_id**<br><br><br>INTEGER |
| **id**<br><br><br>INTEGER |
| **ratings**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>question: STRING</li><li>value: INTEGER</li></ul> |
| **survey\_id**<br><br><br>INTEGER |
| **ticket\_id**<br><br><br>INTEGER |
| **updated\_at**<br><br><br>DATE-TIME |
| **user\_id**<br><br><br>INTEGER |

### tickets

The `tickets` table contains info about the tickets in your Freshdesk account.

#### Custom Fields

If applicable, Stitch will replicate custom fields related to `tickets` in Freshdesk.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk API method](https://developers.freshdesk.com/api/#tickets "Opens in new tab: Freshdesk API method") |

tickets table foreign keys

| Join tickets with | on |
| --- | --- |
| [agents](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#agents) | ```<br>tickets.responder_id = agents.id<br>```<br><br>```<br>tickets.group_id = agents.group_ids.type<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#groups) | ```<br>tickets.responder_id = groups.agent_ids<br>```<br><br>```<br>tickets.group_id = groups.id<br>``` |
| [satisfaction_ratings](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#satisfaction-ratings) | ```<br>tickets.responder_id = satisfaction_ratings.agent_id<br>```<br><br>```<br>tickets.group_id = satisfaction_ratings.group_id<br>```<br><br>```<br>tickets.id = satisfaction_ratings.ticket_id<br>``` |
| [time_entries](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#time-entries) | ```<br>tickets.responder_id = time_entries.agent_id<br>``` |
| [companies](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#companies) | ```<br>tickets.company_id = companies.id<br>``` |
| [conversations](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#conversations) | ```<br>tickets.id = conversations.ticket_id<br>``` |

tickets table schema

| **cc\_emails**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| --- |
| **company**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>id: INTEGER</li><li>name: STRING</li></ul> |
| **company\_id**<br><br><br>INTEGER |
| **created\_at**<br><br><br>DATE-TIME |
| **custom\_fields**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li>name: STRING</li><li>value: STRING</li></ul> |
| **deleted**<br><br><br>BOOLEAN |
| **description**<br><br><br>STRING |
| **description\_text**<br><br><br>STRING |
| **due\_by**<br><br><br>DATE-TIME |
| **email**<br><br><br>STRING |
| **email\_config\_id**<br><br><br>INTEGER |
| **facebook\_id**<br><br><br>STRING |
| **fr\_due\_by**<br><br><br>DATE-TIME |
| **fr\_escalated**<br><br><br>BOOLEAN |
| **fwd\_emails**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **group\_id**<br><br><br>INTEGER |
| **id**<br><br><br>INTEGER |
| **is\_escalated**<br><br><br>BOOLEAN |
| **name**<br><br><br>STRING |
| **phone**<br><br><br>STRING |
| **priority**<br><br><br>NUMBER |
| **product\_id**<br><br><br>INTEGER |
| **reply\_cc\_emails**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **requester**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>email: STRING</li><li>id: INTEGER</li><li>mobile: STRING</li><li>name: STRING</li><li>phone: STRING</li></ul> |
| **requester\_id**<br><br><br>INTEGER |
| **responder\_id**<br><br><br>INTEGER |
| **source**<br><br><br>NUMBER |
| **spam**<br><br><br>BOOLEAN |
| **stats**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li>closed_at: DATE-TIME</li><li>first_responded_at: DATE-TIME</li><li>resolved_at: DATE-TIME</li></ul> |
| **status**<br><br><br>NUMBER |
| **subject**<br><br><br>STRING |
| **tags**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **to\_emails**<br><br><br>ARRAY<br><br>This is a nested data structure. |
| **twitter\_id**<br><br><br>STRING |
| **type**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |

### time\_entries

The `time_entries` table contains info about the time entries entered by agents working on tickets.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Freshdesk API method](https://developers.freshdesk.com/api/#time-entries "Opens in new tab: Freshdesk API method") |

time\_entries table foreign keys

| Join time\_entries with | on |
| --- | --- |
| [agents](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#agents) | ```<br>time_entries.agent_id = agents.id<br>``` |
| [groups](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#groups) | ```<br>time_entries.agent_id = groups.agent_ids<br>``` |
| [satisfaction_ratings](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#satisfaction-ratings) | ```<br>time_entries.agent_id = satisfaction_ratings.agent_id<br>``` |
| [tickets](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Freshdesk.htm#tickets) | ```<br>time_entries.agent_id = tickets.responder_id<br>``` |

time\_entries table schema

| **agent\_id**<br><br><br>INTEGER |
| --- |
| **billable**<br><br><br>BOOLEAN |
| **created\_at**<br><br><br>DATE-TIME |
| **executed\_at**<br><br><br>DATE-TIME |
| **id**<br><br><br>INTEGER |
| **note**<br><br><br>STRING |
| **start\_time**<br><br><br>DATE-TIME |
| **ticket\_id**<br><br><br>INTEGER |
| **time\_spent**<br><br><br>STRING |
| **timer\_running**<br><br><br>BOOLEAN |
| **updated\_at**<br><br><br>DATE-TIME |