Freshdesk to HubSpot Service Hub Migration: A Step-by-Step Guide
How to migrate Freshdesk to HubSpot Service Hub: what moves, field mapping, export and import options, the steps in order, and what to rebuild after cutover.
On this page 8 sections
- How is HubSpot’s data model different from Freshdesk’s?
- What migrates from Freshdesk to HubSpot?
- How do you export data from Freshdesk?
- How do you import into HubSpot?
- A step-by-step Freshdesk to HubSpot Service Hub migration
- What usually goes wrong?
- How can you cover customers during the move?
- Frequently asked questions
To migrate Freshdesk to HubSpot Service Hub, export contacts, companies and tickets from Freshdesk, recreate ticket properties and pipelines in HubSpot, then import. CSV import works for records and fields but not full conversation threads, so use the Freshdesk API or a migration service for history. Automations, SLAs and canned responses are rebuilt by hand.
Key takeaways
- Contacts, companies, tickets, custom field values and knowledge base articles move. Automations, SLAs, views and reports do not.
- HubSpot's CSV import handles records and properties well. Threaded replies, private notes and attachments need the API or a service.
- Build the HubSpot side first: ticket pipeline, statuses, custom properties and teams.
- Freshdesk's ticket list API returns 30 days by default, so plan your extraction around filters and rate limits.
- Price the HubSpot tier you actually need, including the required onboarding fee on Professional and Enterprise.
To migrate from Freshdesk to HubSpot Service Hub, you export your Freshdesk contacts, companies and tickets, build matching pipelines and ticket properties in HubSpot, import contacts and companies first, then import tickets with their associations. HubSpot’s spreadsheet import is fine for records and field values, but it does not carry full conversation threads, private notes and attachments well, so teams that need history use the Freshdesk API or a migration service. Automations, SLA policies, canned responses and reports are rebuilt by hand.
Most teams make this move to consolidate support into the CRM their sales and marketing teams already use. That is a good reason. If the reason is cost, read the last section first, because HubSpot’s paid service tiers are not cheaper per seat than Freshdesk’s, as our Freshdesk vs HubSpot Service Hub comparison shows.
How is HubSpot’s data model different from Freshdesk’s?
Freshdesk is ticket-centric. A ticket contains its whole conversation: the original request, public replies and private notes, in one thread.
HubSpot is CRM-centric. A ticket is one object among contacts, companies and deals, connected by associations. Conversations sit in the help desk workspace and inbox, and history on a record appears as activities on a timeline. That means a migration is not just “copy tickets”. Each ticket has to be associated with the right contact and company, and you need to decide how its thread will be represented.
The practical consequence: import contacts and companies before tickets, and keep the Freshdesk IDs as a custom property on every record, so associations and later delta runs can match on them.
What migrates from Freshdesk to HubSpot?
| Freshdesk object | HubSpot equivalent | Migrates? | Notes |
|---|---|---|---|
| Contacts | Contacts | Yes | Email is HubSpot’s deduplication key. Clean duplicates first. |
| Companies | Companies | Yes | Domain matters for automatic association. |
| Tickets | Tickets | Yes | Into a pipeline you create in advance. |
| Public replies and private notes | Ticket activity or timeline | Via API or service | Spreadsheet import does not rebuild threads. |
| Attachments | Files on the ticket | Via API or service | Move them before the Freshdesk account closes, or links break. |
| Ticket fields | Ticket properties | Values yes | Create custom properties first. Dropdown options must match. |
| Status | Pipeline stage | Yes, mapped | Map Open, Pending, Resolved, Closed and any custom statuses. |
| Priority | Priority | Yes | HubSpot has a standard priority property. Check the values match. |
| Groups | Teams | Records partly | Create teams in HubSpot and map ownership. |
| Agents | Users with service seats | No, recreate | New logins, seats and permissions. |
| Tags | Multi-select property or tags | Yes | A good moment to prune. |
| Solution articles | Knowledge base articles | Usually | Categories and folders need restructuring. Review formatting and links. |
| Canned responses | Snippets or templates | Text only | Copy and paste, then rebuild placeholders. |
| Dispatch’r, Observer, Supervisor rules | Workflows | No | Rebuild. Workflows depend on your HubSpot tier. |
| Scenario automations | Workflows or sequences | No | Rebuild. |
| SLA policies and business hours | SLAs and business hours | No | Recreate. |
| Satisfaction ratings | Property or feedback survey data | Sometimes | Usually lands as a property, not native survey results. |
| Reports and dashboards | Reports | No | Export historical metrics before you leave. |
| Freddy AI configuration | Customer Agent or other AI | No | No direct equivalent. Retrain on your content. |
| Marketplace apps | HubSpot apps | No | Reconnect each integration. |
Our Freshdesk migration guide covers the export side for any destination, not just HubSpot.
How do you export data from Freshdesk?
There are three routes, and you will probably use more than one.
- Account export (XML). Freshdesk’s support article says an Account Admin can export all account data, including tickets and solution articles, from Admin, Account, Account Details, Export. The files arrive by email in XML. This is your backup. Take it first, whatever else you do.
- Ticket list export (CSV or Excel). Quick for ticket fields and reporting, but it does not include the conversation thread. Useful for checking counts.
- The Freshdesk API. The only practical way to pull full threads into another system. Per the Freshdesk API docs, listing tickets returns only those created in the past 30 days by default, so use the
updated_sincefilter for older history, and a single list query returns at most 300 pages. Conversations beyond the first ten on a ticket come from the list conversations endpoint. Rate limits depend on plan; the docs list 100 calls per minute on Growth, 400 on Pro and 700 on Enterprise, with lower sub-limits for ticket listing. On large accounts, that limit sets your timeline.
How do you import into HubSpot?
Spreadsheet import. HubSpot’s import tool can bring in records such as contacts, companies and tickets, and create associations between them in the same import. This works well for Freshdesk contacts, companies and ticket properties. It does not rebuild threaded email conversations.
Migration apps. Help Desk Migration is listed on the HubSpot Marketplace and supports Freshdesk as a source, moving tickets, contacts, companies, notes, attachments and agent assignments. It requires a paid subscription with that vendor. It offers a demo migration, which you should run on 20 or more real tickets before paying for the full move.
Your own scripts. Freshdesk API out, HubSpot CRM API in. Full control, and full responsibility for pagination, retries, rate limits and associations.
A step-by-step Freshdesk to HubSpot Service Hub migration
1. Audit Freshdesk
List every automation rule, scenario, SLA, canned response, ticket field, group, integration and report. Mark each keep, rebuild or drop. Note which Freshdesk features you rely on that HubSpot may place on a higher tier.
2. Choose the HubSpot tier
HubSpot’s Service Hub pricing lists a free tier for up to two users, then Starter, Professional and Enterprise. Professional is $90 per seat per month billed annually and carries a required $1,500 one-time onboarding fee; Enterprise requires a $3,500 fee. HubSpot’s help desk page places customer portals, the knowledge base and feedback surveys on Professional. If you use Freshdesk’s knowledge base and SLAs today, budget for Professional.
3. Build the HubSpot side
- Create the ticket pipeline and stages that match your Freshdesk statuses.
- Create custom ticket, contact and company properties for every Freshdesk field you are keeping, plus a “Freshdesk ID” property on each object.
- Create teams to replace Freshdesk groups, and add users with service seats.
- Set up the knowledge base structure.
4. Export everything
Take the full XML account export as a backup. Then extract via API or let your migration tool connect directly.
5. Run a sample migration
Move 20 to 100 real tickets, including long threads, tickets with attachments, tickets from multi-contact companies, and tickets with custom field values. Check associations, thread order, notes versus public replies, and inline images.
6. Import in dependency order
Companies, then contacts, then tickets with associations, then conversations and attachments. Doing tickets before contacts creates orphaned records.
7. Rebuild automation
Recreate routing, assignment, SLA and follow-up logic in HubSpot workflows. Recreate canned responses as snippets or templates. Test every workflow on sample tickets before go-live.
8. Migrate the knowledge base
Move solution articles, then fix internal links, images and category structure. Set up redirects from old Freshdesk article URLs so customer bookmarks and search results still work.
9. Cut over
Point your support email forwarding to HubSpot, replace the Freshdesk widget with HubSpot chat or forms, run a delta migration for anything created during the move, and keep Freshdesk readable for at least one billing cycle.
10. Verify
Compare ticket, contact, company and article counts with the source. Watch first response time and backlog daily for two weeks.
What usually goes wrong?
- Duplicate contacts. Freshdesk allows patterns HubSpot will merge or reject. Clean them first.
- Lost threads. A CSV-only migration that looked complete, until an agent opens an old ticket and finds only the subject line.
- Broken attachments. Inline images that pointed at Freshdesk storage stop loading when the account closes.
- Workflow gaps. An Observer rule nobody documented quietly stops running, and customers stop getting a reply they relied on.
- Seat surprises. HubSpot service seats and tier minimums cost more than the Freshdesk seats they replace.
The general version of these risks, with a cutover checklist, is in our helpdesk migration checklist. If you are also weighing a smaller tool, our Help Scout and Freshdesk migration guide covers that pair.
How can you cover customers during the move?
Migrations create a dip in agent productivity exactly when the queue keeps arriving. An AI resolution layer that runs alongside the helpdesk, not inside it, can carry part of that load.
Fidiora connects to your help content and answers repetitive questions with cited sources, handing anything it cannot resolve to your helpdesk as a ticket with the full conversation. It has integrations for both Freshdesk and HubSpot, so it can run in front of Freshdesk before the migration, then send its handoffs to HubSpot from cutover day without customers noticing the switch. It charges $0.69 per genuine resolution, dropping to $0.45 above 1,000 a month, with no seat fees, handoffs are free, and a spend cap limits the monthly bill.
It can also change the business case. Every conversation resolved before it reaches an agent is one less reason to buy another HubSpot service seat. If cost is the main driver rather than CRM consolidation, compare HubSpot Service Hub against the alternatives, or try the getting started guide and measure how much of your queue actually needs a person before you size the new seat count.