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 · · 7 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.

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.

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 representations in their API docs before running the import — these values may differ from what the UI displays.

Migrate Objects

The data transfer relies on moving transactional records in a specific order to satisfy data dependencies.

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 creation endpoint 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.

This allows non-standard data fields to travel across platforms.

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 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 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.
  • Tidio API Rate Limits: Tidio also 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 responses and dropped records if not handled.
  • 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). Tidio may use different internal representations. Verify the mapping against Tidio's 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. Before starting, document how you would identify and delete partially imported records in Tidio to allow a clean re-run.

Further reading

More from our Blog

Unthread to HappyFox Migration: A Technical Guide
Unthread/HappyFox/Migration Guide

Unthread to HappyFox Migration: A Technical Guide

A step-by-step technical guide for migrating from Unthread to HappyFox. Covers API extraction, data model mapping, rate limits, edge cases, and validation.

Raaj Raaj · · 22 min read