Reference · Tools

Freshdesk

Manage support tickets and contacts in the Freshdesk helpdesk platform

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.

Node type
Action
Parameters
27
Outputs
Output, Error
Credentials
Freshdesk API

Freshdesk

Manage Freshdesk tickets and contacts

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.

Category: Communication
Tool Name: freshdesk
Version: 1

Appearance: Icon: lucide-Headphones | Color: #25c16f

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 ValuestringYesValue 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)stringNoID of the agent to whom the ticket has been assigned. Find agent IDs via Freshdesk Admin > Agents.
— CC Emails (ccEmails)stringNoComma-separated email addresses to CC on the ticket.
— Company ID (company)stringNoCompany ID of the requester. Find company IDs via Freshdesk Admin > Companies.
— DescriptionstringNoHTML content of the ticket.
— Due By (dueBy)dateTimeNoTimestamp that denotes when the ticket is due to be resolved.
— Email Config ID (emailConfigId)numberNoID of email config which is used for this ticket.
— FR Due By (frDueBy)dateTimeNoTimestamp that denotes when the first response is due.
— Group ID (group)stringNoID of the group to which the ticket has been assigned. Find group IDs via Freshdesk Admin > Groups.
— NamestringNoName of the requester.
— Product ID (product)stringNoID of the product to which the ticket is associated. Find product IDs via Freshdesk Admin > Products.
— SubjectstringNoSubject of the ticket.
— TagsstringNoComma-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 IDstringYesID 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)stringNoFilter 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)optionsNoSort collection by object attribute.
Options: createdAt, dueBy, updatedAt
— Requester Email (requesterEmail)stringNoFilter tickets by requester email address.
— Requester ID (requesterId)stringNoFilter tickets by requester ID.
— Updated Since (updatedSince)dateTimeNoFilter tickets updated since this date.

Ticket: Update

ParameterTypeRequiredDefaultDescription
Ticket IDstringYesID of the ticket to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the ticket. Add only the ones you need.
— Agent ID (agent)stringNoID of the agent to whom the ticket has been assigned.
— CC Emails (ccEmails)stringNoComma-separated email addresses to CC.
— Company ID (company)stringNoCompany ID of the requester.
— Due By (dueBy)dateTimeNoTimestamp that denotes when the ticket is due to be resolved.
— Email Config ID (emailConfigId)numberNoID of email config which is used for this ticket.
— FR Due By (frDueBy)dateTimeNoTimestamp that denotes when the first response is due.
— Group ID (group)stringNoID of the group to which the ticket has been assigned.
— NamestringNoName of the requester.
— PriorityoptionsNolowPriority of the ticket.
Options: low, medium, high, urgent
— Product ID (product)stringNoID 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)stringNoValue 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
— TagsstringNoComma-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 IDstringYesID of the ticket to delete. Supports expressions.

Contact: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the contact. Supports expressions.
EmailstringNoPrimary email address of the contact. Supports expressions.
Additional FieldscollectionNo{}Optional contact attributes. Add only the ones you need.
— AddressstringNoAddress of the contact.
— Company ID (company_id)numberNoID 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.
— — NamestringNoCustom field name.
— — ValuestringNoCustom field value.
— DescriptionstringNoA short description of the contact.
— Job Title (job_title)stringNoJob title of the contact.
— LanguagestringNoLanguage of the contact (default “en”). Requires Multiple Language feature.
— MobilestringNoMobile number of the contact.
— Other Companies (other_companies)stringNoComma-separated additional company IDs. Requires Multiple Companies feature (Estate plan and above).
— Other Emails (other_emails)stringNoComma-separated additional email addresses.
— PhonestringNoTelephone number of the contact.
— TagsstringNoComma-separated tags associated with the contact. Tags containing commas are not supported.
— Time Zone (time_zone)stringNoTime zone of the contact. Requires Multiple Time Zone feature.
— Twitter ID (twitter_id)stringNoTwitter handle of the contact.
— Unique External ID (unique_external_id)stringNoExternal ID of the contact.
— View All Tickets (view_all_tickets)booleanNofalseWhether the contact can see all tickets of their company.

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID 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)numberNoFilter by company ID.
— EmailstringNoFilter by email address.
— MobilestringNoFilter by mobile number.
— PhonestringNoFilter by phone number.
— StateoptionsNoFilter by contact state.
Options: blocked, deleted, unverified, verified
— Updated Since (updated_since)dateTimeNoFilter contacts updated since this date.

Contact: Update

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID of the contact to update. Supports expressions.
Additional FieldscollectionNo{}Fields to change on the contact. Add only the ones you need.
— AddressstringNoAddress of the contact.
— Company ID (company_id)numberNoID of the primary company to which this contact belongs.
— Custom Fields (customFields)fixedCollectionNo[]Key value pairs containing custom field names and values.
— — NamestringNoCustom field name.
— — ValuestringNoCustom field value.
— DescriptionstringNoA short description of the contact.
— EmailstringNoPrimary email address of the contact.
— Job Title (job_title)stringNoJob title of the contact.
— LanguagestringNoLanguage of the contact.
— MobilestringNoMobile number of the contact.
— NamestringNoName of the contact.
— Other Companies (other_companies)stringNoComma-separated additional company IDs.
— Other Emails (other_emails)stringNoComma-separated additional email addresses.
— PhonestringNoTelephone number of the contact.
— TagsstringNoComma-separated tags associated with the contact. Tags containing commas are not supported.
— Time Zone (time_zone)stringNoTime zone of the contact.
— Twitter ID (twitter_id)stringNoTwitter handle of the contact.
— Unique External ID (unique_external_id)stringNoExternal ID of the contact.
— View All Tickets (view_all_tickets)booleanNofalseWhether the contact can see all tickets of their company.

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact IDstringYesID 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.

Usage Examples

  • 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

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

Manage Freshdesk helpdesk tickets and contacts with full CRUD operations, flexible requester identification, and configurable status/priority/source.

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 the Freshdesk node

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 updated . Spotted something wrong? Tell us.