Search all guides

Reference · Tools

Freshdesk integration

Manage support tickets and customer contacts within the Freshdesk helpdesk system.

Action Communication v1

The Freshdesk node lets you create, retrieve, update, and delete both support tickets and contacts directly from a workflow. You can build things like an automated intake pipeline that converts form submissions into tickets with the right priority and agent assignment. Contacts support custom fields and company filtering for CRM-style operations alongside your helpdesk.

Works as
Action
Tool name
freshdesk
Operations
10 — Create , Delete , Get , Get Many , Update and 5 more
Parameters
27
Outputs
Output, Error
Credentials
Freshdesk API
Official docs
Freshdesk docs developers.freshdesk.com

What you can build with Freshdesk

  • Create a support ticket in Freshdesk.
  • List all open tickets from Freshdesk.
  • Update ticket priority to urgent.
  • Create a new contact in Freshdesk.
  • Get all contacts filtered by company.

Overview

Freshdesk is a cloud-based helpdesk platform. This tool provides full CRUD operations for tickets and contacts. Tickets can be created with flexible requester identification (email, phone, Facebook ID, Twitter ID, requester ID, or external ID), configurable status, priority, and source. Contacts support custom fields and filtering. Freshdesk API uses Basic auth with the API key as username.

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Freshdesk API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Contactcontact
Ticketticket

Operations

OperationValueDescription
CreatecreateCreate a new ticket (Ticket resource)
DeletedeleteDelete a ticket (Ticket resource)
GetgetGet a ticket (Ticket resource)
Get ManygetAllGet many tickets (Ticket resource)
UpdateupdateUpdate a ticket (Ticket resource)
CreatecreateCreate a new contact (Contact resource)
DeletedeleteDelete a contact (Contact resource)
GetgetGet a contact (Contact resource)
Get ManygetAllGet many contacts (Contact resource)
UpdateupdateUpdate a contact (Contact resource)

Parameters

Ticket: Create

ParameterTypeRequiredDefaultDescription
Requester IdentificationoptionsYesrequesterIdHow to identify the requester for the ticket.
Options: email, facebookId, phone, requesterId (the Freshdesk user ID), twitterId, uniqueExternalId
Requester ValuestringYes—Value of the requester identification selected above. Supports expressions like {{ $json.email }}.
StatusoptionsYespendingStatus of the ticket.
Options: closed, open, pending, resolved
PriorityoptionsYeslowPriority of the ticket.
Options: low, medium, high, urgent
SourceoptionsYesportalThe channel through which the ticket was created.
Options: chat, email, feedbackWidget, mobileHelp (Mobihelp), OutboundEmail, phone, portal
OptionscollectionNo{}Optional ticket fields. Add only the ones you need.
— Agent ID (agent)stringNo—ID of the agent to whom the ticket has been assigned. Find agent IDs via Freshdesk Admin > Agents.
— CC Emails (ccEmails)stringNo—Comma-separated email addresses to CC on the ticket.
— Company ID (company)stringNo—Company ID of the requester. Find company IDs via Freshdesk Admin > Companies.
— DescriptionstringNo—HTML content of the ticket.
— Due By (dueBy)dateTimeNo—Timestamp that denotes when the ticket is due to be resolved.
— Email Config ID (emailConfigId)numberNo—ID of email config which is used for this ticket.
— FR Due By (frDueBy)dateTimeNo—Timestamp that denotes when the first response is due.
— Group ID (group)stringNo—ID of the group to which the ticket has been assigned. Find group IDs via Freshdesk Admin > Groups.
— NamestringNo—Name of the requester.
— Product ID (product)stringNo—ID of the product to which the ticket is associated. Find product IDs via Freshdesk Admin > Products.
— SubjectstringNo—Subject of the ticket.
— TagsstringNo—Comma-separated tags associated with the ticket. Tags containing commas are not supported.
— TypeoptionsNoQuestionHelps categorize the ticket according to different kinds of issues.
Options: Feature Request, Incident, Problem, Question, Refund

Ticket: Get

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes—ID of the ticket to retrieve. Supports expressions.

Ticket: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
OptionscollectionNo{}Filtering, sorting and expansion settings. Add only the ones you need.
— Company ID (companyId)stringNo—Filter tickets by company ID.
— IncludemultiOptionsNo[]Additional data to include in the response.
Options: company, description, requester, stats
— OrderoptionsNodescSort order ascending or descending.
Options: asc, desc
— Order By (orderBy)optionsNo—Sort collection by object attribute.
Options: createdAt, dueBy, updatedAt
— Requester Email (requesterEmail)stringNo—Filter tickets by requester email address.
— Requester ID (requesterId)stringNo—Filter tickets by requester ID.
— Updated Since (updatedSince)dateTimeNo—Filter tickets updated since this date.

Ticket: Update

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes—ID of the ticket to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the ticket. Add only the ones you need.
— Agent ID (agent)stringNo—ID of the agent to whom the ticket has been assigned.
— CC Emails (ccEmails)stringNo—Comma-separated email addresses to CC.
— Company ID (company)stringNo—Company ID of the requester.
— Due By (dueBy)dateTimeNo—Timestamp that denotes when the ticket is due to be resolved.
— Email Config ID (emailConfigId)numberNo—ID of email config which is used for this ticket.
— FR Due By (frDueBy)dateTimeNo—Timestamp that denotes when the first response is due.
— Group ID (group)stringNo—ID of the group to which the ticket has been assigned.
— NamestringNo—Name of the requester.
— PriorityoptionsNolowPriority of the ticket.
Options: low, medium, high, urgent
— Product ID (product)stringNo—ID of the product to which the ticket is associated.
— Requester Identification (requester)optionsNorequesterIdHow to identify the requester for the ticket.
Options: email, facebookId, phone, requesterId, twitterId, uniqueExternalId
— Requester Value (requesterIdentificationValue)stringNo—Value of the requester identification selected.
— SourceoptionsNoportalThe channel through which the ticket was created.
Options: chat, email, feedbackWidget, mobileHelp (Mobihelp), OutboundEmail, phone, portal
— StatusoptionsNopendingStatus of the ticket.
Options: open, pending, resolved, closed
— TagsstringNo—Comma-separated tags associated with the ticket. Tags containing commas are not supported.
— TypeoptionsNoQuestionHelps categorize the ticket.
Options: Feature Request, Incident, Problem, Question, Refund

Ticket: Delete

ParameterTypeRequiredDefaultDescription
Ticket IDstringYes—ID of the ticket to delete. Supports expressions.

Contact: Create

ParameterTypeRequiredDefaultDescription
NamestringYes—Name of the contact. Supports expressions.
EmailstringNo—Primary email address of the contact. Supports expressions.
Additional FieldscollectionNo{}Optional contact attributes. Add only the ones you need.
— AddressstringNo—Address of the contact.
— Company ID (company_id)numberNo—ID of the primary company to which this contact belongs.
— Custom Fields (customFields)fixedCollectionNo[]Key value pairs containing custom field names and values. Dates must be in YYYY-MM-DD format.
— — NamestringNo—Custom field name.
— — ValuestringNo—Custom field value.
— DescriptionstringNo—A short description of the contact.
— Job Title (job_title)stringNo—Job title of the contact.
— LanguagestringNo—Language of the contact (default “en”). Requires Multiple Language feature.
— MobilestringNo—Mobile number of the contact.
— Other Companies (other_companies)stringNo—Comma-separated additional company IDs. Requires Multiple Companies feature (Estate plan and above).
— Other Emails (other_emails)stringNo—Comma-separated additional email addresses.
— PhonestringNo—Telephone number of the contact.
— TagsstringNo—Comma-separated tags associated with the contact. Tags containing commas are not supported.
— Time Zone (time_zone)stringNo—Time zone of the contact. Requires Multiple Time Zone feature.
— Twitter ID (twitter_id)stringNo—Twitter handle of the contact.
— Unique External ID (unique_external_id)stringNo—External ID of the contact.
— View All Tickets (view_all_tickets)booleanNofalseWhether the contact can see all tickets of their company.

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact IDstringYes—ID of the contact to retrieve. Supports expressions.

Contact: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo5Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the contact list. Add only the filters you need.
— Company ID (company_id)numberNo—Filter by company ID.
— EmailstringNo—Filter by email address.
— MobilestringNo—Filter by mobile number.
— PhonestringNo—Filter by phone number.
— StateoptionsNo—Filter by contact state.
Options: blocked, deleted, unverified, verified
— Updated Since (updated_since)dateTimeNo—Filter contacts updated since this date.

Contact: Update

ParameterTypeRequiredDefaultDescription
Contact IDstringYes—ID of the contact to update. Supports expressions.
Additional FieldscollectionNo{}Fields to change on the contact. Add only the ones you need.
— AddressstringNo—Address of the contact.
— Company ID (company_id)numberNo—ID of the primary company to which this contact belongs.
— Custom Fields (customFields)fixedCollectionNo[]Key value pairs containing custom field names and values.
— — NamestringNo—Custom field name.
— — ValuestringNo—Custom field value.
— DescriptionstringNo—A short description of the contact.
— EmailstringNo—Primary email address of the contact.
— Job Title (job_title)stringNo—Job title of the contact.
— LanguagestringNo—Language of the contact.
— MobilestringNo—Mobile number of the contact.
— NamestringNo—Name of the contact.
— Other Companies (other_companies)stringNo—Comma-separated additional company IDs.
— Other Emails (other_emails)stringNo—Comma-separated additional email addresses.
— PhonestringNo—Telephone number of the contact.
— TagsstringNo—Comma-separated tags associated with the contact. Tags containing commas are not supported.
— Time Zone (time_zone)stringNo—Time zone of the contact.
— Twitter ID (twitter_id)stringNo—Twitter handle of the contact.
— Unique External ID (unique_external_id)stringNo—External ID of the contact.
— View All Tickets (view_all_tickets)booleanNofalseWhether the contact can see all tickets of their company.

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact IDstringYes—ID of the contact to delete. Supports expressions.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Freshdesk record is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

OperationOutput items
ticket / create, get, updateOne item — the ticket record, including the ID Freshdesk assigned.
ticket / getAllFans out — one output item per ticket. Return All pages through the whole result set; otherwise up to Limit tickets.
ticket / deleteOne item carrying success: true — Freshdesk returns no body for a delete.
contact / create, get, updateOne item — the contact record.
contact / getAllFans out — one output item per contact, with the same Return All / Limit behavior.
contact / deleteOne item carrying success: true.

Because list operations fan out, downstream nodes see one item per ticket or contact and need no Split Out node.

Example Configuration

Create a ticket for a requester identified by email:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "ticket",
    "operation": "create",
    "requester": "email",
    "requesterIdentificationValue": "{{ $json.email }}",
    "status": "open",
    "priority": "high",
    "source": "email",
    "options": {
      "subject": "Login Issues",
      "description": "User cannot log into the system",
      "tags": "login,urgent",
      "type": "Incident"
    }
  }
}

Resolve a ticket and reassign it:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "ticket",
    "operation": "update",
    "ticketId": "12345",
    "updateFields": {
      "status": "resolved",
      "priority": "medium",
      "agent": "80012345678",
      "tags": "resolved,tested"
    }
  }
}

List tickets for one requester, newest first:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "ticket",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "options": {
      "requesterEmail": "customer@example.com",
      "order": "desc",
      "orderBy": "createdAt",
      "updatedSince": "2024-01-01T00:00:00Z"
    }
  }
}

Create a contact with custom fields:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "contact",
    "operation": "create",
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
    "additionalFields": {
      "job_title": "Software Engineer",
      "mobile": "+1-555-0123",
      "customFields": {
        "customField": [
          { "name": "Department", "value": "Engineering" }
        ]
      }
    }
  }
}

Update a contact:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "contact",
    "operation": "update",
    "contactId": "67890",
    "additionalFields": {
      "job_title": "Senior Software Engineer",
      "mobile": "+1-555-0124",
      "description": "Lead developer for mobile applications"
    }
  }
}

List verified contacts for one company:

{
  "type": "freshdesk",
  "parameters": {
    "resource": "contact",
    "operation": "getAll",
    "filters": {
      "company_id": 456,
      "state": "verified",
      "updated_since": "2024-01-01T00:00:00Z"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages support tickets and contacts within the Freshdesk helpdesk platform. It is ideal for creating, retrieving, updating, or deleting tickets and contacts when direct interaction with Freshdesk is required. It produces updated Freshdesk records, new tickets, new contacts, or lists of existing tickets and contacts.

Common Patterns

Customer support workflow

  1. Create ticket from email: use requester: "email" with the customer’s email
  2. Assign to agent: use the options.agent field
  3. Set priority and status: based on issue severity
  4. Update with resolution: change status to resolved when fixed

Contact management

  1. Import contacts: use the create operation with additionalFields for bulk data
  2. Update customer info: use the update operation with the relevant fields
  3. Filter by company: use filters.company_id to get a company’s contacts
  4. Custom field tracking: use customFields for organization-specific data

Data retrieval

  1. Use pagination: set returnAll: false and an appropriate limit
  2. Filter results: use date ranges and specific criteria to reduce load
  3. Include related data: use options.include for comprehensive ticket data
  4. Sort appropriately: use order and orderBy for consistent results

Notes

  • Agent, group, product and company are IDs, not names or emails. Look them up under Freshdesk Admin and pass the numeric ID.
  • The comma-separated fields do not accept commas inside a value. Tags, Other Emails and Other Companies are split on commas before being sent as lists.
  • Custom Fields become a name-keyed object. Each Name/Value row you add is sent as one entry of the contact’s custom fields, so the Name must match the field’s key in Freshdesk exactly.

Frequently asked questions

How do I authenticate with Freshdesk?

Freshdesk uses HTTP Basic Auth with your API key as the username and any string as the password. In BusyBot, select or create a Freshdesk API credential and paste your API key — the node handles the rest. You can find your API key in Freshdesk under your profile settings.

When creating a ticket, which requester field should I use?

You have six options: email, phone, Facebook ID, Twitter ID, requester ID, or external ID. If you are building a workflow triggered by an inbound email or web form, 'email' is the most straightforward. If you're syncing from an external system that has its own user IDs, use 'external ID' so you can correlate records later without a lookup.

I want to assign a ticket to a specific agent or group — what value do I pass?

Agent, group, product, and company fields all expect numeric IDs, not names or email addresses. You need to look these up in Freshdesk under Admin before building the workflow. Passing a name string will not work and will likely cause a silent failure or API error.

What happens when I use tags, Other Emails, or Other Companies fields?

These fields are comma-separated strings that the node splits into lists before sending to the Freshdesk API. That means a comma inside a single value — for example, a company name like 'Smith, Jones & Co' — will be treated as two separate items. Keep individual values free of commas or the data will be split incorrectly.

How do custom fields work for contacts?

When you add custom field rows, each row becomes a key-value entry in the contact's custom fields object sent to Freshdesk. The Name you provide must exactly match the field's API key as configured in your Freshdesk account — capitalisation and underscores matter. If the key doesn't match, Freshdesk will ignore or reject that field silently.

Build with Freshdesk

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Freshdesk API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.