CIIFragments Studio is CII-accredited: recover up to 20% of your software development spendLearn more

API integration for Freshdesk

We build your Freshdesk connector

We link your product to the Freshdesk v2 API to create tickets, link contacts and bring status back onto your customer record.

  • Senior product team
  • support connectors in production
  • from scoping to monitoring
In short

What does the Freshdesk integration do and what changes once support is connected?

Freshdesk is a customer support tool that centralises requests received by email, chat, phone and form. Integrating it into your application means a ticket is automatically created from your product when a user reports a problem, the client account data is pushed to the ticket without the agent having to look it up, and the request status is surfaced back in your interface. Support stops living in a parallel inbox and becomes a business object visible in your product, linked to the client's history.

Use cases

What our clients plug into Freshdesk

01

Help button in the SaaS

The ticket leaves prefilled with account id, plan and latest logs. The agent no longer quizzes the customer to find the contract.

02

Ticket status on the customer record

An open P1 blocks a product action, or shows in the back office. The account and the helpdesk talk about the same file.

03

Companies from the CRM

Company contacts are provisioned, then tickets routed by company_id. No more duplicate records between the CRM and Freshdesk.

04

CSAT and time entries to BI

Export scores and time spent, without scraping the UI. An internal dashboard that does not force anyone to open Freshdesk.

For you

What this changes in your support

Engineering in service of a measurable outcome: a contextualised ticket, one contact, support that does not saturate.

No more incident copy-paste

The product event opens the ticket. Support no longer learns about the incident through a side channel, and the agent sees the plan on the first line.

One contact, two tools

We match on your id or email before creating. The Freshdesk directory stops filling with integration duplicates.

Call limits are scoped

Volume is shared on the account, including failed calls. We size the connector on your real plan.

Access does not die with an agent

Technical account, minimal rights, rotation on departure. An access denial can also mean a missing plan feature: we say so up front.

Method

How we ship your Freshdesk connector

01

Scoping

Which flows, which agent role, which custom fields, automations or periodic reconciliation. We list edge cases before writing a line of code.

02

Development

Client that reads X-RateLimit-Remaining and Retry-After, single queue per account, create idempotency, pagination via the link header.

03

Testing

Ticket create, merge, restore, contact already existing. We replay a 429 and a 403 « feature missing », not only the happy 201.

04

Monitoring

Alert on repeated 429, low Remaining, failed automation. Periodic reconciliation: the webhook channel is not a Zendesk event bus.

What the API allows

What the Freshdesk API allows

Tickets and conversations
CRUD, bulk, merge, restore, reply, note, time entries, satisfaction. Statuses 2/3/4/5, priorities 1 to 4, attachments 20 MB.
Contacts and agents
Contact CRUD, merge, soft delete and hard_delete, make_agent. API rights follow the agent role: what the UI refuses, the API refuses.
Include / embedding
Some fields left the default GET ticket. ?include=requester consumes one extra API credit per resource. description is no longer in the list without include.
Automations
/api/v2/automations/{type}/rules: type 1 create, 4 updates, 3 hourly. The official outbound channel in the v2 reference, not a signed event bus.
Glossary

Freshdesk API vocabulary

Numeric statuses
Open 2, Pending 3, Resolved 4, Closed 5. Priorities 1 to 4. Sources Email 1, Portal 2, Phone 3, Chat 7. A naive text mapping breaks on the first PUT.
unique_external_id
The contact's business identifier. This is the idempotency key between your app and Freshdesk, safer than email alone.
include
Embedding parameter. Each embedded resource consumes an extra API credit. description left the ticket list without include (changelog 2018-11-30).
X-RateLimit-Total
The account's real cap, plus Remaining, Used-CurrentRequest, Retry-After on 429. This is the source of truth, not a Growth 100 vs 200 table.
Agent key
Basic key:X. Rights follow the role: an agent who cannot reply in the UI cannot reply via the API. Rotate on every departure.
Automation
The outbound channel in the v2 reference (types 1, 4, 3). Not an equivalent of Zendesk Connect. HMAC signature and retries: unconfirmed in the v2 ref we reviewed.
Good to know

The real constraints of the Freshdesk API

01

The quota is read on the account

Per account, shared, invalid requests included. Trial 50 / min. Pro 400, Enterprise 700. Growth: two official grids diverge. We read X-RateLimit-Total, we do not copy a blog.

02

include bills one extra call

Embedding requester (and others) consumes one credit per resource. A sync that includes everywhere is slow for nothing. description is no longer in the default list.

03

No webhooks bus in the v2 ref

Callbacks go through automations. We do not promise a signed webhooks API: HMAC, retries and a 24 h window are not confirmed in the v2 reference.

04

409 is not a fatal error

Contact email already exists: look up first, treat duplicate_value as a hit. Creating a ticket by email creates the contact: a naive integration pollutes the directory.

Freshdesk or Zendesk

Freshdesk API or Zendesk API?

Two helpdesks, two integration models. The right choice depends on your stack and how you sync the stock.

CriterionFreshdeskThis pageZendeskEnterprise support
TicketsNumeric statuses 2/3/4/5new/open/pending/hold/solved/closed
Stock syncPaginated list, include billedIncremental Export (cursor)
WebhooksAutomations, no dedicated v2 busWebhooks API + HMAC SHA-256
QuotaRead from X-RateLimit-Total200 to 2,500 / min by Suite plan
IdentityContacts + Agents, 409 duplicateUsers, create_or_update 5 / min / user
Anti-collisionBusiness idempotencysafe_update + updated_stamp
The right caseFreshworks helpdesk already in placeEnterprise support, warehouse, multi-agent

The three (Freshdesk, Zendesk, Intercom) are not « a ticket CRUD + a user ». Freshdesk bills include. Zendesk requires incremental export. Intercom splits conversation and ticket. This is a scoping trade-off.

Our expertise

What we measure on a Freshdesk integration

15 d
first ticket flow in production
1
single queue per Freshdesk account
headers
quota read, not copied from a table
4
senior developers on the project
Compare

The other support APIs

If Freshdesk is not the right foundation, these options are discussed at scoping.

We combine Freshdesk with

The stack around Freshdesk on our projects.

  • HubSpot
  • Slack
  • n8n
  • PostgreSQL
  • Node.js
FAQ

Freshdesk integration: your questions

Three steps. First an agent key in Basic, with the narrowest role that allows the targeted flows. Then mapping: unique_external_id for the contact, custom fields for the ticket's internal id, lookup before create to survive 409. Finally an HTTP client that paginates via the link header, budgets include, reads X-RateLimit-Remaining and Retry-After, and pushes callbacks through automations rather than inventing an event bus. The hard part is not POST ticket, it is the shared quota and a clean directory.

It depends on the plan, it is per account, and invalid requests count. Trial: 50 calls / minute. Pro 400, Enterprise 700, Free 0. On Growth, the developer portal and the support article diverge (100 vs 200 / min, and different list sub-limits). We do not publish either figure as truth: we read X-RateLimit-Total, Remaining and Retry-After on your account, and size the queue accordingly. Ticket list sub-limits can be lower than the global cap.

Not in the v2 API reference reviewed in August 2026. Outbound callbacks go through automations (/api/v2/automations/{type}/rules). We do not promise an HMAC signature or a 24 h retry window: those details circulate outside developer docs and were not confirmed. In practice: automations for real time, periodic reconciliation (updated_since) as a net, because this is not a Zendesk Connect event bus.

A first useful flow, typically creating a ticket from the SaaS and bringing status back onto the record, ships in two to three weeks. A chain with contacts, companies, CSAT, automations and history backfill is closer to six to eight weeks: list sub-limits and directory cleanup weigh as much as the code. include is budgeted from day one, not added « to get the description back ». We scope the perimeter up front and give a firm estimate before starting.

Freshdesk if the helpdesk is already there and you want ticket + contact CRUD, accepting automations and quota headers. Zendesk if you need incremental export, safe_update and a signed webhooks bus. Intercom if the product lives in Messenger, with Inbox tickets beside conversations, EU region. Treating the three as the same connector is the scoping trap: billed include, cursor export and SHA-1 are not interchangeable details.

A Freshdesk integration project?

Let's talk. 30 minutes to scope your tickets, read the account's real quota, and to tell you frankly what is feasible.

Discuss my Freshdesk project
Discuss my Freshdesk project