How to export your data from HubSpot Marketing Hub

HubSpot exports CRM records as CSV, XLS or XLSX within a 300-per-day limit, but record exports do not cover everything marketing teams run on. This guide maps each documented export path, the gaps, and the sequence for a complete export.

On this page

How to export your data from HubSpot Marketing Hub before the contract ends

If you are facing a renewal, a pricing change, a residency requirement or a lock-in concern, the first thing to know is that HubSpot exports contacts, companies, deals, tickets and custom objects as CSV, XLS or XLSX files, delivered by email link, with up to 300 exports per rolling 24 hours. The HubSpot export records guide covers the record exports. What the export does not give you on its own is a complete copy of the marketing side: forms, emails, workflows, landing pages and the engagement history attached to them need separate handling. Your exit plan should therefore be built around two documented paths, record exports for flat data and the CRM API for anything the export misses.

Record exports carry property values and, in the standard flow, the associations between records that you select, but they are only as complete as the properties and views you choose before running them. Confirm the property list, the association columns and the file format for each object, and check whether your contact list includes non-marketing contacts. The CRM Contacts API supports reading, creating and updating contacts, with batch endpoints limited to 100 records per request, so large volumes, custom objects and fields outside the export need a scripted pull with pagination and throttling. Ask your team or implementation partner to confirm which marketing assets (templates, forms, email content, sequences) can be read through the API in your edition and access level before you assume they can be moved.

The exit itself depends on your marketing contact tier and on the scope of data you intend to move, not on the export mechanism. Only contacts set as marketing contacts count toward the tier and affect subscription cost, so cleaning that status before a final export changes both what you pay during the notice period and what you need to extract. Schedule the exports well before the contract end date, keep each download link within its 30-day window, and store the files in a location you control. Mautic and listmonk are the self-hosted targets for the marketing data once it is out; the migration path itself is covered in the sibling migration guide.

Which HubSpot data exports and in what format

This table compares each HubSpot data type with its export method, file format and documented limits. Read it to see which records a standard export covers and which ones need the CRM Contacts API. The main takeaway is that record exports alone rarely give you a complete migration set.

Data typeExport methodFormat and deliveryDocumented limits
CRM records (contacts, companies, deals, tickets, custom objects)Standard record export from the HubSpot interfaceCSV, XLS or XLSX, sent as an email linkUp to 300 exports per rolling 24 hours
Contact property values and associationsIncluded in record exports when you select the columnsSpreadsheet columns per property, with associations as included fieldsConfirm which association fields your export version includes before relying on them
Marketing contact statusCheck the marketing contact property in the export or in contact recordsPlain value in the exported fileOnly marketing contacts count toward the tier and affect subscription cost
Records and fields that record exports missCRM Contacts API (read, create, update, upsert)JSON responses through the APIBatch endpoints accept up to 100 records per request
Download linksEmail link sent after an export completesFile download from the linkLinks expire after 30 days, so save files to your own storage promptly
Files for the Mautic import stepExport from HubSpot, then import through Mautic's CSV processCSV is the format Mautic imports through its interfaceConfirm column names and encoding match before import

Choosing between record exports and the API

A one-time record export suits a small database that you only need to move once. An admin with export rights in HubSpot selects the object, chooses the properties to include and requests a CSV, XLS or XLSX file. HubSpot sends the file by email link, and the download link stays available for a limited window, so the file should be saved to your own storage promptly. The export carries property values for each record, which covers most of what a Mautic import needs for contacts and companies.

  • Who does the work: an admin with export rights runs the export, and no developer is needed for the file itself.
  • Volume limit: HubSpot allows up to 300 exports per rolling 24 hours, so a large set of separate exports can be slowed by that cap.
  • What it misses: associations between records, such as which contacts belong to which company, are not reliably carried in a flat file, so relationships must be rebuilt.
  • Recurring changes: anything edited in HubSpot after the export is absent from the file, so a freeze date matters.
  • Format handling: spreadsheets can alter leading zeros, dates and multi-value fields, so check them before importing.

Before you rely on a file, confirm with HubSpot's current export documentation which properties and object types your plan includes.

What HubSpot Marketing Hub data does not export through record exports

A record export pulls CRM records with their property values and associations, but much of what makes a Marketing Hub account work sits outside those records. The cards below cover the categories a record export does not capture, the documented path for each where one exists, and what to confirm or rebuild before you cancel anything.

Email and landing page content

Marketing emails, landing pages and their layouts, modules and styling are stored as Marketing Hub assets, not as contact or company records, so a record export leaves them behind. Your reader is likely to ask for the HTML and images, and HubSpot does not hand these over in the record export. Export the rendered HTML and media files yourself, then confirm with HubSpot's documentation which asset types can be retrieved and in what form.

Forms and submission history

Form definitions, field order, validation and follow-up actions are configuration, not records. Submissions are tied to contacts, so the contact export shows form-related properties but not the full submission log with timestamps and page context. Check whether your reporting needs the raw submissions, then confirm with HubSpot whether the Forms API or a submissions export covers your account tier before you rebuild forms in Mautic.

Workflows and automation logic

Workflow branches, enrollment triggers, delays and actions exist only as workflow configuration. A contact export shows the result of past automation (a property value, a list membership) but not the rules that produced it. Document each active workflow before export, because the logic must be rebuilt as Mautic campaigns and segments, and no record export carries it across.

Lists and segment definitions

Static lists export as membership, but active lists are defined by filter criteria that a record export does not return. Without the filter logic, a list of 5,000 contacts (illustrative) tells you who was in it on the export date, not how it will update. Record the filter rules for every active list and confirm with HubSpot's documentation how list definitions can be retrieved.

Reports and dashboards

Dashboards, custom reports and attribution settings are views over data, so they do not travel with a record export. The underlying contacts and deals do, but the report definitions, date ranges and filters do not. Screenshot or document each report your team relies on, then decide which metrics Mautic will produce and which will need a separate reporting layer.

Tracking code and domain configuration

The HubSpot tracking code on your site, the connected domains and any custom domain for hosted pages sit in account settings and website files. None of this exports as contact data, and the tracking script must be removed or replaced on every page once Mautic tracking is in place. Inventory every domain and template that loads the script, and confirm with HubSpot's documentation how domain connections are released when you leave.

The sequence for a complete HubSpot export with verification

This sequence moves your HubSpot Marketing Hub records out in a controlled order, so you finish with a complete copy of CRM records, associations and marketing data that you have checked against the source before you cancel anything.

  1. Inventory objects and properties

    Before you export anything, list every object you need to keep: contacts, companies, deals, tickets, custom objects, forms, email and list membership. For each object, export the property list from HubSpot's settings so you know which fields hold business data, which are calculated and which are internal. Store this inventory in a spreadsheet owned by the migration lead. The step is complete when every object and property you need has a row in the inventory and a named owner for each record type. Ask the HubSpot account owner to confirm which custom objects and properties sit in your portal.

  2. Confirm marketing contact status

    Marketing contact status determines which contacts count toward your tier and which ones your marketing team can email. Review how your portal flags marketing contacts, because a contact that is not set as a marketing contact may still appear in a standard contact export. Record the counts of marketing and non-marketing contacts so you can compare them with the Mautic import later. The check is passed when you can state, from the portal itself, how many contacts carry the marketing flag and whether any consent or subscription status fields must travel with them.

  3. Schedule exports within the daily limit

    HubSpot allows up to 300 exports in a rolling 24 hours, so a large portal needs a schedule rather than a single pass. Split work by object type and by view or list, and run the exports in batches that never exceed the daily cap. Keep a log that records each export name, the object, the filter applied, the file format and the time it started. Respect the rule that no more than three exports run at once. The check is that your log totals fewer exports than the daily limit for each day and that every planned export has a status of started or complete.

  4. Download files within the link window

    HubSpot sends each finished export by email as a download link, and those links expire after 30 days. Download every file to encrypted storage that your organization controls as soon as it arrives, and do not rely on the email alone. Store the files with a checksum and the export log entry that produced them. The step is complete when each file opens, its checksum is recorded and its row count is noted in the log. If a link has expired, rerun that export rather than trying to recover the old file.

  5. Script API pulls for associations and gaps

    Record exports cover properties and many associations, but they can miss relationships and some data that you need for a faithful move. Use the CRM Contacts API and the associated object endpoints to pull contact-to-company, contact-to-deal and other links that your export did not capture. Batch endpoints accept up to 100 records per request, so write the script to page through IDs and respect rate limits. Write the output to versioned files. The check is that a sample of 20 contacts returns the same associations in the API response as you see in the HubSpot record view, and that the script logs any error or skipped record.

  6. Reconcile record counts against the source

    Compare the number of records in each export file with the count shown in HubSpot for the same object and filter. Count rows, unique IDs and marketing contacts separately, because duplicates and blank rows can distort a simple total. Investigate every difference and record the cause in the inventory. The step is complete when each object shows a matching count or a documented explanation for each gap, and when the marketing contact count matches the figure you captured in the second step.

  7. Sample fields and relationships against the source

    Select a random sample of records from each object and compare every important field in the export with the live HubSpot record. Check dates, time zones, multi-select values, lifecycle stages, owner fields and consent status, since these often change format in a CSV. Confirm that association links in the API output match the records they point to. Have a second person review the sample so the checker is not the same person who built the export. The check passes when the sample shows no unexplained differences and the reviewer signs the inventory.

Questions buyers ask before exporting HubSpot data

How much effort does a complete HubSpot export take?

The effort depends mainly on how many records you hold, how many associations you need to keep, and how many custom objects sit alongside contacts and companies. A small database with a few hundred contacts and standard properties can be exported through the interface in a short session. A large portal with years of contact history, deals linked to companies and tickets, and several custom objects takes more planning, more file handling and more checks afterward. HubSpot's record export covers contacts, companies, deals, tickets, custom objects and other CRM records as CSV, XLS or XLSX files sent by email link, so the work is largely about organizing the files and verifying them. Ask for a written inventory of object counts and association types before any estimate, because that inventory is what turns a vague effort into a scoped one.

Can our team export HubSpot data without outside help?

Yes, a marketing operations or CRM administrator with access to the account can run record exports from the interface without outside help. The limits are practical rather than technical: exports arrive by email link, files must be checked for property values and associations, and anything the interface does not carry must be pulled separately. Teams with a small number of object types and a clear idea of what the new platform needs often handle the export in-house and bring in help only for the harder parts. Teams that need repeatable pulls, complete association graphs or a sync that runs during cutover usually find that scripting against the API is the point where internal skills run short. Confirm internally who has super admin rights and who can read the export files before you start.

What does the work need from admins and developers?

Admins need account permissions to run exports, a clear list of the objects and properties to keep, and time to review the output. Developers are needed when the export must go beyond the interface. The CRM Contacts API supports reading, creating, updating and upserting contacts, and its batch endpoints are limited to 100 records per request, so a script must page through data, handle retries and log failures. Developers also map HubSpot property names and internal IDs onto the fields your target system uses, and they handle any dedupe logic. Plan for a named owner on each side, a test export on a sample of records, and a documented reconciliation step that compares counts between HubSpot and the new database.

How does the 300-per-day export limit affect timing?

HubSpot allows up to 300 exports per rolling 24 hours, so the limit is about the number of export jobs, not the number of records in each file. Teams should plan exports by object type and by date range, run the largest jobs first, and leave time to rerun a job that fails or returns an incomplete file. Because the window is rolling, a burst of test exports can block the production export you need later the same day. Schedule test runs early, keep a log of every export job with its object type and time, and avoid running several exports at once from different admin accounts. Confirm with HubSpot's current documentation how the limit applies to your account type before you set a cutover date.

What should we do about 30-day download links?

Download the file and store it in a controlled location as soon as the export email arrives. The export guidance in HubSpot's knowledge base describes emailed links that expire, and the exact window should be confirmed in the documentation for your account. Do not rely on an email in a personal inbox as the archive. Save each file with its object type, export date and the HubSpot account name, record a checksum, and keep a copy in encrypted storage that your security team approves. If a link expires, run the export again, which counts against the daily limit. For regulated data, the storage location and access log become part of the migration evidence you may need to show later.

What does the interface export miss, and how do we get it?

Record exports do not reliably give you everything in one pass, especially for complex association graphs, engagement history and custom objects with many links. Teams usually need the API for these gaps. Before you write scripts, list every record type and association you must keep, then test whether each one appears in the file. Items that often need separate handling include email engagement, form submissions, and marketing contact status. Marketing contact status matters for the new platform because only contacts set as marketing contacts count toward HubSpot's contact tier. Confirm each gap with a sample record in your own portal before you assume it is covered.

Should a consultant or partner scope the HubSpot export?

A consultant or partner is worth considering when the export affects a live marketing operation, personal data needs controlled handling, or the target platform needs a clean import. DeployOpen plans, implements and documents self-hosted open-source platforms in your own infrastructure, and most engagements are fixed-scope with scope, deliverables and timelines agreed in writing before work starts. DeployOpen does not publish a price list, so the quote follows from the written scope. Ask any provider for a written statement covering the object inventory, the export method, the API work, the file storage and checks, and the reconciliation report. Ask who performs the work, how data is handled during transfer, and what happens to any copies after the project ends.

What do we need to confirm before estimating cost?

Estimates depend on inputs you control, so gather them first: object counts by type, the number of associations to preserve, the number of custom objects, the marketing contact count, and the target system's import method. Cost components include internal staff time, any consultant fees, API development, storage for exported files, and reconciliation. Some items are one-time, such as the export and mapping work, while others recur if you keep HubSpot running during a transition. The major cost driver is usually the number of record types and links, not the file size. Ask any provider to price each component separately so you can see which parts you can take in-house.

What to plan before the HubSpot renewal or termination

Exporting records is only one part of leaving HubSpot Marketing Hub. The items below cover the contract, the data, the automation you will need to rebuild and the compliance records that must survive the move. Each one is a decision or risk to settle before access changes, not after.

Confirm the marketing contact tier

Billing depends on contacts set as marketing contacts, so the count you pay for may differ from the total records in your portal. Before the renewal date, pull the current marketing contact count and the tier it places you in. Ask HubSpot in writing for the renewal price, the notice period and whether any unused tier or prorated refund applies if you cancel mid-term. Keep that written answer with your exit plan.

Export a full copy early

Run record exports for contacts, companies and any custom objects while the account is fully active, rather than waiting for the last month. HubSpot limits exports to 300 per rolling 24 hours, and download links are time limited, so a large portal can take several working days to cover. Store each file in a location you control and record which export produced which file, so a later gap can be traced.

Inventory active workflows and forms

Exports carry records, not the logic that acts on them. List every active workflow, form, email template, landing page and list that sends or captures data. For each one, note its trigger, its branches and the system it writes to. This inventory becomes the rebuild backlog for Mautic and shows which automations will stop the day the subscription ends.

Decide whether HubSpot CRM stays

Marketing Hub and the HubSpot CRM can be separated, but sales data often depends on marketing sync. Decide whether sales keeps HubSpot CRM, moves to another CRM, or retires it. If CRM stays, you will need a sync between it and Mautic, and the contact tier on each side may change. Confirm in writing with HubSpot which objects and associations remain available if you downgrade or cancel only one hub.

Keep consent and suppression records

Opt-in dates, unsubscribe events, bounce suppressions and consent wording are the records most at risk of being lost in a format change. Export them as a separate, labeled dataset with timestamps and source fields, and keep them with the contacts they describe. Do not import a contact into Mautic without its suppression status. Ask HubSpot which of these fields and event histories it includes in exports and which it does not.

Set a verification sign-off

Agree a written acceptance test before the old portal closes. Compare record counts, sample contacts across each list and check that suppressed addresses stayed suppressed. Assign one named owner to sign off each area, including marketing, sales and compliance. Keep the signed checklist with the retained exports so you can show what was moved, when, and by whom.

What the exported data needs before Mautic can use it

An export is a starting point, not a loadable dataset. The HubSpot file tells you what records existed, but it does not tell you whether each contact may still receive marketing email. Before loading anything into Mautic, confirm how consent and suppression status appear in the export, which columns carry opt-in or unsubscribe state, and whether bounced or unsubscribed addresses are flagged in a way you can filter on. Check field types as well. Dates exported in one format, multi-select values joined with separators, and phone numbers with mixed country codes all need normalizing so that Mautic's fields accept them. Decide who owns each contact record, particularly where HubSpot CRM and Mautic will both hold data, because the owner determines which system is the source of truth after cutover.

Mautic's contact import accepts a CSV file through the user interface and maps columns to fields automatically, which makes a small test file a useful first step. For large files, the project recommends running the mautic:import console command from cron so the import happens in the background. By default, the command processes rows in batches of 100. Test the mapping on a sample of a few hundred rows, confirm that the header names match the fields you created in Mautic, and check that duplicate email addresses resolve the way you expect before running the full file. Your team or implementation partner should run the background job on the server that will host Mautic, because it needs the same database and configuration the web interface uses.

Your team must confirm its own consent records before any import. The export shows what HubSpot recorded, but the legal basis for each contact, the date and source of consent, and any regional rules that apply to your audience are decisions your organization owns, and they should be documented outside the file. Ask your legal or privacy lead which records count as valid consent for each region and campaign type, and whether contacts who unsubscribed in HubSpot must stay suppressed in Mautic. Keep the suppression list as its own file, import it first, and verify that those addresses cannot receive campaign email after the load. Retain the original export under your retention policy so that you can answer later questions about where a contact's consent came from.

How DeployOpen scopes and delivers a HubSpot data exit

DeployOpen plans and delivers the export work behind a HubSpot data exit inside your own infrastructure, as a fixed-scope engagement agreed in writing before work starts. The work covers which HubSpot records leave, how they are validated, and where they land in your environment, so the exit is documented and repeatable.

How we scope

  • We inventory which HubSpot objects, properties and associations your export must include, such as contacts, companies, deals and tickets.
  • We map the 300 exports per rolling 24 hours limit and the three-at-once limit against your record volume to plan export batches.
  • We agree in writing which records need the API instead of the standard export, and which deliverables and timelines apply.

How we build

  • We set up the export runbook and a staging store in your own cloud account or data center, so files never pass through a third party.
  • We script the API pulls for data that record exports miss, using the CRM Contacts API batch endpoints limited to 100 records per request.
  • We reconcile row counts, association links and property values against the source before any file is treated as complete.

How we hand over

  • We deliver the export scripts, schedules, mapping tables and reconciliation reports in documents your team can rerun without us.
  • We document the 30-day download link window so your team downloads and stores each file before the link expires.
  • We walk your administrators through the runbook and record the handover evidence your compliance reviewers may request.

How we support

  • Ongoing support, upgrades and continuous testing are available as a retainer if your team wants help during a longer migration.
  • We can repeat an export for updated data before cutover, and document the differences between runs.
  • Compliance evidence is prepared for your independent auditors, since DeployOpen does not issue audit reports or certifications.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.