
Migrating from 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 and 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:
- Create data attributes for contacts, companies, tickets, and conversations to mirror your Freshdesk custom fields.
- Set up ticket types and attributes for common categories (bug, refund, feature request).
- Rebuild your Help Center structure: create Collections and Folders before importing Articles.
- Invite all agents and assign them to Teams matching Freshdesk groups.
- 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 |
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 |
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.”
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.
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.”
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
- Preserve conversation order.
Intercom threads must reflect original sequence. Always sort messages by timestamp before insertion. - Use external_id religiously.
This ensures you can re-run delta migrations safely without duplicates. - Don’t import everything at once.
Test with 100 records covering edge cases (multi-agent tickets, attachments, non-English articles). - Tag everything with origin.
Add a tag like migrated_from_freshdesk for easy filtering and rollback verification.
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.
At ClonePartner, we’ve completed numerous Freshdesk to Intercom migrations. Each project is handled by a dedicated engineer who customizes the data mapping to match your setup. If you want to avoid the technical complexity, ClonePartner can manage the entire migration for you, from planning and field mapping to validation and go live.