01
extract
02
map fields
03
decide
04
route lists
05
import & verify
neon-deer ▸ migration-runner
built by neon deer
➜
neon-deer migrate
--to
attio
⠋
detecting source crm …
✓
source:
hubspot
· 6 objects · 43,636 records visible
→ extracting everything. objects, notes, files, lists.
extraction
0
records out
○
companies
9,412
○
people
31,876
○
deals
2,348
○
notes
14,205
○
files
6,032
○
lists
31
✓
extraction complete. nothing depends on an export button.
Field mapping · Companies
HubSpot → Attio
161 / 184 auto-mapped
23 guided
source field
attio attribute
fill
status
company_name
text
→
Name
100%
Confirmed
website
url
→
Domains
98%
Confirmed
industry_segment
picklist
→
Industry
84%
Suggestion
Confirmed
icp_tier
picklist
→
ICP Tier · will create
71%
Suggestion
Confirmed
last_engagement
date
→
Last engaged
64%
Auto-applied
legacy_score
number
→
Choose target …
22%
Needs review
8 suggestions ready · patterns from past migrations
✓ 8 confirmed
Approve as-is
A
Migration decisions
5 calls only you can make
2 of 5 decided
decisions
✓
Notes
Duplicate to related records
✓
Reminders → Tasks
Active only
Files
destination + scope
Deals
native object or custom
Linking scope
conservative · standard · aggressive
Files · where should 6,032 files live?
Found in HubSpot. All under your control before anything moves.
Attio storage
recommended
Files land on the record timeline. No extra auth, nothing left behind.
Google Drive
Files stay in Drive, records get links. Needs a Drive connection.
Skip files
Records only. Files stay in the old CRM.
●
Recommended for teams without a document system. Earned from real migrations, not a guess.
List routing
31 source lists
24 → lists
4 → tags
2 → objects
1 skipped
◈
10 event lists look like one Events object
Same shape, same fields, 1,847 entries. Promote them to a custom object?
✓ staged: Events object · 10 lists consolidated
Promote
source list
routing
attio target
Investor Outreach 2026
412 entries
→
list · new
Investor Outreach 2026
will create
Q2 Outbound
188 entries
→
list · existing
Outbound
Portfolio Watch
64 entries
→
tag-only
tag: portfolio_watch
Events 2024 to 2026
10 lists · 1,847 entries
→
promote · object
Events
new object
Old Imports 2019
1,203 entries · stale
→
skip
not migrated
import run · acme-co → attio
0
/ 43,636 records
attio api
94 req/s · within limits
POST
/v2/objects/companies/records
201
142ms
POST
/v2/objects/people/records
201
98ms
POST
/v2/notes
201
121ms
PATCH
/v2/objects/deals/records/rec_8f2
200
87ms
POST
/v2/lists/8a1/entries
201
104ms
rate guard · backoff respected · source ids kept
verify · source vs attio
✓
companies
9,412 = 9,412
✓
people
31,876 = 31,876
✓
deals
2,348 = 2,348
✓
notes
14,205 = 14,205
✓ all counts match · ready to cut over
how we do it
why it matters