The Complete Guide to Migrating from Freshdesk to Intercom
Learn how to migrate from Freshdesk to Intercom step by step. Migrate tickets, conversations, contacts, help center content, and automations safely.
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,200+ migrations completed
- Zero downtime guaranteed
- Transparent, fixed pricing
- Project success responsibility
- Post-migration support included
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 |
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 |
| 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
-
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.
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.
