How to export your data from HubSpot before you leave
A renewal, a seat price increase, a data residency requirement or simple lock-in concern usually forces a full HubSpot extraction, and the plan has to start with what HubSpot will actually hand over. HubSpot record exports cover contacts, companies, deals, tickets and custom objects, including their property values and associations, and they can be saved as CSV, XLSX or XLS files. Export limits and email delivery shape the rest of the plan, so schedule the work around them rather than discovering them during cutover. The export permission is the first decision. Only users with export permissions can run record exports, so confirm which admins hold that role before the project begins. Associations are included by default, but each association column carries up to 1,000 associated record IDs plus the associated record name. A contact tied to more than 1,000 deals or companies will therefore arrive truncated, and the target system will need a separate reconciliation step for those records. Ask your HubSpot administrator to identify high-association records early.
Plan for the file format limits. HubSpot splits CSV and XLSX exports into multiple files after 1,000,000 rows and XLS exports after 65,535 rows, and XLS allows 256 columns while XLSX allows 16,384. CSV has no column limit, which makes it the safer format for wide custom object exports. HubSpot also limits you to 300 exports in a rolling 24-hour window and three running at once, so a large portal needs a sequenced export calendar. Delivery is by email with a download link that expires after 30 days, and files larger than 2MB arrive zipped. Download and store every file in your own controlled location as soon as it arrives. Items that the record export does not document, such as email content, attachments and files, need separate confirmation with HubSpot before you assume they are included.
Which HubSpot records you can export and in what formats
This table shows which HubSpot record types the export tool covers, the file formats available, and the row, column and association limits that affect a full extraction. Read the format rows together with the rate limits, because large portals usually hit the file and column caps before they hit the export count.
| Item | What HubSpot provides | What to plan for |
|---|---|---|
| Contacts, companies, deals, tickets | Exportable with property values and associations included | Confirm your user has export permission before planning the run |
| Custom objects | Exportable through the same record export tool | Check that each custom object appears in your portal's export options |
| File formats | CSV, XLSX or XLS | CSV has the fewest structural limits, so it suits full-fidelity extraction |
| Rows before file split | 1,000,000 for CSV and XLSX, 65,535 for XLS | Large contact sets arrive as several files that need recombining |
| Column limits | 256 for XLS, 16,384 for XLSX, none for CSV | Wide property sets can break XLS or XLSX exports |
| Associated IDs per column | Up to 1,000 IDs plus the associated record name by default | Records with more associations than this need a second extraction path |
| Export rate limits | 300 exports per rolling 24 hours, three running at once | Split extraction across objects and dates to stay within these caps |
How association caps and row limits change the extraction plan
The first decision is whether your records fit inside the default export shape. By default, each association column in a HubSpot record export holds up to 1,000 associated record IDs plus the name of the associated record. A contact with a few dozen company or deal links will export cleanly, but a company record with a very large number of associated contacts may not. Before you build the plan, pull a sample of your highest-association records and count their links per object type. Then confirm with HubSpot's export documentation how associations beyond that cap are represented and whether a separate association-level extraction or an API read is the supported route for the full set. Do not assume the export is complete for those records until you have checked.
Row thresholds change how you reassemble the data. HubSpot splits CSV and XLSX exports into multiple files after 1,000,000 rows and XLS exports after 65,535 rows, so a large contact export arrives as several files that must be joined on the record ID column before import. Keep the record ID and every association column in each file, and write a short script or spreadsheet check that confirms the row count of the combined set matches the count shown in HubSpot for the same view. The column limits matter too: XLS allows 256 columns and XLSX allows 16,384, so a wide export with many custom properties may need CSV to avoid losing fields.
Export concurrency sets the pace for a large portal. HubSpot allows up to 300 exports in a rolling 24-hour window and up to three exports running at once, so an extraction split by object, view and date range has to be queued rather than fired in parallel. Plan the batches so that a failed or incomplete export can be rerun without consuming the whole daily allowance, and log each export's name, date range and row count as you go. Ask your HubSpot administrator which accounts hold export permissions, because a batch that stalls on a permission gap can waste slots you cannot recover that day.
What HubSpot exports leave out and how to recover it
A HubSpot export gives you record properties and associations, but it does not give you everything a CRM holds. The cards below cover the categories that the export documentation does not list as exportable, with a recovery path for each. Confirm every gap against HubSpot's current documentation for your Hub and your edition before your subscription ends.
Email content and threads
Email bodies, threads and attachments logged against contacts and deals are the item most teams assume will come across in a CSV. Treat them as a separate extraction. Ask HubSpot in writing which email data its exports and its API expose for your portal, and whether attachments are included. For the parts that are not exposed, keep a dated archive of the mailboxes that sent the messages, because the CRM record will hold only the activity metadata you exported. Check which of these copies your legal and records teams need to keep.
Uploaded files and attachments
Files attached to records, such as contracts, quotes and signed documents, are stored as files in HubSpot's file manager, not as properties. Confirm with HubSpot whether file download is available through the export, the file manager or the API, and at what volume. If bulk download is limited, script retrieval through the API with a private app token, record each file's original record ID and checksum, and store the files in your own object storage so links in the target CRM point to your copies.
Conversation and chat history
Live chat transcripts and conversation threads from the inbox are a separate data type from email. Confirm with HubSpot which conversation data is exportable for your Hub, whether through the export, the conversations API or a support request. Where transcripts cannot be extracted, export a summary of each open ticket and the contact it belongs to, and keep a read-only archive of the conversations you must retain for support or dispute purposes.
Marketing data: forms, lists and consent
Form submissions, static and active lists, email subscription status and consent records drive marketing and compliance decisions. Export the contact property for email opt-in and the subscription status fields, and confirm with HubSpot which submission history and consent logs it provides. Rebuild lists in Mautic only after you have checked that each contact's consent evidence came with them. Do not copy a subscriber list into a new sender without that record.
Workflows, sequences and reporting
Workflows, sequences, dashboards and reports are configuration, not record data, so they will not appear in a record export. Document each active workflow, its trigger, its actions and its owner before you cancel, using HubSpot's own screens. Rebuild the logic in the target tool using the exported stage history and properties. Expect historical dashboards to be lost unless you export their underlying data and recreate the reports.
Audit history and the export log
HubSpot keeps the export log for a set period, and the exports you run are the only evidence of what left the portal and when. Retain copies of each export file and its log entry in your own archive. Ask HubSpot to confirm the retention period for the audit and activity logs in your account, since these records may be needed for an investigation or a compliance review after the contract ends.
The sequence for a complete HubSpot export with verification
This sequence turns a HubSpot portal into a complete, checked set of export files that can be reconciled against the live portal before anything is deleted. Each step closes with a check, so gaps show up while the source data still exists.
Inventory objects, properties and associations
Before exporting, list every object in scope, including contacts, companies, deals, tickets and any custom objects, along with the properties and association types each one uses. Someone with admin access should record the record count per object from the portal's own views so there is a baseline. The check is a signed-off inventory sheet where every object has a count and every association type you rely on is named.
Confirm export permissions for each user
Only users with export permissions can run record exports, so confirm which named accounts will run the extraction and that each one can see every object on the inventory. Keep the export runner separate from the person who will review the files so the chain of custody is clear. The check is a test export of a small object set by each runner, which confirms the permission works before the full run.
Schedule exports within daily and concurrent limits
HubSpot allows up to 300 exports in a rolling 24-hour window and up to three exports running at once, so plan the queue around those caps rather than starting everything together. Record each export with its object, date range and filter so you can match files to the inventory later. The check is an export schedule log that shows every planned job, its start time and its status, with no job silently dropped.
Retrieve files from the emailed link
HubSpot delivers each export by email with a download link that expires after 30 days, so download and store the files promptly rather than leaving them in an inbox. Save each file under the job ID from the schedule log and keep the original email as a record of when the export was produced. The check is a file manifest that matches every completed export to a downloaded file, with any expired or failed link flagged for a rerun.
Keep zipped files intact
HubSpot zips files larger than 2MB, so most full extractions will arrive as archives rather than plain CSV or XLSX. Do not unzip into the working folder until the archive has been copied to protected storage and its checksum recorded. The check is that each archive opens cleanly, the file count inside matches the manifest, and the checksum is stored beside the original.
Archive the export log entries
HubSpot keeps exports in the export log for 3 years, so record the log details for every job in your own register while the entries are still available. Include the job, requester, object, format and delivery date so the extraction can be explained to an auditor or a successor later. The check is a register where each export in the log has a matching entry, and any export missing from the log is investigated before the portal is changed.
Reconcile counts and association IDs
Compare the record counts in your files with the baseline from the inventory, taking care with files that were split after 1,000,000 rows for CSV and XLSX or after 65,535 rows for XLS. Then check that association columns carry the associated record IDs, noting that they include up to 1,000 IDs per association column by default, so any record with more associations needs a separate check. The check is a reconciliation report with zero unexplained differences in counts and a sample of association IDs confirmed against the live portal.
Hold the portal until sign-off
Keep the HubSpot portal unchanged until the reconciliation report has been reviewed and signed by the data owner. Confirm which data is excluded from record exports, such as email content and attachments that need their own process, and document how each gap will be handled. The check is a written sign-off that lists every exception and names who accepted it, and only after that decision is any deletion scheduled.
Choosing between the export tool, the API and a consultant-run extraction
The record export tool is the documented route for most teams. A user with export permissions selects records such as contacts, companies, deals, tickets or custom objects, and HubSpot returns the property values and associations as CSV, XLSX or XLS files. The work is done by your own CRM administrator, who needs export permission in the portal and enough time to run and check each export. It fits portals where the record counts are modest and the associations are simple.
- Permissions: Only users with export permissions can run exports, so confirm who holds that role before planning.
- Limits: HubSpot allows up to 300 exports in a rolling 24-hour window and up to three running at once, which shapes how many batches you can queue in a day.
- Associations: Each association column carries up to 1,000 associated record IDs by default, so check for contacts linked to more companies or deals than that.
- Delivery: Files arrive by email as links that expire after 30 days, so download and store them promptly.
- File splits: Large CSV and XLSX exports split into multiple files after 1,000,000 rows, and XLS exports after 65,535 rows.
Before relying on this route, confirm the current limits in HubSpot's export documentation and test one export of each object type.
API-based extraction suits large portals, association-heavy data models and teams that need repeatable runs. An engineer writes scripts that read records, properties and associations through HubSpot's APIs, paginates through results, respects rate limits and writes the output to your own storage in a format that loads into the target CRM. The work is done by a developer who knows the HubSpot API and the target schema. It gives you control over completeness, retries and the association mapping, but it needs more build and test time than the export tool.
- Association handling: Read associations explicitly so that links beyond the export tool's default ID cap are captured.
- Rate limits: Build backoff and retry logic so long runs complete without losing batches.
- Repeatable runs: Run a full extraction and a delta run close to cutover, and log every batch.
- Coverage: Confirm which objects, custom objects and engagement records your scripts will read, because some data needs separate endpoints.
- Reconciliation: Compare record counts per object against the portal before you declare the extraction complete.
Ask the developer to document the endpoints, rate-limit handling and reconciliation checks in writing, and to confirm the HubSpot API plan and scopes they will use.
A fixed-scope extraction by an outside team moves the build, run and checks to a provider that agrees deliverables in writing before work starts. You stay responsible for decisions about what data is in scope, who approves the output and how it is stored. The provider, such as DeployOpen, plans the approach, runs the export tool or API work, validates the output and hands over files and a record of the checks. This route suits portals with heavy associations, regulated data, short internal teams or a deadline you cannot absorb in-house.
- Scope: Ask for a written list of objects, properties, associations, file formats and destination storage.
- Validation: Request record counts, association checks and sample reconciliation reports for each object.
- Data handling: Confirm where extracted files are stored, who can access them, how long they are kept and how they are deleted.
- Access: Specify the HubSpot access the team needs, the duration of that access and how it is revoked.
- Handover: Agree the format of the output and any documentation the team will leave behind.
Request a written scope that states what is excluded, such as email content or attachments, so that gaps are known before cutover. Pricing follows from that scope, so ask for a quote tied to the same document.
What to plan before the HubSpot contract ends
Export work depends on decisions made before the contract date: when the extraction runs, who can perform it, how long HubSpot keeps data, and whether the target system is ready to receive it. The cards below cover each decision and what to confirm with HubSpot and your own legal or compliance team before you commit to a date.
Export window relative to contract end
Schedule the full extraction well before the contract end date, not on the last day. HubSpot limits exports to 300 in a rolling 24-hour window and three running at once, and large portals often need several passes across objects. Confirm with HubSpot whether access to export tools or the account itself changes at termination, and build a buffer for re-runs if a file fails or a download link expires.
Admin and export permissions
Only users with export permissions can run record exports, so confirm who holds those rights before the contract ends and who will hold them during the migration. Assign named owners for each object, and record which accounts were used. Ask HubSpot whether any seat holders will lose access at termination, and whether a super admin can be retained for the extraction period.
Associations and property coverage
Associations are the part of an export most likely to be incomplete. Confirm which properties, custom objects and association labels are in scope, and whether your exports capture the association columns you need for contacts, companies, deals and tickets. Document the defaults and any caps so the target system does not silently lose links between records.
Data retention and deletion timing
Ask HubSpot how long data remains after termination, when deletion starts, and whether deleted or archived records can still be exported. Confirm with your legal or compliance team which retention period applies to personal data, consent records and email history, and whether any copies must be deleted from HubSpot on a fixed date. Put these answers in writing before you schedule the move.
Target system readiness
Export files are only useful once the destination can import them. Confirm the target schema, field types, user accounts and pipeline stages before the final extraction, and run a test import on a sample set. For EspoCRM, review its import documentation to plan the mapping. Agree who signs off on the test results and what counts as a successful import.
A verified archive of the source data
Keep a complete, checksummed copy of every export outside HubSpot, with a manifest listing object, date, row count and file name. Export logs are kept for a period, but downloaded links expire, so do not rely on them as the archive. Have your compliance team confirm where the archive is stored, who can access it, and how long it must be kept after the migration is closed.
Questions buyers ask before exporting HubSpot data
How long does a full HubSpot export take?
No single duration is published for a full portal export, so the answer depends on what you export and how you schedule it. The main drivers are the number of records per object, how many properties and associations you include, and the export limits that HubSpot applies. HubSpot allows up to 300 exports in a rolling 24-hour window and up to three exports running at once, so a portal with many objects, or one that needs several passes, is planned in batches rather than run in one go. Ask your implementation partner for a written extraction plan that sequences objects, states the number of export runs, and shows where each batch will be checked before you rely on it.
Can we export HubSpot data ourselves without a partner?
Yes, a HubSpot user with export permissions can export records such as contacts, companies, deals, tickets and custom objects as CSV, XLSX or XLS files. The harder part is the surrounding work: splitting exports within the row and column limits, checking that associations and property values landed correctly, and keeping an archive that still makes sense in your new system. Teams with a small portal and a single admin often manage the first pass alone. Larger portals, regulated records or a move into a new CRM usually benefit from an outside review of the extraction plan and the verification steps.
What do we need from our HubSpot admins for the export?
Your admins need to confirm who holds export permissions, which objects and custom objects are in scope, and which properties are still in use. They also need to decide which associations matter, because the export carries association data that must be mapped to the target system. Ask admins to list custom objects, pipelines, property groups and any integrations that write data into HubSpot, so the extraction covers them. Plan for an admin to be available during the export window to answer questions about property meaning, deleted fields and archived records.
What does a HubSpot data export cost, and what drives it?
The export itself has no published per-export fee in the sources we reviewed, so cost comes from the work around it. Components include tooling (scripts or an ETL job if you go beyond manual downloads), staff time from admins and engineers, verification of row counts and associations, and hosting for the archive and the target system. One-time costs cover the first extraction and mapping. Recurring costs appear only if you keep syncing or re-export during a phased move. When you request a quote, ask for each component separately, the assumed portal size, the number of export runs, and who performs verification and sign-off.
Are HubSpot associations fully preserved in an export?
Not automatically in full. HubSpot includes associations in record exports, but by default each association column carries up to 1,000 associated record IDs plus the associated record name. Records with more associations than that cap will be incomplete in a single export column, so you need to check high-volume contacts and companies for truncation. Plan a second pass or a separate association export for those records, and compare counts against HubSpot before you treat the migrated relationships as complete.
What happens if a HubSpot export download link expires?
HubSpot delivers exports by email with a download link that expires after 30 days, so an unclaimed file becomes unavailable. Exports larger than 2MB are zipped, which your team should expect when scripting downloads. The export log keeps a record of past exports for 3 years, but the log does not replace the file itself. Save each file to your own controlled storage as soon as it arrives, record its name and checksum, and re-run the export if a link lapses. Confirm the retention and link behavior with HubSpot for your account before you rely on it.
How do we check that an export is complete and correct?
Start by comparing record counts for each object against the counts shown in HubSpot, then sample records to confirm property values and associations. Watch for file splits: HubSpot divides CSV and XLSX exports into multiple files after 1,000,000 rows and XLS exports after 65,535 rows, and XLS allows 256 columns while XLSX allows 16,384. Check that every part file is present and that column counts match the header. Keep a short verification log with dates, counts and the person who signed off, since that record supports later audits.
Does a HubSpot export include attachments, email and marketing data?
Record exports cover objects with their property values and associations. They do not, by themselves, give you a complete archive of marketing email history, forms, lists or every file attached to a record. Confirm each category separately with HubSpot and your implementation partner, and decide where marketing data will live before the move starts. Consent and suppression records need particular care, because they must carry over with the contacts they describe.
What to do with the export once it is in your hands
The exported files are a starting point for the target system, not the migration itself. Store them in a controlled location, such as a restricted file share or object storage bucket inside your own network, under access rules your security team has approved. HubSpot delivers exports as a download link by email, and that link expires after 30 days, so move the files out of personal inboxes and downloads folders on day one. Confirm who may open them, whether contact fields in the files fall under your privacy and retention commitments, and how long you must keep the export log and source files before deletion.
Before you load anything, record what you extracted. For each object, keep the row count, the list of files and their sizes, the export date and the exact property and association columns included. Compare these counts with the record totals in HubSpot at export time, and calculate checksums for each file so you can prove later that the copy was not altered. Remember that exports split into multiple files once they pass HubSpot's row thresholds, so the count check must cover every part. Treat mapping properties to fields and rebuilding associations as a separate workstream. Extraction proves the data left HubSpot. Mapping proves it arrived in the right shape.
Once the extraction is verified, use the sibling migration topics for your chosen target. The EspoCRM migration guide is a natural reference point for the import tooling and API behavior of the target itself, but the step-by-step work sits in the sibling topics: Migrate from HubSpot to EspoCRM, Migrate from HubSpot to SuiteCRM and Migrate from HubSpot CRM to Twenty. Pick the one that matches your target and follow its mapping and load steps. Confirm with your implementation partner which of these targets fits your data model before you start building the mapping file.
How DeployOpen scopes and delivers a HubSpot data exit
DeployOpen plans and runs the extraction as a fixed-scope engagement inside your own infrastructure, so HubSpot exports land on systems you control. We agree the object list, association handling, export schedule and verification checks in writing before any export starts.
How we scope
- Inventory every HubSpot object, custom object, property and association that the target CRM must receive.
- Map export files to row limits, column limits and association caps so the extraction plan fits your portal size.
- Agree the export schedule against the daily export limit and concurrent export limit, with the written scope fixing deliverables.
How we build
- Set up a receiving environment in your cloud account or data center to hold export files, logs and checksums.
- Script repeatable exports and retrieval so download links are collected before their 30-day expiry window closes.
- Run test extractions on a sample portal, then reconcile record counts and association links against HubSpot before full runs.
How we hand over
- Deliver a documented data map linking HubSpot objects, properties and associations to the target schema.
- Provide a reconciliation report with counts, failed rows and open exceptions, plus the scripts used to produce them.
- Hand over runbooks so your team can repeat or audit the extraction without DeployOpen involvement.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- Confirm with your team which HubSpot export permissions and retention needs apply before the engagement starts.
- Ask any provider quoting this work to itemize scope, deliverables and what your own staff must supply.

