SuiteCRM to Attio migration
Shuttio moves accounts, contacts, leads, opportunities, products, cases and projects from SuiteCRM into Attio, with notes, tasks, meetings, calls and emails. It is free at any record count. 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 Attio before the full run, and a rollback removes what it created.
- Can I move SuiteCRM to Attio?
- Yes.
- What moves:
- Accounts, contacts, leads, opportunities, products, cases and projects, with notes, tasks, meetings, calls and emails.
- What doesn't:
- The request limit; Quotes, contracts and invoices; Documents and attachments; and 7 more, each with its reason.
- Price:
- Free at any record count, the sample and the full run.
- 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 SuiteCRM's API request limits.
No Attio account yet? Sign up with our partner link and get 10% off any plan.
- Moves
- 7 kinds of record, plus notes, tasks, meetings, calls and emails
- Doesn’t move
- 10 things, each with the reason
- Connect
- SuiteCRM: Your instance address and an OAuth2 client an admin creates in Admin, OAuth2 Clients and Tokens (a Client Credentials client with the user it reads as). Attio: OAuth
- Price
- Free at any record count
Where each SuiteCRM object lands
Read from the code that runs the migration. Source column names are shown as the source reports them.
| SuiteCRM object | Lands in | Standard fields |
|---|---|---|
| Accounts | Companies |
|
| Contacts | People |
|
| Leads | People, deals at the stage Lead, or their own object (you choose) | Fields are mapped on the Fields step |
| Opportunities | Deals |
|
| Products | Its own object, or the one you already have with that name |
|
| Cases | Its own object, or the one you already have with that name |
|
| Projects | Its own object, or the one you already have with that name |
|
Every other property is created as an Attio attribute and shown on the Fields step. A record matches on email (people) or domain (companies) and is updated in place, so running it twice never leaves two of anything.
Notes, tasks, meetings, calls, emails, files, owners and lists
| Kind | How it moves | What happens |
|---|---|---|
| Notes | Yes | On the record each note was attached to; an edited note updates on a later run. |
| Tasks | Yes | Linked to their records. |
| Meetings | Yes | Meeting participants are carried by name only, so no new people are created. |
| Calls | Yes | Into Attio's Phone calls, with the time, length, direction, outcome and call notes. A call with no migrated person, or a workspace that has not allowed activities, becomes a note instead. |
| Emails | Yes | Logged emails land as a Logged emails activity on their records, with sender, recipients, date and body. Off by default: Attio's mailbox sync may already show the same mail. |
| Files | No | Shuttio does not read SuiteCRM documents or note attachments for this source. Files stay in SuiteCRM. |
| Owners | Yes | Deal owners and task assignees, matched to an Attio member by email. |
| Lists | No | Shuttio reads no lists from SuiteCRM. |
Deal pipelines and stages
SuiteCRM has one opportunity pipeline: the Sales Stage dropdown. Shuttio reads its stages in the dropdown's order (SuiteCRM's API does not list a customised dropdown, so the stock stages are offered; a stage you added still arrives on the deals that hold it). Closed Won carries over as won and Closed Lost as lost, and each opportunity takes the stage it is in. One pipeline becomes Attio's Deal stage. With two or more you choose on the Fields step: a list per pipeline, or a stage field per pipeline. Switch Pipelines off on the Options step and the names land in text fields instead.
Your own fields
| SuiteCRM field type | Created in Attio as |
|---|---|
| Text, text area, HTML | Text |
| Integer, decimal, float | Number |
| Currency | Currency |
| Date | Date |
| Date and time | Date and time |
| Checkbox | Checkbox |
| Dropdown | Select, with the source's options |
| Multi-select | Text: the values are joined into one text value |
| Email, phone, URL | Text: a URL attribute cannot be created through Attio's API |
A field you added yourself arrives as a new Attio attribute of the type above. The Fields step lists every field before anything is written, and you can rename, skip or point a field at an attribute Attio already has.
10 things that don’t move
Each has a reason. You would find them on day two, so they are here on day zero.
The request limit
Doesn't moveSuiteCRM documents no request limit; it is set per instance. Shuttio keeps three requests in flight, backs off when the server answers 429 or 503, and pauses the run, to resume where it stopped, when it keeps refusing.
Quotes, contracts and invoices
Doesn't moveShuttio does not move SuiteCRM's quotes, contracts, invoices or campaigns. They stay there.
Documents and attachments
Doesn't moveShuttio reads no documents, note attachments or email attachments from SuiteCRM. They stay there.
Drafts and emails on leads or cases
Doesn't moveA draft or an email queued to send never reached anyone, and an email related only to a lead or a case has no slot to land in. Neither is moved from SuiteCRM.
Activities on leads, cases and projects
Doesn't moveA note, task, meeting or call attached to a lead, a case or a project, with no contact named, has no slot to land in. It is counted in the run's report and not moved.
Project tasks
Doesn't moveProject tasks move into Odoo's Project app, not into Attio.
Records outside your reach
Doesn't moveSuiteCRM shows an OAuth2 client only the records of the user set on it. Set a user who sees everything you want to move.
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.
How the move runs
- 1
Pick the pair
Choose SuiteCRM as the source and Attio as the destination.
- 2
Connect both ends
SuiteCRM: Your instance address and an OAuth2 client an admin creates in Admin, OAuth2 Clients and Tokens (a Client Credentials client with the user it reads as). Shuttio checks it before saving anything, stores the client ID and secret encrypted, and deletes them 14 days after the migration finishes. Attio: sign in with Attio (OAuth).
- 3
Choose the objects
Tick what to move. Each row shows where the object lands in Attio. 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 Attio.
- 6
Run the full migration
One click moves the rest, free. 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 SuiteCRM after the migration started.
Price
Free at any record count. The sample, the full run, Retry and rollback cost nothing.
SuiteCRM to Attio 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 SuiteCRM through its API, creates records first and links them second, matches records already in Attio 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 Attio too.
Questions
How much does a SuiteCRM to Attio migration cost?
Free at any record count. The sample, the full run, Retry and rollback cost nothing. Attio is the destination, so there is no per-record price.
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 Attio, so it can be rolled back.
What does not move from SuiteCRM to Attio?
The request limit; Quotes, contracts and invoices; Documents and attachments; Drafts and emails on leads or cases; and 6 more. 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 Attio and was updated in place stays, and the values it overwrote are not restored; the Fields step warns you before the run.
Does it change anything in SuiteCRM, and what about records created while I migrate?
Shuttio only reads from SuiteCRM. It never writes to it. After the full run, Move new records moves the records created in SuiteCRM after the migration started. Edits to records already moved are not copied.
What does it need from SuiteCRM, and how long does it take?
Your instance address (https), and a Client Credentials client that an admin creates in Admin, OAuth2 Clients and Tokens, with the user it reads as; Shuttio needs the client ID and the secret. SuiteCRM 7.10 or later and SuiteCRM 8 are supported, with the API set up and its OAuth2 keys generated. The client sees what its user sees. The credentials are stored encrypted and deleted 14 days after the migration finishes. SuiteCRM documents no request limit; Shuttio keeps three requests in flight and pauses the run, to resume where it stopped, if the server keeps refusing. Shuttio reads 100 records a request.
Move SuiteCRM to Attio 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.