---
title: The Complete Guide to Migrating from Freshdesk to Intercom
slug: freshdesk-to-intercom-migration-guide
date: 2025-12-17
author: Tejas Mondeeri
categories: [Migration Guide, Intercom]
excerpt: "Learn how to migrate from Freshdesk to Intercom step by step. Migrate tickets, conversations, contacts, help center content, and automations safely."
canonical: https://clonepartner.com/blog/freshdesk-to-intercom-migration-guide/
---

# The Complete Guide to Migrating from Freshdesk to Intercom


Migrating from [Freshdesk to Intercom](https://clonepartner.com/migrate/freshdesk-to-intercom) is more than just transferring support data. It’s about reshaping your customer experience architecture. This guide walks you through every technical and operational step, from defining your scope to rebuilding automations and preserving historical accuracy.

## 1. Define your migration scope

Start by identifying which data and configurations truly need to move. [Freshdesk](https://clonepartner.com/help-desk-migration/freshdesk) and [Intercom](https://clonepartner.com/help-desk-migration/intercom) share similar building blocks. contacts, companies, tickets (or conversations), and help articles. But their models differ deeply in how they represent state and hierarchy.

**Data you can migrate via API:**

- Contacts

- Companies

- Tickets (→ Intercom Tickets)

- Conversations (→ Intercom Conversations)

- Notes, Replies, and Attachments

- Tags, Custom Fields, and CSAT ratings

- Help Center articles

**Data to rebuild manually:**

- Agents, Teams, SLAs, Business Hours, Automations

- Saved Replies and Workflows

- Email routing rules and mailboxes

**Data to archive:**

- Time entries and analytics reports

- Historical SLA metrics (not exposed through Intercom API)

Once you’ve defined scope, create a mapping sheet tracking each Freshdesk object, its Intercom equivalent, and the data transformations required.

## 2. Prepare Intercom for data import

Before migrating, Intercom must be ready to *receive* your data structure. Since relationships are strict (contacts link to companies, tickets reference both), prepare your workspace in this order:

1. **Create data attributes** for contacts, companies, tickets, and conversations to mirror your Freshdesk custom fields.

2. **Set up ticket types and attributes** for common categories (bug, refund, feature request).

3. **Rebuild your Help Center structure**: create Collections and Folders before importing Articles.

4. **Invite all agents** and assign them to Teams matching Freshdesk groups.

5. **Tag taxonomy cleanup:** standardize tags to avoid duplicates during import.

With this foundation ready, you can begin API imports safely without referential issues.

## 3. Migrate objects (the heart of your migration)

### 3.1 Companies

Freshdesk **Companies** map directly to Intercom **Companies**.
 Use company name and domain to maintain association with contacts.

| **Freshdesk** | **Intercom** | **Notes** |
| --- | --- | --- |
| id | company_id | Use as external_id for idempotent imports |
| name | name | Must be unique |
| domains [] | domains [] | Enables automatic linking |
| custom_fields | custom_attributes | Pre-create attributes |
| created_at | Custom “original_created_at” field | Intercom can’t backdate timestamps |

**Technical nuance:** Intercom enforces strict uniqueness on company names if domains aren't provided. If your Freshdesk instance contains duplicate company names, you must merge them or append a unique identifier before import. Intercom API rate limits also apply—batch your requests to respect the limit of 83 requests per 10 seconds.

### 3.2 Contacts

Freshdesk **Contacts** correspond to Intercom **Contacts**. Each contact can belong to a company, have multiple emails, and store extended attributes.

| **Freshdesk** | **Intercom** | **Notes** |
| --- | --- | --- |
| id | external_id | Required for deduplication |
| name | name | Combine first/last names if stored separately |
| email | email | Required for mapping replies |
| phone | phone | Normalize to E.164 |
| company_id | Company relationship | Link post-import |
| tags [] | tags [] | 1:1 mapping |
| custom_fields{} | custom_attributes{} | Create in advance |

Exclude deactivated or spam contacts. Leads can be imported as contacts tagged “lead.”

**Technical nuance:** Intercom enforces strict uniqueness on the `email` field. Freshdesk sometimes allows multiple contacts with the same email if created via different channels. You must deduplicate these records or merge their ticket histories in your script before pushing to Intercom.

### 3.3 Tickets → Intercom Tickets

Freshdesk **Tickets** are closest to Intercom’s **Tickets API**, which supports structured workflows and reporting.

| **Freshdesk** | **Intercom** | **Notes** |
| --- | --- | --- |
| id | external_id | Maintain idempotency |
| subject | title | Default to “No Subject” if missing |
| description | description | Clean HTML and upload inline images |
| priority | priority | Map Low→Low, High→High |
| status | state | Open, Pending, Resolved, Closed |
| group_id | team_assignee_id | Map to team in Intercom |
| agent_id | admin_assignee_id | Map to admin |
| tags [] | tags [] | Direct import |
| custom_fields{} | ticket_attributes{} | Schema must pre-exist |

**Attachments and replies:**
 Freshdesk stores conversations under each ticket. Intercom allows threaded replies with authors (contact or admin). Migrate each reply chronologically, attaching files where applicable.

**Technical nuance:** Intercom's Tickets API is structurally distinct from its Conversations API. Tickets are designed for asynchronous, state-driven workflows (like bug tracking or complex support), whereas Conversations handle continuous dialogue. Evaluate whether a Freshdesk ticket maps better to an Intercom Ticket or an Intercom Conversation based on your team's workflow.

### 3.4 Conversations

Freshdesk’s live chats and email threads map to Intercom **Conversations**. These represent actual message timelines with parts (messages, notes, and replies).

| **Freshdesk** | **Intercom** | **Notes** |
| --- | --- | --- |
| ticket_id | conversation_id | For one-to-one mapping |
| subject | source.subject | Optional; derive from first message |
| body_html | source.body | Sanitize and re-upload inline images |
| attachments [] | attachments [] | Upload via multipart API |
| status | state | Map Open, Pending, Closed |
| requester | contact_ids | Must exist as contact |
| agent_id | teammate_ids | Must exist as admin |
| tags [] | tag_ids | Maintain parity |
| created_at | created_at | If not backdatable, store in note text |

Each conversation part becomes a message or note inside the Intercom thread. Internal notes map to Intercom “admin notes.”

**Technical nuance:** Migrating attachments is a multi-step process. Freshdesk attachment URLs require authentication and expire. You must download the binary file to memory, upload it to Intercom via a `multipart/form-data` POST request, and then reference the returned upload ID in the conversation part. Inline images in HTML bodies must also be parsed, downloaded, and replaced with Intercom-hosted URLs.

### 3.5 Notes and Tags

Freshdesk **private notes** migrate as Intercom **Notes** attached to contacts or conversations. Tags migrate one-to-one.
 Tag relationships are supported across contacts, conversations, and tickets in Intercom.

### 3.6 CSAT

Freshdesk’s **Satisfaction Ratings** can be represented in Intercom’s **conversation_rating** fields.
 For historical data, add private notes containing the rating and timestamp if it can’t be programmatically created.

### 3.7 Help Center (Solutions → Help Center)

Freshdesk **Solutions** map to Intercom’s **Help Center** Collections and Articles.

| **Freshdesk** | **Intercom** | **Notes** |
| --- | --- | --- |
| category | collection | Parent-level grouping |
| folder | section | Sub-grouping |
| article | article | Retain formatting and attachments |
| tags [] | labels [] | Preserve topic tags |
| translations [] | translations [] | Optional multilingual support |

After import, validate article URLs and re-upload attachments to Intercom’s CDN.

## 4. Rebuild automations, SLAs, and workflows

Once data migration is complete, reconstruct operational logic inside Intercom:

- Rebuild **workflows and assignment rules** using Intercom’s automation builder.

- Convert **Freshdesk SLAs** into Intercom’s ticket rules and reminders.

- Recreate **Saved Replies** as Internal Articles for agents.

- Configure **Inbox routing** for team-level ticket handling.

- Rebuild **tags-based triggers** as workflow conditions.

This ensures your new workspace behaves like Freshdesk while taking advantage of Intercom’s unified chat + ticket system.

## 5. Manage gaps and historical data

Some Freshdesk features have no equivalent in Intercom and should be handled manually:

| **Missing in Intercom** | **Workaround** |
| --- | --- |
| Time entries | Export to CSV for offline reporting |
| Agent roles & SLAs | Recreate manually |
| Ticket dependencies | Store relationships as linked_ticket_ids in attributes |
| Backdated timestamps | Add original_created_at note on record |
| Analytics data | Export as archive for reference |

For audit purposes, keep an external archive (CSV or JSON) of closed tickets older than your retention threshold.

## 6. Insider Secrets

1. **Preserve conversation order.**
 Intercom threads must reflect original sequence. Always sort messages by timestamp before insertion.

2. **Use external_id religiously.**
 This ensures you can re-run delta migrations safely without duplicates.

3. **Don’t import everything at once.**
 Test with 100 records covering edge cases (multi-agent tickets, attachments, non-English articles).

4. **Tag everything with origin.**
 Add a tag like migrated_from_freshdesk for easy filtering and rollback verification.

## Migration approaches: Pros and cons

When moving from Freshdesk to Intercom, you generally have three paths. Each comes with distinct trade-offs.

**1. Automated SaaS migration tools**
- **Pros:** Low upfront cost, fast setup for standard configurations, UI-driven mapping.
- **Cons:** Highly rigid. These tools often fail on complex custom fields, large attachments, or inline HTML images. They lack robust error handling for API rate limits and provide no dedicated engineering support when edge cases cause data drops.

**2. DIY custom scripts**
- **Pros:** Ultimate control over data transformations and business logic.
- **Cons:** High engineering cost. Your internal team must learn both the Freshdesk and Intercom APIs, handle pagination, manage rate limits, and build idempotency to prevent duplicates during failed runs. This pulls engineers away from core product work.

**3. Managed services (ClonePartner)**
- **Pros:** Engineer-led execution. We write custom scripts tailored to your exact schema, handle all API edge cases (like multipart attachment uploads and HTML sanitization), and guarantee zero data loss. You get the control of a custom script without the internal resource drain.
- **Cons:** Higher initial cost than off-the-shelf SaaS tools.

## Quick Recap

Migrating from Freshdesk to Intercom isn’t just about data, it’s about transitioning to a conversational model that unifies tickets, chat, and automation.

Start by preparing your data attributes and workspace, then move companies, contacts, tickets, and conversations in sequence.

Rebuild your automations and Help Center only after data validation. Handle historical metrics and timestamps via notes or archives.

***Why ClonePartner stands out:*** *We don’t rely on generic middleware or rigid off-the-shelf tools. At ClonePartner, every Freshdesk to Intercom migration is handled by a senior engineer who audits your specific data structure and writes custom code to execute the move. We handle the technical nuances—API rate limits, strict email deduplication, inline image parsing, and relational mapping—so your team doesn't have to. If you want a seamless transition with zero data loss, ClonePartner manages the entire process from planning to go-live.*

> Book a consultation to understand how ClonePartner can help you migrate to Intercom
>
> [Talk to us](https://cal.com/clonepartner/meet?utm_source=blog&utm_medium=button&utm_campaign=demo_bookings&utm_content=cta_click&utm_term=demo_button_click)

## Further reading:

- [Freshdesk](https://developers.freshdesk.com/api)
- [Intercom](https://developers.intercom.com/docs/references/rest-api/api.intercom.io)
