Attio to Attio, Clarify, Odoo, HubSpot, Pipedrive, Breakcold and Twenty

One Attio workspace into another: objects, fields, records, lists, notes, tasks, meetings and files, with every field type kept.

Connect with
Sign in to both workspaces with Attio: one as the source, one as the destination. Shuttio refuses two connections to the same workspace and never writes to the source.
Price
Attio: free at any record count. Clarify and Odoo and HubSpot and Pipedrive and Breakcold and Twenty: priced by record count; the sample is free
Moves to
Attio, Clarify, Odoo, HubSpot, Pipedrive, Breakcold and Twenty
Moves
12 things into Attio, listed below
Doesn’t move
5 things into Attio, each with the reason

Attio, one destination at a time

Field-by-field mapping, what doesn't move, price and questions for each pair.

Where Attio 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 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.
Odoo
A CSV import is free. A CRM migration 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 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 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 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 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 Attio into Attio

Each of these is written against the real API rather than a generic model, which is where the depth comes from.

Objects and fields, by slug

Each object and attribute keeps its slug and its type: text, number, currency with its code, select and status with their options in order, location, personal name, rating, checkbox, dates, and links to other records. A slug the destination already holds with another type gets a field of its own.

Custom objects

Created in the destination under the same slug. One that already exists there is reused, and a link between two of your objects is created as the same link.

Owners and assignees, by email

Owners, assignees and other member fields are matched to members of the destination workspace by email. An owner with no match goes to the person who started the migration.

Lists with their entry values

Lists on any object, with each entry attribute at its own type: statuses, member fields, locations and dates arrive as such, not as text.

Notes, tasks and meetings

On the records they belong to, custom objects included. A note written in Markdown stays Markdown. Each note is written as the user who connected the destination. The source's author is not kept.

Calls and other activities

Phone calls become Phone calls records again, with time, length, direction and outcome. Each activity you added yourself is created in the destination under its own name and keeps its records.

Files

Each file is copied record by record, at about one file per second. A file over 50 MB and a linked file (a link, not a file) are reported, not copied.

The date a record was created

The date a record was created in the source is kept in a text field named "Created in source", because Attio sets creation dates itself.

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 Attio into Clarify

Import2 does not support Clarify or Odoo as a destination. What each Attio object becomes depends on what Attio 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 and Pipedrive. 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 move

Clarify 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 move

Clarify'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 move

A matched record is updated in place. A rollback removes what Shuttio created and does not restore the values it overwrote.

What moves from Attio into Odoo

Import2 does not support Clarify or Odoo as a destination. What each Attio object becomes depends on what Attio holds; every row below is something the Odoo writer does.

Companies and contacts

Companies and contacts go to Odoo's partners (res.partner), a contact linked to its company in a second pass. A partner is matched by domain or email and updated, not duplicated.

Deals and leads

Deals go to CRM opportunities and leads to CRM leads (when Odoo has leads switched on). Each source pipeline is recreated as a sales team with its stages in the source's order, and won and lost stages are kept.

Products

Into Odoo products (product.template), with the SKU, price and cost where the source has them.

Projects and their tasks

From Pipedrive, into Odoo's Project app (it must be installed). A project keeps its name, customer, manager (matched by email), dates, description and tags, with its stage when your Odoo has project stages and a tag when it does not. A task goes to its project with its stage in that project, deadline and assignee. Time sheets, files and subtasks do not move, and the Odoo app does not carry them yet.

Custom fields

A source column goes to an existing writable x_ field you pick, or to a new x_ field Shuttio creates when your key has the rights. A field Odoo refuses is named in the run summary and never fails the run.

Owners, matched by email

A record's owner becomes the Odoo salesperson with the same email. An owner with no match goes to the fallback user you choose before the run.

Notes, tasks and meetings

Notes become internal notes in the record's chatter. An open task becomes a scheduled To-Do activity; a completed one becomes a Done entry in the chatter. A meeting becomes a Calendar event when the Calendar app is installed, and a chatter note when it is not.

Emails, in the chatter

From HubSpot and Pipedrive, written as email messages in the chatter of the contact, company or opportunity they belonged to, with the sender, subject, date and body. Recipients are named in the body and are never notified. Affinity emails do not move: its API returns no email bodies.

Files, as attachments

Each file becomes an attachment on the same record, when you connect with an API key. The import package and the Odoo app do not carry files.

Three ways to write

Shuttio writes through an Odoo API key, builds an import package you load yourself, or writes through the Shuttio app installed in your Odoo.

Source lists

Doesn't move

The Odoo writer has no place for a CRM list or saved filter, so none is written. The members stay in the source.

Custom objects

Doesn't move

Shuttio writes companies, contacts, deals, leads and products into Odoo, and projects with their tasks into its Project app. Any other object is not written, and its columns can go to x_ fields on those five.

Rollback of an import package

Doesn't move

A package is loaded by you, so Shuttio wrote nothing to your Odoo and cannot remove it. In Odoo, filter by the tag "Migrated <date>" the package puts on its records, select all and delete. Runs through an API key and through the Odoo app roll back with Shuttio.

5 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.

Interactions and email history

Doesn't move

Attio computes them from the connected inbox and calendar, and has no write endpoint for them. Connect the same inbox to the destination workspace.

Call recordings

Doesn't move

Shuttio does not read or copy them. They stay in the source workspace.

Values on a record that already existed in the destination

Doesn't move

A company or person that matches an existing record in your destination by domain or email is updated, not added twice. Rollback removes what Shuttio created. It does not restore values it overwrote on a record that already existed.

Emails, unless you tick them

Doesn't move

Logged 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.

Goals, invoices, payments, carts and other commerce or admin records

Doesn't move

They 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.

Move 50 Attio 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.