Integrations / Freshdesk
Freshdesk
Freshdesk helpdesk: list, search, create and update tickets, reply or add notes, read conversations, manage contacts.
10 actions
API key
5 read5 write
Calls freshdesk.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "freshdesk" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
This toolkit uses a single credential and requests no scopes.
Actions
Add note to ticketwritefreshdesk.add_noteAdd a note to a ticket. Private notes (the default) are visible to agents only; set private to false for a public note.
| Input | Type | Description | |
|---|---|---|---|
ticket_id | integer | Required | Ticket ID |
body | string | Required | Note text |
private | boolean | Optional | True for an agent-only note (default true) |
await setu.execute({
userId: "user_1",
action: "freshdesk.add_note",
input: {
"ticket_id": 1,
"body": "<body>"
},
});Create contactwritefreshdesk.create_contactCreate a contact. A name and at least one of email, phone or mobile is required.
| Input | Type | Description | |
|---|---|---|---|
name | string | Required | Contact name |
email | string | Optional | Email address |
phone | string | Optional | Phone number |
job_title | string | Optional | Job title |
await setu.execute({
userId: "user_1",
action: "freshdesk.create_contact",
input: {
"name": "<name>"
},
});Create ticketwritefreshdesk.create_ticketCreate a ticket. Needs a requester email and, in practice, a subject and description. Status and priority are numeric codes.
| Input | Type | Description | |
|---|---|---|---|
subject | string | Required | Ticket subject |
description | string | Required | Ticket body (HTML or plain text) |
email | string | Required | Requester email address |
priority | integer | Optional | Priority: 1 low, 2 medium, 3 high, 4 urgent |
status | integer | Optional | Status: 2 open, 3 pending, 4 resolved, 5 closed |
tags | array of string | Optional | Tags to add |
await setu.execute({
userId: "user_1",
action: "freshdesk.create_ticket",
input: {
"email": "<email>",
"subject": "<subject>",
"description": "<description>"
},
});Get ticketreadfreshdesk.get_ticketGet one ticket by ID. Set include to 'requester', 'conversations', 'company' or 'stats' to embed related data (each costs extra API credits).
| Input | Type | Description | |
|---|---|---|---|
ticket_id | integer | Required | Ticket ID |
include | string | Optional | Related data to embed: conversations, requester, company or stats |
await setu.execute({
userId: "user_1",
action: "freshdesk.get_ticket",
input: {
"ticket_id": 1
},
});List contactsreadfreshdesk.list_contactsList contacts (customers), optionally filtered by exact email, phone or company.
| Input | Type | Description | |
|---|---|---|---|
email | string | Optional | Exact email to match |
phone | string | Optional | Exact phone number to match |
company_id | integer | Optional | Only contacts of this company |
per_page | integer | Optional | Contacts per page (max 100) |
await setu.execute({
userId: "user_1",
action: "freshdesk.list_contacts",
input: {},
});List ticket conversationsreadfreshdesk.list_conversationsList the replies and notes on a ticket, oldest first.
| Input | Type | Description | |
|---|---|---|---|
ticket_id | integer | Required | Ticket ID |
await setu.execute({
userId: "user_1",
action: "freshdesk.list_conversations",
input: {
"ticket_id": 1
},
});List ticketsreadfreshdesk.list_ticketsList tickets (only the last 30 days unless updated_since is given), with optional filters for requester email and sort order.
| Input | Type | Description | |
|---|---|---|---|
per_page | integer | Optional | Tickets per page (max 100) |
page | integer | Optional | Page number, starting at 1 |
updated_since | string | Optional | Only tickets updated after this date, e.g. 2015-08-17 |
email | string | Optional | Only tickets from this requester email |
order_by | string | Optional | Sort field |
order_type | string | Optional | Sort direction |
await setu.execute({
userId: "user_1",
action: "freshdesk.list_tickets",
input: {},
});Reply to ticketwritefreshdesk.reply_to_ticketSend a public reply on a ticket; the requester receives it by email.
| Input | Type | Description | |
|---|---|---|---|
ticket_id | integer | Required | Ticket ID |
body | string | Required | Reply text (HTML or plain text) |
await setu.execute({
userId: "user_1",
action: "freshdesk.reply_to_ticket",
input: {
"ticket_id": 1,
"body": "<body>"
},
});Search ticketsreadfreshdesk.search_ticketsSearch tickets with Freshdesk's query language, e.g. 'status:2 AND priority:3' (without the surrounding quotes). Returns up to 30 results per page.
| Input | Type | Description | |
|---|---|---|---|
query | string | Required | Filter expression, e.g. status:2 AND priority:3 |
page | integer | Optional | Page number, starting at 1 |
await setu.execute({
userId: "user_1",
action: "freshdesk.search_tickets",
input: {
"query": "<query>"
},
});Update ticketwritefreshdesk.update_ticketChange a ticket's status, priority, subject or assigned agent. Use reply_to_ticket or add_note to add conversation entries.
| Input | Type | Description | |
|---|---|---|---|
ticket_id | integer | Required | Ticket ID |
status | integer | Optional | Status: 2 open, 3 pending, 4 resolved, 5 closed |
priority | integer | Optional | Priority: 1 low, 2 medium, 3 high, 4 urgent |
subject | string | Optional | New subject |
responder_id | integer | Optional | Agent ID to assign the ticket to |
await setu.execute({
userId: "user_1",
action: "freshdesk.update_ticket",
input: {
"ticket_id": 1
},
});