
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
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.
What our clients plug into Freshdesk
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.
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.
Companies from the CRM
Company contacts are provisioned, then tickets routed by company_id. No more duplicate records between the CRM and Freshdesk.
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.
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.
How we ship your Freshdesk connector
Scoping
Which flows, which agent role, which custom fields, automations or periodic reconciliation. We list edge cases before writing a line of code.
Development
Client that reads X-RateLimit-Remaining and Retry-After, single queue per account, create idempotency, pagination via the link header.
Testing
Ticket create, merge, restore, contact already existing. We replay a 429 and a 403 « feature missing », not only the happy 201.
Monitoring
Alert on repeated 429, low Remaining, failed automation. Periodic reconciliation: the webhook channel is not a Zendesk event bus.
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.
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.
The real constraints of the Freshdesk API
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.
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.
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.
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 API or Zendesk API?
Two helpdesks, two integration models. The right choice depends on your stack and how you sync the stock.
| Criterion | FreshdeskThis page | ZendeskEnterprise support |
|---|---|---|
| Tickets | Numeric statuses 2/3/4/5 | new/open/pending/hold/solved/closed |
| Stock sync | Paginated list, include billed | Incremental Export (cursor) |
| Webhooks | Automations, no dedicated v2 bus | Webhooks API + HMAC SHA-256 |
| Quota | Read from X-RateLimit-Total | 200 to 2,500 / min by Suite plan |
| Identity | Contacts + Agents, 409 duplicate | Users, create_or_update 5 / min / user |
| Anti-collision | Business idempotency | safe_update + updated_stamp |
| The right case | Freshworks helpdesk already in place | Enterprise 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.
What we measure on a Freshdesk integration
The other support APIs
If Freshdesk is not the right foundation, these options are discussed at scoping.
FreshdeskWe build your Freshdesk connectorThis page
ZendeskTickets vs Requests, Incremental Export, safe_update, HMAC webhooks.
IntercomConversations and tickets, EU region, SHA-1 webhooks via the Hub.We combine Freshdesk with
The stack around Freshdesk on our projects.
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