Attio to Odoo migration
Shuttio moves companies, people and deals from Attio into Odoo, with notes, tasks, meetings and calls. A full migration is priced by record count, from $249 up to 50,000 records. It starts with a free sample of every object you tick (5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records), so you read the result in Odoo before the full run, and a rollback removes what it created.
- Can I move Attio to Odoo?
- Yes.
- What moves:
- Companies, people and deals, with notes, tasks, meetings and calls.
- What doesn't:
- Interactions and email history; Source lists; Custom objects.
- Price:
- $249 up to 50,000 records, once per migration. The sample is free.
- How long:
- A free sample first, then the full run as one background job with live progress. The time depends on your record count and on Attio's API request limits.
- Moves
- 3 kinds of record, plus notes, tasks, meetings and calls
- Doesn’t move
- 3 things, each with the reason
- Connect
- Attio: Sign in with Attio (read-only for this move). Odoo: API key, import package or the Shuttio app
- Price
- From $249; the sample is free
Where each Attio object lands
Read from the code that runs the migration. Source column names are shown as the source reports them.
| Attio object | Lands in | Standard fields |
|---|---|---|
| Companies | Partners (companies) |
|
| People | Partners (contacts) |
|
| Deals | CRM opportunities |
|
Every other property goes to an x_ field you pick, or is skipped. A company matches by website domain and a contact by email before anything is created; a match is linked, never written and never removed.
Notes, tasks, meetings, calls, emails, files, owners and lists
| Kind | How it moves | What happens |
|---|---|---|
| Notes | Yes | Internal notes in the chatter of the record they belonged to. |
| Tasks | Yes | An open task becomes a scheduled To-Do activity; a completed one becomes a Done entry in the chatter. |
| Meetings | Yes | A Calendar event when the Calendar app is installed, a chatter note when it is not. |
| Calls | Yes | Each call is a Done entry of Odoo's Call activity type in the chatter of its record, dated when it happened, with the direction, length and outcome at the top. |
| Emails | No | Attio computes email history from the connected mailbox, so it is not a record Shuttio can read. It stays in Attio. |
| Files | No | Attachments on the same record, only when you connect Odoo with an API key. The import package and the Odoo app do not carry files. |
| Owners | Yes | Record owners, matched to the Odoo salesperson with the same email. An owner with no match goes to the fallback user you choose. |
| Lists | No | Odoo has no place for a CRM list or saved filter, so none is written. The members stay in the source. |
Deal pipelines and stages
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. A lost deal is archived with its lost reason; a won deal goes to a won stage.
Your own fields
A source field with no Odoo counterpart goes to an existing writable x_ field that you pick, or to a new x_ field when your Odoo key may add fields (text, number, true/false, date, date and time, selection, or a link to a contact or company). A value that does not fit the field's type is left out and counted, never guessed.
3 things that don’t move
Each has a reason. You would find them on day two, so they are here on day zero.
Interactions and email history
Doesn't moveAttio computes them from the connected mailbox and calendar, so they are not records Shuttio can read. They stay in Attio.
Source lists
Doesn't moveThe 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 moveShuttio 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.
How the move runs
- 1
Pick the pair
Choose Attio as the source and Odoo as the destination.
- 2
Connect both ends
Attio: Sign in with Attio (read-only for this move). Shuttio never writes to Attio. Odoo: one of three ways: an API key, an import package that you load yourself, or the Shuttio app installed in your Odoo.
- 3
Choose the objects
Tick what to move. Each row shows where the object lands in Odoo. Nothing is written yet.
- 4
Review every field
Rename a field, skip it, or point it at a field that exists. When a field goes into an existing field, the step warns you that values on matched records are overwritten, and counts the fields concerned.
- 5
Start the free sample
Shuttio picks the sample at random: 5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records. A deal in the sample still finds its company, because every object takes the records linked to the ones already picked. Lists and files move with the full migration. You open the result in Odoo.
- 6
Run the full migration
The run page shows your band and price; you pay at Checkout, and the rest moves. Pause, resume and cancel work while it runs.
- 7
Check the report, then move new records
The Records tab lists every source record as moved, updated, skipped or failed, with the reason, and downloads as a CSV. Move new records brings over the records created in Attio after the migration started. It is not offered for an Odoo import package or the Odoo app.
Price
A full migration into Odoo costs $249 up to 50,000 records and $4,749 up to 5,000,000. You pay once per migration, and the sample is free.
| Records in your source | One-time price |
|---|---|
| Up to 50,000 | $249 |
| Up to 100,000 | $499 |
| Up to 200,000 | $749 |
| Up to 500,000 | $999 |
| Up to 1,000,000 | $1,499 |
| Up to 5,000,000 | $4,749 |
| Over 5,000,000 | Email help@shuttio.com |
- Each record of an object you tick counts once: a contact, company, deal, note, task or meeting. List memberships and attachments do not count. The count is shown before you pay.
- Filters do not lower the price: it counts everything in your source. You see your band before the full run starts and pay at Stripe Checkout; nothing is charged before that.
- Move new records after the full run costs nothing more while the total stays within the band you paid for; past it, Checkout opens for the next band.
- A CSV import into Odoo is free, at any size.
Attio to Odoo with Shuttio or by hand
Against a manual CSV export: a CSV is one object per file and a record export has no notes, tasks or meetings in it, so a deal's company is a column you match by hand and its notes, tasks and meetings are not in the file. Shuttio reads Attio through its API, creates records first and links them second, matches records already in Odoo instead of duplicating them, and lists every record's outcome. If you only need one object's fields and no history, a CSV import is enough, and Shuttio runs those free into Odoo too.
Questions
How much does a Attio to Odoo migration cost?
A full migration into Odoo costs $249 up to 50,000 records and $4,749 up to 5,000,000. You pay once per migration, and the sample is free. Filters do not lower the price: it counts everything in your source. You see your band before the full run starts and pay at Stripe Checkout; nothing is charged before that.
What does the free sample move?
5% of your companies, contacts or deals, 10 to 1,000 records, picked at random, with their linked records. Lists and files move with the full migration. It is a real write into Odoo, so it can be rolled back.
What does not move from Attio to Odoo?
Interactions and email history; Source lists; Custom objects. Each has a reason on this page.
Can I undo the migration?
Yes. Rollback deletes the records, notes, tasks, meetings, files and list entries that the sample or the full run created, in reverse order, from a ledger. A record that already existed in Odoo and was updated in place stays, and the values it overwrote are not restored; the Fields step warns you before the run. Runs through an API key or the Shuttio app roll back with Shuttio; an import package is loaded by you, so you remove it in Odoo by its tag.
Does it change anything in Attio, and what about records created while I migrate?
Shuttio only reads from Attio. It never writes to it. After the full run, Move new records moves the records created in Attio after the migration started. Edits to records already moved are not copied. It is not offered for an Odoo import package or the Odoo app.
How does Attio data get into Odoo?
Shuttio writes through an Odoo API key, builds an import package you load yourself, or writes through the Shuttio app installed in your Odoo. The API key needs an administrator's key on Odoo 17 or later, and on Odoo Online the external API is part of the Custom plan only. The import package is for a plan without API access. Import2 does not support Clarify or Odoo as a destination.
Read next
Move Attio to Odoo in a free sample first.
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.