Affinity to Attio, Clarify, HubSpot, Pipedrive, Breakcold and Twenty
Persons, organizations, opportunities — and the lists and fields that are where Affinity actually keeps your work.
Migration into Attio is free in Shuttio, at any record count, with a free sample first and a rollback. Attio's built-in Import2 is free too; here is what differs.
- Connect with
- An API key, pasted once and validated against your tenant before anything runs.
- Price
- Attio: free at any record count. Clarify and HubSpot and Pipedrive and Breakcold and Twenty: free under 5,000 records in total: contacts, companies, deals, notes, activities and files together, otherwise priced by record count; the sample is free
- Moves to
- Attio, Clarify, HubSpot, Pipedrive, Breakcold and Twenty
- Moves
- 9 things into Attio, listed below
- Doesn’t move
- 6 things into Attio, each with the reason
Where Affinity data can go
The destinations a customer can start today, with the price of each.
- Attio
- Free at any record count.
- Clarify
- A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced once per migration by record count (up to 50,000 records $249, up to 100,000 records $499, up to 200,000 records $749, up to 500,000 records $999, up to 1,000,000 records $1,499, up to 5,000,000 records $4,749, over 5,000,000 records email help@shuttio.com). The sample is free and you see the price before the full run starts.
- HubSpot
- A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced once per migration by record count (up to 50,000 records $249, up to 100,000 records $499, up to 200,000 records $749, up to 500,000 records $999, up to 1,000,000 records $1,499, up to 5,000,000 records $4,749, over 5,000,000 records email help@shuttio.com). The sample is free and you see the price before the full run starts.
- Pipedrive
- A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced once per migration by record count (up to 50,000 records $249, up to 100,000 records $499, up to 200,000 records $749, up to 500,000 records $999, up to 1,000,000 records $1,499, up to 5,000,000 records $4,749, over 5,000,000 records email help@shuttio.com). The sample is free and you see the price before the full run starts.
- Breakcold
- A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced once per migration by record count (up to 50,000 records $249, up to 100,000 records $499, up to 200,000 records $749, up to 500,000 records $999, up to 1,000,000 records $1,499, up to 5,000,000 records $4,749, over 5,000,000 records email help@shuttio.com). The sample is free and you see the price before the full run starts.
- Twenty
- A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced once per migration by record count (up to 50,000 records $249, up to 100,000 records $499, up to 200,000 records $749, up to 500,000 records $999, up to 1,000,000 records $1,499, up to 5,000,000 records $4,749, over 5,000,000 records email help@shuttio.com). The sample is free and you see the price before the full run starts.
What lands in each, and what a rollback leaves: HubSpot, Pipedrive, Breakcold, Twenty.
What moves from Affinity into Attio
Each of these is written against the real API rather than a generic model, which is where the depth comes from.
Persons, organizations and opportunities
Straight onto people, companies and deals.
Global fields
Affinity keeps a workspace's own entity-level fields off the record payload and off the list endpoint, so a naive export loses them entirely. They are read separately and arrive as columns on the record.
Lists, with their field values
Each Affinity list becomes an Attio list, and the list's own fields become list attributes carrying each member's value — dropdowns keep their options, numbers and dates keep their types.
Notes and meetings
As Attio notes and meetings, attached to the records they belong to.
Reminders and calls
Reminders become tasks. A logged call lands in Attio's Phone calls (a note when the workspace has not allowed activities). Both attach to the records they belong to. Finding calls takes one request per person, so that step is slow in a large workspace.
And on every migration
Relationships, resolved in a second pass
Records are created first and linked second, so a deal finds its company no matter which order they arrived in. A link whose other end never made it is reported as a skipped row naming what it was waiting for.
Dedup against what is already in Attio
People match on email, companies on domain, custom objects on the unique key you designate. A matched record is updated in place, so running the same migration twice never leaves you two of anything.
A sample run before the real one
A connected CRM imports a sample first (5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records), you read the result, then one click runs the rest. A CSV imports in full, free, and rolls back if it is wrong.
Cancel removes what Shuttio created
Every record, note, task, meeting, file, list entry, attribute and select option this migration created is deleted or archived, in reverse order. A record it matched and updated in place stays, and the values it overwrote are not restored. Anything else in your workspace is never touched.
What moves from Affinity into Clarify
Import2 does not support Clarify or Odoo as a destination. What each Affinity object becomes depends on what Affinity holds; every row below is something the Clarify writer does.
Companies, people and deals
Into Clarify's company, person and deal objects, upserted on the unique field Clarify gives each, so a re-run updates instead of duplicating. Deal pipelines arrive as one stage field or as separate fields, whichever you choose.
Custom objects and fields
An object you tick that Clarify does not have is created as a custom object with its fields, and missing fields are added to the objects it does have. Each one is entered in the ledger, so a rollback removes it.
Notes
As comments on the record they belonged to: the deal if it has one, else the person, else the company.
Tasks, with owners matched by email
As Clarify tasks linked to the deal, person or company. The owner is matched to a Clarify user by email; a task whose owner has no match is left unassigned, never given to someone else.
Meetings and calls, as comments
Clarify builds meetings from the calendar you connect to it and does not accept written ones. A source meeting or call lands as a comment on its record saying what it was, when, and who was there.
Emails, as comments
From HubSpot, Pipedrive, SugarCRM and Vtiger. Clarify's own email list is filled by the mailbox you connect to it and does not accept written ones, so a logged email lands as a comment on its record: subject, date, direction, sender and recipients, then the body as plain text. Affinity emails do not move: its API returns no email bodies.
Lists, as fields on the records
Clarify's API cannot add a record to a list. Membership becomes a multi-select field on each record, named after the source (for example "HubSpot lists"), and a list's own fields become one field per list and field.
Files, as attachments
With the Attachments switch on, each file up to 50 MB is downloaded from the source and attached to the person, company or deal it belonged to. A file whose record did not migrate is not moved. Files Clarify itself pulled from emails are not touched, and a rollback removes only the files Shuttio added.
Files over 50 MB, linked files and file types Clarify refuses
Doesn't moveClarify checks the type of a file when it attaches it and refuses some (a zip archive, for one). Such a file, a file over 50 MB and an entry that is only a link are listed as failed rows and not copied.
Fields created for lists, left after a rollback
Doesn't moveClarify's API has no way to delete a field. A rollback removes the records, notes, tasks, files and custom objects Shuttio created, and names the list fields it leaves for you to clear.
Values on a record Clarify already had
Doesn't moveA matched record is updated in place. A rollback removes what Shuttio created and does not restore the values it overwrote.
6 things that don’t move into Attio
Each is a ceiling in an API, not a feature we haven't written yet. You'd find them on day two, so read them now.
Person, organization and location field types
Doesn't moveAffinity lets a list field point at another record; Attio list attributes hold scalars. Those fields are dropped rather than flattened into a name that would look like data.
Custom objects
Doesn't moveAffinity has no such concept — its analogue is lists plus fields, and both migrate in full.
Field history
Doesn't moveAffinity exposes no per-field change log at all, so there is no timeline to read. Current values are what crosses.
Emails, unless you tick them
Doesn't moveLogged emails from HubSpot and Pipedrive land in Attio as a Logged emails activity on their records, but they start unticked: Attio's mailbox sync may already show the same mail, and with both ticked it appears twice. Without the Attio connection's activity access, each email is listed as a skipped row rather than written as a note.
Files over 50 MB and linked files
Doesn't moveFiles up to 50 MB are uploaded to the record they were attached to, when the Attio connection has the file scope (an older connection is asked to reconnect). A larger file, and an entry that is a link rather than a file, is listed on the run as a failed row and not copied.
Goals, invoices, payments, carts and other commerce or admin records
Doesn't moveThey track billing and internal targets rather than customer relationships, and Attio has no object shaped for them. Pipelines and stages already arrive as each deal's status.
Moving from somewhere else
HubSpot
Contacts, companies, deals, products, tickets and your portal's own objects — with the associations intact.
Pipedrive
Persons, organizations, deals, products and projects, and the activities you have been tracking as both meetings and tasks.
SugarCRM
Accounts and contacts, leads, opportunities with their sales stages, products, cases, projects and custom fields — and the notes, tasks, meetings and calls attached to them.
Vtiger
Organizations, contacts, leads, opportunities with their sales stages, products, tickets, projects and your custom fields — and the comments, tasks, events and calls attached to them.
Twenty
People, companies and opportunities with their stages, the objects and fields you added, and the notes and tasks attached to them, from Twenty Cloud or your own server.
CSV
A spreadsheet from anywhere, including the CRM that has no API worth using.
Attio
An Attio workspace into Clarify: companies, people and deals with their fields, notes, tasks, calls and lists.
Attio
One Attio workspace into another: objects, fields, records, lists, notes, tasks, meetings and files, with every field type kept.
Move 50 Affinity records first. Then decide.
Nothing is written to your new CRM until you have reviewed the objects and fields, and every CRM migration starts as a free sample: 5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records.