Systems and records
Why HubSpot exports lose associations and engagement history
By SourceX Editorial · Updated
Short answer
HubSpot exports lose engagement history and the structure of associations because a standard export writes the current property values of one object at a time to a flat file. Associations arrive as columns, not as a link table, and notes, calls, emails and meetings need a separate export. Keep every record ID, then pull associations and engagements through the API.
Key takeaways
- A standard HubSpot export is a snapshot of one object's current property values, not a copy of the record's timeline.
- HubSpot's own help says activities such as calls and notes need a separate export method.
- The record ID and the association links are primary data; without them the history cannot be reassembled.
- Save the owner and user list at export time, or former employees turn into unexplained numbers.
- Run the full export before any clean-up project, because deleted records and activities can only be restored for 90 days.
- Reconcile counts against the live account before anyone cancels or downgrades it.
What does a standard HubSpot export contain?#
A standard HubSpot export contains the current property values of one object at a time, written as a flat file with one row per record and one column per property. HubSpot's knowledge base says the export includes the records' current property values and associations. The record ID column is the thread that ties everything else together, so always include it.
The associations in that file are a convenience view, not a link table. They appear as columns that list associated records inside a single cell, so a contact linked to three deals carries all three in one field. That shows a link exists, but it is awkward to rebuild many-to-many relationships from it, and association labels such as decision maker or billing contact may not come through, depending on the export options you choose.
What the file never holds is the timeline. HubSpot's help says activities such as calls and notes have to be exported with a separate method, not the standard record export. Those activities, often called engagements, are separate objects linked to records through associations. The export also shows only today's value of each property, not the values it held before.
Which pieces go missing, and where do they live?#
The missing pieces of a HubSpot export fall into three groups: links between records, activity on records, and the configuration that gave both their meaning. Each one has a different recovery route.
Owner IDs deserve special attention. An export may show names for current users, but deactivated users from earlier years can appear as bare numbers. Without an owner lookup saved at export time, the who in who-did-what-when is lost.
| Missing piece | Where it lives in HubSpot | How to recover it |
|---|---|---|
| Links between contacts, companies, deals and tickets | Association records, including labels such as decision maker or billing contact | Associations API, pulled for each object pair with its labels |
| Notes, calls, emails, meetings and tasks | Engagement objects on each record's timeline | CRM API endpoints for each engagement type, with timestamps and owner IDs |
| Logged email bodies and threads | Email engagements, shaped by how the inbox integration logged them | Email engagement objects, checked against what the integration actually captured |
| Attachments on notes and emails | The files tool, referenced by file ID | File downloads mapped back to the engagement ID |
| Earlier property values | Property history on each record | API reads that request history for the properties that matter |
| Owners and users | Owner and user records referenced by ID | Owner list saved as a lookup table, including deactivated users |
| Pipelines, stages, workflows and sequences | Account configuration | Pipeline definitions from the API, plus written documentation of automation |
Why associations matter more than any single property#
Associations matter because they turn a pile of records into a sequence. A deal row tells you the amount and stage today; the associated contacts, emails, meetings and tickets tell you how the deal got there, who was involved and what happened after close.
That sequence is what a migration team needs to rebuild context in a new CRM, what an acquirer reviews in diligence, and what AI developers look for in operational records. A support ticket linked to the customer's deal history and the product issue it raised shows a decision and an outcome. The same ticket exported alone shows a complaint with no ending.
Treat the record ID and the association table as primary data, not metadata. If you keep only one thing beyond the property files, keep the links.
How to recover associations and engagement history#
Recovering HubSpot history means pulling three layers through the API: records with their IDs, the association links between them, and the engagements on each timeline. Most teams use a dedicated app or integration token with read-only scopes for each object, owned by an admin account that will outlive the project rather than by a departing employee.
Store the results as raw JSON alongside the CSV files, with a short readme that names the export date, the account, the scopes used and any objects deliberately left out.
- Export every standard and custom object you use, keeping the HubSpot record ID and the created and last modified dates.
- Save the owner list and the user list, including deactivated users, as lookup tables.
- Pull associations for each object pair, such as contact to company, contact to deal, deal to company, ticket to contact and ticket to deal, with association labels.
- Pull each engagement type with its timestamp, owner ID, body and associations.
- Download attachments referenced by notes and emails and store them under their file IDs.
- Record pipeline and stage definitions so stage IDs in old records still resolve to names.
- Reconcile counts against what HubSpot shows in the interface before anyone cancels or downgrades.
What limits shape a full HubSpot pull?#
A full HubSpot pull is shaped by export caps, API rate limits and pagination, not by storage. HubSpot limits how many exports an account can run in a rolling period and how many API calls an app can make, and the limits differ by plan and app type. Check HubSpot's current developer documentation before you plan the schedule.
Engagements usually set the timeline. A busy sales team can log far more activities than it has contacts, and each association pair needs its own calls. Run a small sample first, measure real throughput, and plan the full pull in date windows that can resume after an interruption.
Clean-up can destroy history too. HubSpot lets users restore deleted records, such as contacts, companies and custom objects, and deleted activities such as notes, calls, meetings and tasks, for up to 90 days; after that they are permanently deleted. Run the full export before any de-duplication or purge project, never after it.
| Method | Good for | Watch for |
|---|---|---|
| Interface export of one object | Quick property snapshots | No timeline, partial association columns, export caps |
| Report or list export | Filtered views for one team | Built for analysis, not for a complete copy |
| CRM API through a private app | Complete records, associations and engagements | Rate limits, pagination and scope setup |
| Third-party backup tool | Scheduled copies with restore options | Which objects the tool actually captures |
| Data warehouse sync | Ongoing history for analytics | History from before the connection may need a backfill |
Illustrative: a scheduling software company leaving HubSpot#
Illustrative: a fictional mid-sized B2B scheduling software company decides to move its sales and support teams from HubSpot to another CRM. The first plan is to export contacts, companies, deals and tickets as CSV files and import them into the new platform.
During a test import, the head of revenue operations notices that deals arrive with no notes, no call logs and only one contact each. The CTO pauses the cutover and has an engineer pull associations and engagements through the API, save the owner list, and store a crosswalk from HubSpot record IDs to the new CRM's IDs.
The migration carries open deals and recent activity into the new CRM. Closed deals, ticket threads and years of timeline activity go into an archive with their association tables intact. Months later, a support lead handling a renewal dispute looks up the customer's old HubSpot company ID in the crosswalk and finds the original onboarding emails and call notes in the archive within minutes, without reopening the old account.
How SourceX treats exported CRM history#
SourceX treats CRM history as one candidate record family among several, assessed through the SourceX five-step transaction: Supply, Rights, Preparation, Approval and Delivery. The fit check uses metadata such as systems, years of history, object counts and whether activities link to outcomes; no files are shared at that stage.
One rights question is specific to API exports. HubSpot's developer changelog says its updated Developer Terms restrict using data accessed through HubSpot APIs to train, fine-tune or improve AI models, with a carve-out for legitimate single-customer use cases. Counsel should read the current terms and the company's own agreement before an API export feeds any licensing package.
If a package proceeds, personal and confidential details are removed during Preparation, because CRM emails and notes are full of names and contact details. The SourceX Evidence Packet records provenance, including which export method and scopes produced the data and when, alongside licensing rights, permitted use, the privacy record and release authorization.
Frequently asked questions
Does HubSpot keep a backup I can restore from after cancelling?
Do not count on it. HubSpot's Product Specific Terms say that for Marketing Hub Professional and Enterprise, a written request within 30 days after the term ends gets temporary access to the data or copies of it. For the other hubs, such as Sales, Service, CMS and Operations Hub, HubSpot provides no access after termination. Terms vary by hub and change, so check your order form and export before the term ends.
Can a CSV export include the body of logged emails?
Not reliably. Email activity sits on the record timeline as engagements, and the bodies are best pulled through the API with their timestamps and associations. Check whether your inbox integration logged full threads or only the messages reps chose to log, because that decides what HubSpot ever held.
Do we need a developer for a full HubSpot export?
For a complete copy, usually yes, or a backup tool that a technical lead has checked. The API work is not exotic, but it needs scopes, pagination, retry handling and count checks. Careful engineering time before cancellation costs far less than discovering afterward that the timeline is gone.
How do we keep old HubSpot IDs useful after a migration?
Add a legacy ID field on every migrated object in the new CRM and store a crosswalk table that maps each HubSpot record ID to its new ID. Keep the crosswalk with the archive. Without it, archived engagements cannot be tied back to the records your teams use today.
Can CRM history that includes customer contacts be licensed?
Sometimes, after review. Customer contracts, privacy notices and laws that may apply are assessed deal by deal with counsel, and personal details are removed before anything leaves the company. Buyers usually care more about the sequence of work than about who the contacts were.
Sources
- HubSpot's knowledge base says a record export includes the records' current property values and associations. Source
- HubSpot's export-records article says activities such as calls and notes must be exported with a separate method, not the standard record export. Source
- HubSpot lets users restore deleted records and deleted activities such as notes, calls, meetings and tasks for up to 90 days, after which they are permanently deleted. Source
- HubSpot's Product Specific Terms say that for Marketing Hub Professional and Enterprise, a written request within 30 days after termination or expiration gets temporary access to retrieve, or copies of, Customer Data. Source
- HubSpot's Product Specific Terms say that for the other Hub subscriptions, such as Sales, Service, CMS and Operations Hub, HubSpot will not provide any access to Customer Data after termination or expiration. Source
- HubSpot's developer changelog says its updated Developer Terms restrict using data accessed through HubSpot APIs to train, fine-tune or improve AI or machine learning models, with a carve-out for legitimate single-customer use cases. Source
Related resources
See if your company qualifies
A short company assessment. No data uploads are needed.