// Guides · Migration
What actually transfers when you leave HubSpot?
Contacts, companies, deals, tickets, tasks, and calls export from HubSpot as CSV with their properties and associated record IDs, and they import cleanly. Notes, logged emails, and meetings only come out through report exports, single-contact exports, or the API, so they move with effort and usually with gaps. Workflows, sequences, templates, and pipeline definitions do not export in a form any CRM can import; you rebuild them by hand.
This guide covers the data question only. The timing question, when to start relative to your renewal and whether to leave at all, is on the Leaving HubSpot page. Every claim below about what HubSpot exports was checked on September 4, 2026 against HubSpot's own knowledge base, and the article I checked is linked next to each one. I have not quoted prices, because those change and the docs do not.
What exports cleanly from HubSpot?
The records. HubSpot's export records article lists contacts, companies, deals, tickets, calls, and custom objects as exportable from each object's index page, in CSV, XLSX, or XLS. The default export takes only the properties and associations in the view you are looking at, so change it: the Customize option offers "All properties on records" or "All properties and associations on records," and the second one is the one you want. Association columns carry up to one thousand associated record IDs plus the associated record name, and the download link expires after 30 days, so do the export close to the import rather than months ahead.
Tasks come out separately. The export tasks article describes exporting a task view with task properties, association names, and associated record IDs, CSV by default. Custom property definitions export from settings too: the properties article says the all-properties file includes each property's name, internal name, type, description, group, its options, who created it, where it is used, and its fill rate. That fill rate column is the most useful thing in the whole export, and I will come back to it.
I worked at HubSpot for years, and the objects that went missing in the migrations I was close to were never the contacts. They were tasks, notes, association labels, and pipelines with custom stages. Three of those four are in the next two sections.
What moves with effort?
Association labels. Labels such as "Decision maker" or "Billing contact" are a Professional and Enterprise feature (association labels article). The export article describes associated record IDs and names in the export file; I could not find labels mentioned anywhere in it, so treat them as something you document from the settings screen and re-create in the new system. HubSpot's own import file article requires labels to exist before you import them, and any target CRM that supports labels will want the same order of operations.
Pipelines with custom stages. Each deal's stage arrives in the CSV as a text value, because deal stage is a property. The pipeline itself, meaning the stage order, the win probabilities, and which of your three pipelines a stage belongs to, is not something I could find an export for. Screenshot every pipeline and build the stages in the new system before you import, with the names matched exactly, or the importer will not know where to put the deals.
Files and attachments. The files tool has a bulk export: select files and folders, click Export (ZIP), and a download link arrives by email (manage your files article). That article says nothing about attachments on contact or deal records, so for the deals that matter, open the record and check what is attached to it rather than assuming the ZIP has it.
Property history. The bulk export gives you current values. Historical values, the fact that a deal was in Proposal for 40 days before it moved, come only from the single-contact export (export contact data article), which includes "custom contact properties and their historical values" one contact at a time. Nobody does that for nine thousand contacts. Decide now that you are giving up property history, and note the handful of records where it matters.
And then the activity timeline, which gets its own section below because it is where the migration I am about to describe went wrong.
What does not move at all?
Workflows. The export your content and data article describes two workflow exports: a spreadsheet listing each workflow's name, status, enrollment counts, and created and modified dates, and a PNG image of an individual workflow. It also says that "workflow exports don't include performance data or the workflow's history." A PNG is documentation, and good documentation, but no CRM imports it. You rebuild the logic, or you find that most of it no longer needs to exist. The Leaving HubSpot page makes that argument in full.
Sequences, email templates, and snippets. That same index of exportable content has no entry for any of them, and I have not found one elsewhere in the knowledge base. Copy the ones your reps actually send into a document by hand; a team that believes it has 40 templates usually turns out to use six.
A top HubSpot agency partner asked us this summer, in exactly these words, "how does migration work for my clients." The short version I gave them is the three buckets above, and the table below is the long version.
What transfers, object by object?
| Object | Exports how | What you lose | What to do |
|---|---|---|---|
| Contacts, companies, deals, tickets | Index page export to CSV/XLSX; choose "All properties and associations on records" | Property history; association labels are not described in the export docs | Export each object separately, close to import day; the link expires in 30 days |
| Custom properties | Settings, export all properties: name, type, options, fill rate | Nothing structural; the target must have the property before values can land | Drop every property with a fill rate you would not miss; re-create the rest first |
| Tasks | Task view export with properties, association names, and record IDs | Owner mapping if user emails differ between systems | Export open tasks only; closed ones are history nobody reads |
| Calls | Calls index export, same as records | Recordings and transcripts are not the same thing as the call record | Export the records; treat recordings as files |
| Notes, logged emails, meetings | Custom report builder export (Professional and Enterprise), single-contact export, or the API | Anything on a Starter tier without the report builder; threads become rows | API pull if you have a developer; otherwise reconnect the mailbox and let history regenerate |
| Association labels | No export I could find; visible in settings | Every label | List them, create them in the target, import with an association label column |
| Pipelines and stages | Stage name rides along as a deal property value | Stage order, probabilities, pipeline membership | Screenshot each pipeline; build stages with identical names before import |
| Workflows | Spreadsheet of names and counts; PNG per workflow | The logic itself, performance data, enrollment history | PNG the ones that earn their keep; rebuild or retire the rest |
| Sequences, templates, snippets | Not listed in HubSpot's export index | All of them | Copy the ones in active use into a shared doc |
| Files and attachments | Files tool Export (ZIP) | Record-level attachments are not covered by the files article | ZIP the files tool; spot-check attachments on top deals |
Why is activity history the hard part?
Because it was never one object. Contacts and deals each have an index page with an export button. Notes, logged emails, and meetings sit on the timeline of the records they belong to, and the export index says plainly that you get sales activity data "by creating reports with the custom report builder or using HubSpot's Engagements API" (export your content and data article). The custom report builder is a Professional and Enterprise feature, and its export button is labeled "Export unsummarized data" (custom report builder article). On a Starter tier, your routes are the single-contact export or the API.
The API route works and is the one I would take if a developer is available. Each activity type has its own object endpoint; a GET to /crm/v3/objects/calls returns call records, with an associations parameter for the contact and deal IDs each call belongs to (HubSpot calls API guide), and emails, meetings, notes, and tasks follow the same pattern. What you end up holding is a table of bodies, dates, and record IDs. The importer on the other side needs the same shape; HubSpot's own importer, for comparison, requires a note body for notes, an email body and direction for emails, and a description with start and end times for meetings before it will accept them.
One team we migrated this year did the export the careful way and still hit all three problems at once: duplicate contacts from an old list import that the CSV faithfully preserved, columns that did not line up with what the new system expected, and email and task history that had not come through at all. They ran HubSpot in parallel for weeks while the gaps were found and filled. They did nothing wrong that I can point to. The record export is designed to move records, and the activity layer was never designed to move anywhere.
Planning a migration as an export job is the mistake I would most want to talk you out of. The history you care about, who emailed whom and when, what was on the calendar, which threads went quiet, already exists in the mailboxes and calendars your reps use every day. A CRM that reads those sources directly regenerates most of the timeline on its own, going back as far as the mailbox goes, without a CSV ever touching it. In our own migrations, contacts, companies, and deals import from the file while the activity layer rebuilds from the connected email and calendar, and that connection ends up mattering more than any of the CSVs.
How do you run the migration?
- Inventory the objects and the custom properties. Export all properties from settings and sort by fill rate. Anything under ten percent filled is a candidate to leave behind. Write down every pipeline, every custom stage, every association label, and every workflow you will miss on day one. This list is the migration plan; the CSVs are just the payload.
- Export the records. Contacts, companies, deals, tickets, tasks, and calls, each from its own index page, with "All properties and associations on records" selected. Do this inside the week you plan to import. A three-month-old export is a second dedupe project.
- Export or API-pull the activity you cannot live without. Notes first, because they exist nowhere else. Logged emails and meetings second, and only if your mailbox history does not already cover them. Use the report builder if you have it, the API if you have a developer, and accept that some of this will not come through.
- Connect the mailbox and calendar in the new system before you import. This order matters. If the new CRM reads email and calendar, connecting them first means the timeline is already forming when the records land, and the imported contacts attach to threads that are already there. Doing it the other way round leaves you with empty records and a rebuild that starts from zero.
- Run in parallel for one full sales cycle, with a dedupe pass at the end. Keep HubSpot read-only while the new system does the work. When the cycle closes, compare: which deals show a timeline in the new system that HubSpot never had, and which records came in twice. Merge the duplicates, then turn HubSpot off. Prospects tell us the same thing in slightly different words, one of them last month: "locked in until December but ready to migrate as soon as possible." Running in parallel is what those locked-in months are for.
What does a migration look like in practice?
An illustrative example, with made-up counts; your numbers will differ. A twelve-seat team has 9,000 contacts, 2,100 companies, and 640 deals across three pipelines, plus 22 custom properties and 14 workflows. The properties export shows eight of the 22 with a fill rate under ten percent, so 14 get re-created in the new system and eight are retired on the spot. Two of the three pipelines share stage names with different meanings, which the screenshot step catches; they get renamed before import so nothing lands in the wrong pipeline.
The record exports come to four files. The dedupe on import finds around 400 contacts twice, almost all of them traceable to a conference list uploaded in 2024 with a different email casing. The activity export is where the illustration turns realistic: the team is on a tier without the report builder, nobody has a developer free that month, and so the notes are exported one high-value contact at a time for the 60 accounts in late-stage deals. Everything else is left to regenerate.
Three of the twelve reps connect their mailboxes on day one and the rest follow over the first week. By the end of the parallel cycle, the 640 deals have a timeline reaching back roughly two years, which is further than the notes export would have gone, and the 60 hand-exported note sets sit on top of it. The 14 workflows turn into three: two because they touched billing and one because a rep insisted. The other eleven were doing work the new system does without being told.
What to look for in a tool
If the activity layer is going to regenerate rather than import, the tool doing the regenerating is the decision, and I would ask it four things:
- How far back does it read? A mailbox connection that only captures from today forward rebuilds nothing, and you are back to the CSV.
- Does it match imported contacts and deals to the threads it finds, so a record from the CSV and a thread from the inbox become one timeline rather than two?
- When it is unsure which deal a thread belongs to, does it ask? A person should confirm the ambiguous matches with a tap, and a system that assigns silently will bury its mistakes where nobody looks.
- Does it dedupe on the way in, with the merge visible, so the 400 duplicate contacts are a report rather than a surprise?
Ahoy imports contacts, companies, and deals from the HubSpot CSV and rebuilds the activity layer from the mailbox and calendar you connect, with the migration worked through together during onboarding. The AI prepares the record; the team confirms the matches. If you would rather see what your HubSpot data looks like before deciding anything, the free HubSpot audit goes through your portal with you, and the general free CRM audit does the same for any system, in 45 minutes with nothing installed.
Frequently asked questions
Can you export activity history from HubSpot?
Not from a single button. HubSpot's export documentation says sales activity data comes out by creating reports with the custom report builder, which needs a Professional or Enterprise subscription, or through the Engagements API. A single contact's activities can also be exported from that contact's record. Tasks and calls have their own index page exports, so those two move like records.
Do HubSpot workflows export?
Only as documentation. HubSpot exports a spreadsheet listing each workflow's name, status, enrollment counts, and dates, and a PNG image of an individual workflow, and its documentation states that workflow exports do not include performance data or the workflow's history. No CRM imports either format, so workflows are rebuilt in the new system or retired.
Does HubSpot export email templates and sequences?
HubSpot's index of exportable content has no entry for sequences, email templates, or snippets, and I have not found an export for them elsewhere in its knowledge base. The practical route is to copy the ones in active use into a shared document by hand before the account closes. Most teams find they use far fewer than they created.
How do you migrate HubSpot notes and tasks?
Tasks export from the task view with their properties, association names, and associated record IDs, and import into most CRMs as a task file. Notes have no index page export; they come out through a custom report export, a per-contact export, or the API as rows with a note body, a date, and a record ID. Export notes for the accounts that matter and accept gaps elsewhere.
How long should you run HubSpot in parallel with the new CRM?
One full sales cycle, with HubSpot read-only for the duration. That is long enough for the new system to regenerate activity history from connected email and calendar, for every open deal to move at least one stage, and for a dedupe pass to catch records that arrived twice. A team we migrated needed several weeks; a thirty-day motion needs about that, and a longer motion needs longer.
Related guides: Leaving HubSpot? When to switch · How do you stop logging CRM activity by hand? · Why don't sales reps update the CRM? · CRM security review checklist · Free HubSpot audit · All guides