Launched:self-serve migrations intoSuperhuman Docs (Coda)
Try it now
01Agent-first
Runs where you already work
Plug it into Claude, ChatGPT or Cursor. Describe the move in plain English; the agent runs it.
02Engineer-led
Our production engine, unlocked
The pipeline our engineers use on managed enterprise migrations — the same code, now something you can drive yourself.
03Pricing
Try 10 pages free, then $1 a page
Credit-based, pay-as-you-go. No scoping call, no quote — sample it on your own docs before you spend anything.
04Sources
NotionSlabConfluenceSoonGoogle DocsSoon
Skip to content

The Complete Guide to Migrating from Freshdesk to Tidio

Planning a Freshdesk to Tidio migration? This guide explains data mapping, ticket history, custom fields, API limits, and common pitfalls.

Tejas Mondeeri Tejas Mondeeri · · 10 min read
The Complete Guide to Migrating from Freshdesk to Tidio
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

Migrating your customer service infrastructure from Freshdesk to Tidio requires careful planning. This guide covers the technical strategy for moving your core support assets, what transfers cleanly, what doesn't, and what you'll lose permanently.

Should You Migrate from Freshdesk to Tidio?

Before committing to a migration, confirm that Tidio covers the capabilities your team actually uses. The two platforms are architected differently: Freshdesk is a full-featured helpdesk with SLA management, CSAT surveys, community forums, and time tracking built in. Tidio is a live chat and ticketing platform oriented toward real-time customer engagement with lighter helpdesk functionality.

Capability Freshdesk Tidio
Ticket management ✓ Full ✓ Basic
Live chat ✓ Via Freshchat add-on ✓ Native
Knowledge base ✓ Full (Categories/Folders/Articles) ✓ Basic
SLA policies ✓ Full, with history ✓ Configurable, no history migration
CSAT surveys ✓ Built-in ✗ Not supported
Time tracking ✓ Per-ticket ✗ Not supported
Community forums ✓ Discussions ✗ Not supported
Automation/Scenarios ✓ Full rule engine ✓ Basic scenarios
Custom fields (contacts) ✓ Flexible types ✓ Limited to text, email, number, phone, URL
Custom fields (tickets) ✓ Flexible types ✗ No direct equivalent — manual only
Reporting/Analytics ✓ Historical + live ✗ Historical data not migratable
API operator creation ✓ Full ✗ Read-only — manual setup required

If your team depends on CSAT data, time entries, SLA compliance history, or community discussions, those are permanently lost in a migration to Tidio. If your primary use case is live chat with lightweight ticketing, Tidio fits. If you need a full helpdesk with audit trails, consider whether Tidio is the right destination before investing in migration.

Define Your Migration Scope

The success of your migration relies on understanding which data assets can be moved via API and which must be rebuilt manually.

Data Migrated Via API

The core transactional data can be programmatically migrated using Tidio's API:

  • Contacts (Users): Customer records from Freshdesk can be bulk-created in Tidio.
  • Tickets: The main support cases and issues recorded in Freshdesk.
  • Conversations/Replies: The message history, replies, and notes associated with each ticket.
  • Contact Custom Fields (Data): While the field structure itself is manual, the data stored in these fields can be populated via an API workaround (see Step 2 below).

Manual Configuration

Objects relating to internal organization, configuration, knowledge management, or performance metrics cannot be migrated via the Tidio API and must be manually rebuilt:

  • Agents/Operators and Groups/Departments: Must be reestablished manually within Tidio's operator and department settings.
  • Companies: Client organization structures in Freshdesk must be recreated manually in Tidio — no direct API migration route exists.
  • Custom Fields (Schema & Data for Tickets): The structure and definition of custom fields related to tickets must be set up manually in Tidio prior to importing ticket data.
  • Canned Responses: Predefined reply templates need manual creation.
  • Solutions/Knowledge Base: The entire structure of Categories, Folders, and Articles must be recreated manually.
  • Other Ancillary Objects: Roles, SLA Policies, Business Hours, Surveys, Discussions, and Time Entries require manual configuration.

What You Permanently Lose

Some Freshdesk data has no equivalent in Tidio and cannot be migrated at all:

  • Time Entries: Agent time tracking data per ticket is not supported in Tidio.
  • Surveys (CSAT): Customer satisfaction survey responses and scores are not transferable.
  • Discussions: Community forum threads do not have a Tidio equivalent.
  • SLA History: Historical SLA breach/compliance records are lost — only future SLA rules can be configured.
  • Reporting/Analytics Data: Freshdesk's historical reporting metrics do not carry over.

If any of these are subject to compliance or audit requirements, export and archive them from Freshdesk before decommissioning.

Object Mapping Reference

Freshdesk Object Tidio Equivalent Migration Method Notes
Contact Contact (Visitor) API (bulk create) Identified by email, name, or phone
Contact Custom Field (schema) Custom Property Manual Must create before data import
Contact Custom Field (data) Custom Property (value) API (bulk update) Requires schema to exist first
Ticket Ticket API (create) Must reference Tidio Contact ID
Ticket Reply / Note Ticket Message API (add message) Reconstructed per-ticket, chronologically
Agent Operator Manual API is read-only for operators
Group Department Manual API is read-only for departments
Company — Manual No direct equivalent; recreate manually
Custom Field (Ticket) — Manual Schema and data both manual
Canned Response — Manual No API migration path
Knowledge Base (Category/Folder/Article) Knowledge Base Manual Full manual rebuild required
SLA Policy SLA Policy Manual Historical compliance data lost
Business Hours Business Hours Manual —
Time Entry — Not migratable Archive from Freshdesk
Survey (CSAT) — Not migratable Archive from Freshdesk
Discussion — Not migratable Archive from Freshdesk

Archiving Strategy

For data that holds purely historical value and is not critical for day-to-day operations in Tidio — older closed tickets, Time Entries, Surveys, Discussions, or complex Custom Objects — generate a secure export from Freshdesk for archival purposes. This keeps your new Tidio instance clean while preserving compliance history.

Prepare Tidio for Data Import

Before transferring any transactional data, Tidio's framework must mirror your Freshdesk environment. This phase involves setting up foundational dependencies manually.

  1. Define Staff and Structure: Manually create your Operators (Tidio's term for agents) and set up the relevant Departments (Tidio's term for groups/teams). The Tidio API only supports retrieving lists of existing operators and departments — creation must be done in the Tidio administration panel.
  2. Replicate Custom Data Structures: Examine the custom fields defined on Freshdesk Contacts. Manually replicate these as custom properties in Tidio. These properties have predefined types: text, email, number, phone, or URL.
  3. Map Ticket Statuses and Priorities: Freshdesk and Tidio use different internal representations for status and priority values. Map these before import to prevent miscategorization.

Custom Field Type Mismatch Handling

Freshdesk supports custom field types — including dropdown, checkbox, date, and multi-select — that have no direct equivalent in Tidio's five supported types (text, email, number, phone, URL). This mismatch is where migrations break silently.

Freshdesk Field Type Tidio Support Recommended Handling
Text (single line) ✓ text Direct map
Text (multi-line) ✓ text Direct map (formatting lost)
Email ✓ email Direct map
Number ✓ number Direct map
Phone ✓ phone Direct map
URL ✓ URL Direct map
Dropdown (single select) ✗ Serialize selected value as text
Checkbox (boolean) ✗ Serialize as "true" / "false" text
Date ✗ Serialize as ISO 8601 string in a text field
Multi-select ✗ Serialize as comma-separated string in a text field

For unsupported types, the recommended approach is to serialize the value into a Tidio text field before import. This preserves the data but loses type enforcement — a dropdown that was validated to a fixed list in Freshdesk becomes a free-text string in Tidio. Document every field that required serialization so your team knows which fields to validate manually post-migration.

Note that this type mismatch applies to contact custom fields only — ticket custom fields have no API migration path in Tidio and must be rebuilt manually regardless.

Status and Priority Mapping

Freshdesk Status Numeric Value Tidio Equivalent
Open 2 Map to Tidio's open status
Pending 3 Map to Tidio's pending status
Resolved 4 Map to Tidio's resolved status
Closed 5 Map to Tidio's closed status
Freshdesk Priority Numeric Value Tidio Equivalent
Low 1 Map to Tidio's low priority
Medium 2 Map to Tidio's medium priority
High 3 Map to Tidio's high priority
Urgent 4 Map to Tidio's urgent priority

Verify Tidio's internal status and priority representations in their API reference before running the import — Tidio's UI labels and API values may differ.

Migrate Objects

The data transfer relies on moving transactional records in a specific order to satisfy data dependencies. Each step produces an output that the next step requires — skipping or reordering steps breaks relational integrity.

Dependency chain:

  • Step 1 output (Tidio Contact ID) → required by Step 3
  • Step 2 requires Step 1 to complete (contact records must exist before properties can be populated)
  • Step 3 output (Tidio Ticket ID) → required by Step 4
  • Step 4 cannot execute without Step 3 output

1. Migrate Contacts

This is the foundational step. Freshdesk Contacts map to Tidio Contacts (visitors identified by email, name, or phone number).

Use Tidio's bulk contact creation endpoint (POST /contacts-batch) to onboard your customer base. Store the returned Tidio Contact IDs — every subsequent step depends on them.

Warning

Duplicate handling: Test what happens when you submit a contact with an email that already exists in Tidio. Depending on the API behavior, the request may fail the entire batch, skip the duplicate, or upsert. Validate this before running the full import.

2. Populate Contact Custom Field Data (Workaround)

Immediately after base contact creation, enrich the customer records.

Since you defined the custom properties in Tidio during preparation, retrieve the corresponding custom field data from Freshdesk Contacts and push it to Tidio using the bulk contact update endpoint (PATCH /contacts-batch).

This allows non-standard data fields to travel across platforms. Any Freshdesk field types that don't map directly to Tidio's supported types (dropdown, checkbox, date, multi-select) must be serialized to text before this step — see the field type mismatch table above.

3. Migrate Tickets

With Tidio Contact IDs established, import your core support records.

A Freshdesk Ticket maps to a Tidio Ticket (a record for complex conversations requiring additional interactions). Use the ticket creation endpoint (POST /tickets-as-contact) to create a ticket associated with a Contact.

Map metadata including the original subject, priority, and current status using the numerical value mappings from the preparation phase.

4. Reconstruct Conversation History (Workaround)

The historical correspondence within Freshdesk (Replies and Notes) needs to be associated with the newly created Tidio tickets.

Tidio provides a dedicated endpoint (POST /tickets/{ticketId}/reply) to add a reply message to an existing ticket. Iterate through the chronological conversations for each Freshdesk ticket and add them as messages to the matching Tidio ticket, noting whether the message originated from a customer or an operator.

Tip

Preserve original timestamps: Pass the original created_at timestamp from Freshdesk during each creation call. Without this, all records will show the migration date instead of the actual historical date. Freshdesk stores all timestamps in UTC.

Post Migration Configuration

Once the core data is transferred, configure the remaining structural elements to make the helpdesk operational.

  • Rebuild Knowledge Assets: Freshdesk Solutions (Categories, Folders, Articles) must be recreated manually in Tidio's knowledge base tools.
  • Replicate Business Logic: Scenario Automations, SLA Policies, and Business Hours must be redefined and activated within Tidio. These rules govern ticket prioritization, assignment, and escalation — validate them carefully.
  • Finalize Internal Structure: Establish Companies, Canned Responses, Roles, and permissions. Ensure groups adhere to any necessary communication or staffing requirements.

Technical Constraints and Edge Cases

These constraints aren't immediately obvious and will break your migration if ignored:

  • Freshdesk API Rate Limits: Freshdesk enforces per-minute rate limits that vary by plan tier. Hitting these limits halts your export. Queue API calls carefully and cache non-volatile data (like agent IDs and group mappings) to reduce unnecessary requests. Check your current plan's limits in the Freshdesk API documentation before designing your export pipeline.
  • Tidio API Rate Limits: Tidio enforces rate limits on its API. Check the current limits in their developer documentation before designing your import pipeline. Exceeding them will result in 429 Too Many Requests responses. Implement exponential backoff on 429 — wait for the Retry-After header value (if returned) or use a fixed backoff starting at 1 second, doubling on each retry, before resubmitting the failed batch.
  • The Contact ID is King: The linking mechanism between tickets and conversations relies on the Tidio Contact ID. Every ticket must be correctly associated with its Tidio Contact ID. If this mapping breaks, you lose relational integrity between contacts and their ticket history.
  • Timestamp Handling: Pass the original created_at timestamp during creation calls to preserve historical context. Freshdesk stores timestamps in UTC. If any Freshdesk records have null or missing created_at values, decide on a fallback strategy (e.g., use updated_at or a sentinel date) before running the import.
  • Status and Priority Mapping: Freshdesk uses numerical values for Status (e.g., 2 for Open, 4 for Resolved) and Priority (e.g., 1 for Low, 4 for Urgent). Verify Tidio's equivalent values against their current API documentation before running the import.
  • Volume Considerations: For large Freshdesk instances (tens of thousands of tickets or more), a sequential ticket-by-ticket approach may take hours or days. Consider parallelizing API calls within rate limit bounds, or implementing a job queue to manage throughput.
  • Partial Migration Rollback: If the migration fails midway — for example, tickets imported without correct contact associations — you need a rollback plan. To identify partially imported records in Tidio, list tickets with GET /tickets and match them against the Freshdesk-to-Tidio ID crosswalk your import wrote. To remove them, issue DELETE /tickets/{ticketId} for each affected record. Run a clean re-run only after all partial records are confirmed deleted. Before starting any import run, record the exact timestamp so you can scope the rollback query precisely.

Further reading

More from our Blog