OneMetric Blog | Hubspot partner

Freshdesk to HubSpot Migration: Tickets & Contacts

Written by Himanshi Gaur | Nov 10, 2026, 9:15:00 PM

A help desk is only as useful as its history. When an agent opens a ticket, they need to see what the customer asked last month, what was promised and who handled it. That is why a Freshdesk to HubSpot migration is harder than it looks. Moving the ticket list is easy. Moving the conversations behind each ticket, with the right customer, status and dates, takes a plan.

This guide covers why support teams move from Freshdesk to HubSpot, what Freshdesk data can be migrated, how to map tickets and contacts, how to keep ticket statuses and priorities consistent, how to migrate conversations and historical support data, and how to test the migrated records before agents rely on them.

Why Migrate from Freshdesk to HubSpot?

Most teams do not leave Freshdesk because it fails as a ticketing tool. They leave because support data sits in a separate system from sales and marketing. An agent in Freshdesk cannot easily see the customer's open deal, renewal date or recent marketing activity. A sales rep in the CRM cannot see that the account has three urgent tickets open.

HubSpot puts tickets on the same CRM as contacts, companies and deals. A ticket is associated with the customer record, so anyone with access sees the full relationship in one place. For many teams, that alone justifies the move.

Common reasons for a Freshdesk HubSpot migration include:

  • One customer record: Support, sales and success teams work from the same contact and company records.
  • Fewer integrations: Teams already using HubSpot for marketing or sales remove a sync that needed constant maintenance.
  • Shared reporting: Ticket volume, resolution time and customer value can be reported together.
  • Service features in one place: HubSpot's help desk, SLAs, knowledge base and feedback tools sit on the same platform.

Plan the channels as well as the data. Customers reach Freshdesk through support email addresses, portal forms, chat and sometimes phone. Each of those channels has to be connected to HubSpot's help desk before cutover, so new requests arrive in the right place on day one. The data migration and the channel switch should be scheduled together, otherwise tickets land in both systems during the overlap.

The move is also a chance to clean up. Old ticket types, unused custom fields and groups that no longer exist do not need to come across.

What Freshdesk Data Can Be Migrated?

Freshdesk offers more than one way to get data out, and each covers different things. Choosing the right one is the first decision in a Freshdesk ticket migration.

  • Ticket export: Freshdesk's support documentation explains that admins and supervisors can export tickets from the ticket list as CSV or Excel, choosing the fields to include. The description can be added through the multiline text fields option. Freshdesk is clear that this export will not include the entire conversation from the ticket.
  • Contact and company export: Freshdesk notes that you can export customer data as a CSV file at any time, including custom fields, from the Contacts and Companies pages.
  • Account export: For full conversation history, Freshdesk points to the account export, run by the account administrator from Admin, Account, Account Details. Freshdesk says it covers tickets, solutions, forums and the customer list, and arrives in XML format, which usually needs a developer to convert.
  • API: Freshdesk's API includes an endpoint to list all conversations of a ticket. Freshdesk notes that API calls are limited per account based on the plan, so large histories need to be extracted in batches.

Freshdesk data

HubSpot destination

Notes

Contacts

Contacts

Email is HubSpot's main deduplication key

Companies

Companies

Domain is HubSpot's deduplication key

Tickets

Tickets

Map statuses to a ticket pipeline first

Ticket fields (type, source, product)

Ticket properties

Create dropdown options before import

Replies and notes

Emails or notes on the ticket

Needs the account export or API

Agents

HubSpot users

Create users before importing owners

Groups

Teams, or a ticket property

Decide how routing will work

Solutions articles

Knowledge base articles

Usually a separate content move

Attachments

Files on the record or ticket

Check size limits

 

H2: How to Map Tickets and Contacts

Contacts and companies come first, because every ticket needs a customer to attach to. For the Freshdesk contacts migration, map each contact field to a HubSpot contact property and confirm that every contact has a unique email where possible. HubSpot uses email to deduplicate contacts, so contacts without one need another unique identifier, such as the Freshdesk contact ID stored in a unique-value property.

Companies follow the same pattern. Freshdesk maps requesters to a company, and HubSpot uses the company domain to deduplicate. Import companies, then contacts with their company association, so each customer lands on the right account.

Tickets come next. Freshdesk's default ticket fields include subject, type, source, status, priority, group, agent, product, description and company. Map them as follows:

Freshdesk field

HubSpot ticket property

Notes

Subject

Ticket name

Required to create the ticket

Description

Ticket description

Plain text or HTML, check formatting

Status

Ticket status (pipeline stage)

See the next section

Priority

Priority

Check that every Freshdesk value has an option

Type

Category or a custom dropdown

Create options before import

Source

Source, or a custom property

Keep the original channel for reporting

Agent

Ticket owner

Agent must exist as a HubSpot user

Group

Team or a custom property

Supports routing and reporting

Requester

Contact association

Match on email or Freshdesk ID

Company

Company association

Match on domain or Freshdesk ID

Created and resolved dates

Create date and custom date properties

Keep the original timeline

Store the Freshdesk ticket ID on every HubSpot ticket in a unique-value property. It is the key that links conversations to tickets later, and it lets you reimport failed rows without creating duplicates.

Agents and groups need a decision before any ticket is imported. Every Freshdesk agent who owns tickets should exist as a HubSpot user, or their tickets will import without an owner. Agents who have left the company can be mapped to a placeholder user or to their team lead, so historical tickets still have an owner for reporting. Freshdesk groups usually become HubSpot teams, which keeps routing and team reports working.

Custom fields need the same care. Freshdesk supports custom single-line text, multi-line text, checkbox, dropdown, dependent, date, number and decimal fields. Most map directly to HubSpot property types. Dependent fields, which nest up to three levels in Freshdesk, usually become separate dropdown properties in HubSpot, with conditional options if you want to keep the dependency.

H2: Preserving Ticket Statuses and Priorities

Statuses drive queues, SLAs and reports, so they must be mapped deliberately. Freshdesk's default statuses are Open, Pending, Resolved and Closed, and Freshdesk notes that these four cannot be deleted, though teams on higher plans often add custom statuses. HubSpot's default support pipeline has four statuses: New, Waiting on contact, Waiting on us and Closed.

The names do not line up, so map by meaning, not by label:

Freshdesk status

Suggested HubSpot status

Reasoning

Open

New or Waiting on us

The team owes the next action

Pending

Waiting on contact

The customer owes the next action

Resolved

Closed, or a custom Resolved status

Decide if resolved tickets can reopen

Closed

Closed

Final state

Custom statuses

Custom pipeline statuses

Recreate only those still in use

If the team relies on the difference between Resolved and Closed, add a Resolved status to the HubSpot pipeline. HubSpot lets you mark each ticket status as open or closed when you set up a pipeline, and its close date is set automatically when a ticket moves from an open status to a closed one. Import historical close dates into a custom property as well, so reports on resolution time reflect the original dates rather than the import date.

Priorities are simpler. Freshdesk's priority field has four values: Low, Medium, High and Urgent. Check the options on HubSpot's priority property before import and add any value that is missing, so no ticket lands blank.

Groups and SLA policies need a decision too. HubSpot offers SLAs in its help desk on Service Hub Professional and Enterprise, with goals for time to first reply, time to next reply and time to close. SLA timers do not carry over from Freshdesk, so set them up for new tickets and treat historical SLA results as report data.

Migrating Conversations and Historical Support Data

Conversations are the part of the support history that agents value most and the part that takes the most work. As covered above, Freshdesk's ticket export does not include them. You need the account export or the API to extract each ticket's replies and notes.

Once extracted, decide how they will appear in HubSpot. HubSpot's import tool can create emails and notes as activities, and HubSpot notes that emails, meetings and notes must be associated with an object. That gives three common patterns:

  • Each reply as an email activity: Customer messages and agent replies become separate email activities on the ticket, with their original timestamps. This gives the most faithful timeline.
  • Each note as a note activity: Freshdesk internal notes become HubSpot notes on the ticket, so they stay visible to the team.
  • Full thread as one note: For very old tickets, the whole conversation can be combined into a single note. It takes less effort and keeps the history readable, at the cost of detail.

Many teams combine these: full detail for tickets from the last year or two, and a single combined note for older ones. Agree on the cut-off with the support lead before extraction starts.

To migrate support history accurately, keep three things on every activity:

  • Original timestamp: So the timeline reads in the right order.
  • Direction and author: Whether the message came from the customer or an agent, and which agent.
  • Associations: The ticket, and the contact and company it belongs to.

Formatting needs a check too. Freshdesk replies often contain HTML, inline images, signatures and quoted text from earlier messages. Decide whether to keep the HTML or convert it to plain text, and test a handful of long threads so the result is readable in HubSpot. Quoted history in every reply can make threads several times longer than they need to be, so stripping it is often worth the effort.

Attachments add volume. Decide which attachments matter, such as contracts or screenshots on recent tickets, and check HubSpot's file limits before planning a bulk upload.

Testing the Migrated Records

Test on a sample before the full move, then test again after it. Choose a sample that stresses the mapping: tickets in every status and priority, tickets with long conversations and attachments, contacts without email and companies with many contacts.

Check

How to run it

Pass condition

Record counts

Compare Freshdesk exports to HubSpot counts for contacts, companies and tickets

Counts match, minus agreed exclusions

Duplicates

Search on email, domain and Freshdesk IDs

No unexpected duplicates

Ticket associations

Sample tickets for contact and company links

Every ticket is on the right customer

Statuses and priorities

Count tickets per status and priority in both systems

Distributions match the mapping

Conversations

Open sampled tickets and compare threads

All replies and notes present, in order

Dates

Compare created and resolved dates

Original dates preserved

Owners and teams

Count tickets per agent and group

Counts match

Help desk behavior

Create test tickets and reply from HubSpot

Routing and SLAs work for new tickets

Ask two or three agents to review tickets they handled themselves. They will notice a missing reply or a wrong customer faster than any count. Fix problems in the mapping, not on individual records, then rerun the import for affected rows using the Freshdesk ID as the identifier.

Plan the cutover with open tickets in mind. A common approach is to migrate closed tickets first, while the team keeps working in Freshdesk. Then, on cutover day, switch the support channels to HubSpot, run a final delta migration of tickets that were open or updated since the first run, and freeze Freshdesk as read-only. Agents pick up the open tickets in HubSpot with their full history, and customers see no gap in service.

If you would rather hand this work to a team that has done it before, our Freshdesk to HubSpot migration services cover extraction, mapping, conversation import and testing.

Conclusion

A clean Freshdesk move depends on a few decisions: which export method gives you the conversations you need, how Freshdesk statuses and priorities map to a HubSpot ticket pipeline, how replies and notes will appear on HubSpot tickets, and how far back full history should go. Get contacts and companies right first, keep the Freshdesk ID on every record, and test with the agents who know the tickets best.

Start with a sample of your busiest tickets and prove the mapping before the full import. If you are planning a wider HubSpot Service Hub migration, OneMetric can help you plan the help desk setup alongside the data move. To talk through your own Freshdesk data, get in touch with OneMetric.