Migrate HubSpot to Attio: What Moves, What Doesn't
Three ways to migrate HubSpot to Attio: Attio's free Import2 flow, a CSV import, or Shuttio. What moves, what stays behind, and how to check the result.
Last updated: 16 October 2026
You can migrate HubSpot to Attio three ways: Attio's built-in Import2 flow, a CSV import, or a migration tool. If you are a workspace admin on an Attio Plus, Pro or Enterprise plan, start with Import2. It is free from the Migrate button. Use CSV when you want full control, and a tool or agency when you want a record-level check or a way back.
How to migrate HubSpot to Attio: which route fits
| Route | Cost | Fits when | Limit |
|---|---|---|---|
| Import2 from Attio's Migrate button | Free; Plus, Pro or Enterprise; admins only | Companies, people, deals and custom objects, with no special wishes | Undo removes records but leaves attributes and lists |
| CSV import | No extra tool | Small sets, or data you want to clean by hand | You export, map and order the loads yourself |
| Shuttio | Free into Attio at any record count | You want a free random sample, a per-record report and a rollback | Moves data only; you rebuild automations by hand |
| Agency | Craftt's Sprint costs $2,500 for 7 days | The data model needs redesign, not only moving | Cost and calendar time |
What moves and what stays behind
Contacts become Attio People, Companies stay Companies and Deals stay Deals. Craftt says tickets have no direct equivalent: most teams rebuild them as a custom object or move support into a dedicated tool.
Craftt lists these as not moving: marketing emails, sequences, landing pages, forms, CTAs, lead scoring and chat (Craftt). Call recordings are not part of the Import2 migration.
One decision belongs to you. Check whether any HubSpot deal pipeline holds work that is not sales, such as onboarding or renewals. Decide before any load whether that work stays in Deals.
Prepare HubSpot before you export
Craftt lists, among others, two HubSpot settings to turn off before an Import2 move: the default assignment of company owner to contacts, and the automatic creation of companies from contacts. Keep the HubSpot record ID in every export. You need it later to link records and to check results.
Export from HubSpot: three limits
HubSpot's native export has three limits you can plan around (HubSpot):
- Export count. HubSpot allows 300 exports in a rolling 24 hours and three running at once.
- Associations. A column holds up to 1,000 associated record IDs by default. "All associated records" exists for CSV only. Contacts with several emails and companies with several domains need a checkbox ticked to export all values.
- Activities. The record export downloads property values and associations. HubSpot points to separate exports for activities such as calls and notes.
HubSpot zips a CSV export over 2 MB automatically. A CSV or XLSX export over 1,000,000 rows arrives as several files.
A worked example
Say a team has 9,000 companies, 40,000 contacts and 3,000 deals. That is three exports, far under the 300 cap. One company has 1,400 associated contacts. With default settings its association column keeps 1,000 IDs, so the other 400 contact links are cut off. HubSpot offers an "All associated records" option for CSV exports. Check in a test export that it keeps all 1,400.
The same team has contacts with two emails each. Without the checkbox for all values, the second email never reaches the file.
Map properties type by type
| HubSpot | Attio | Trap |
|---|---|---|
| Deal stage | Status | Matches on stage label (case-insensitive) or stage ID |
| Dropdown, multiple checkboxes | Select, multi-select | A multi-select option label cannot contain a comma; on update, multi-select values are added, not replaced |
| Deal Amount | Currency | One currency per attribute |
| Contact Owner | Record owner | Attio matches by membership ID, then email, then full name, then first name; no match, or several, fails validation |
If your deals carry amounts in two currencies, you need two attributes or a conversion before the load.
Load order
Load companies first, then people linked to companies, then deals linked to both, then notes, activities and custom objects (Craftt). In a CSV, specify a unique attribute for the linked record, such as Domains or Record ID.
Option 1: Import2 from Attio
Per Attio's help page, Import2 moves companies, people, deals, custom objects, notes, tasks and files. Enable any non-default standard objects you want to migrate, such as Deals, in Attio before you start.
Its limits:
- It maps companies, people and deals to objects, not lists. Attio says to use the CSV importer to import into lists.
- It matches existing Attio records by email and domain and does not update their attributes. Notes and tasks are still added.
- The sample migration creates new attributes in your workspace.
- Undo removes imported records only. Lists, attributes and other structures stay.
Craftt reports that Import2 lands HubSpot calls as notes, turns leads into contacts, and does not move emails, meetings or attachments. Attio's page lists files as moved. Test one file-heavy record in the sample.
Option 2: CSV import
CSV needs no extra tool and gives you the most control. It also gives you every job above: export limits, type mapping, load order. Attio's CSV guide says record and relationship attributes need a unique attribute such as Domains or Record ID. Keep one in every file.
Choose CSV for small sets, or when the data needs cleaning that you want to do yourself in a spreadsheet.
Check the result and roll back
Whatever the route, check records, not totals. Compare counts per object, then open 20 deals and confirm each shows its company and contact. Look for failed rows and read their reasons.
Import2's undo removes imported records only; attributes and lists stay (Attio). With Shuttio, cancelling deletes the records and also the objects, fields and options the migration created, in reverse order. An object the migration created stays, and is listed, if it still holds other records. A record that matched an existing one stays. Structure that existed before is never touched.
Records created after the first run
Your team keeps working in HubSpot while you check the copy. Shuttio's "Move new records" copies records created in the old CRM after the first run. Freeze HubSpot edits on cutover day.
What to rebuild by hand
Forms, sequences, landing pages and lead scoring do not migrate, and Craftt's playbook lists automations as work to rebuild. Write the list of active workflows before cutover, ranked by how often they fire. Rebuild the top five first.
Cutover
Run both systems in parallel for a week and keep HubSpot read-only before you cancel it (Craftt). Cancel HubSpot only after your team has closed a real week of work in Attio.
Where Shuttio fits
Shuttio is a self-serve tool, built by Craftt, which also sells the Sprint above. A move from HubSpot into Attio is free at any record count. You connect both CRMs, review fields, and run a free sample (5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records). Parent records linked to the sampled deals are kept, so you see real links. You get a per-record report with a reason for every failure, and a rollback.
Credentials are encrypted and deleted 14 days after the run. No AI model writes your data.
Choose Import2 if your plan includes it and a plain move is enough. Choose an agency if the data model itself must change.
FAQ
Can I migrate from HubSpot to Attio for free? Yes. Import2 is free from Attio's Migrate button on Plus, Pro and Enterprise plans, for admins. A CSV import needs no extra tool, and Shuttio is free into Attio at any record count.
Does HubSpot call and note history come into Attio? Not through the record export, which downloads property values and associations. HubSpot lists separate ways to export activities such as calls and notes. Import2 moves notes and tasks, and Craftt reports it lands calls as notes. Check call history in the sample.
Can I test on a few records first? Yes. Import2 runs a sample, and it creates attributes in your workspace. Shuttio's sample is 5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records, and nothing is written before you start it.
Can I undo a migration? Import2's undo removes imported records but not attributes or lists. Shuttio's cancel deletes the records and the objects, fields and options the migration created, except an object that still holds other records.