Salesforce to Attio, free.
Accounts, contacts, leads, opportunities, cases and campaigns, your __c objects, and both kinds of note.
- Connect with
- OAuth, against production or a sandbox. The login host is remembered per connection, so a sandbox stays a sandbox.
- Price
- Free, at any record count
- Moves
- 11 things, listed below
- Doesn’t move
- 6 things, each with the reason
What moves from Salesforce
Each of these is written against the real API rather than a generic model, which is where the depth comes from.
Accounts, contacts and opportunities
Straight onto companies, people and deals, with every field the org describes.
Leads, where you choose
As people with a lead status, as deals at the stage Lead, or as their own object. A lead already converted in Salesforce is not imported twice: it resolves onto the contact or opportunity it became.
Products, cases, campaigns, contracts and orders
Each lands in its own Attio object. Opportunity and order products become line items linked to their deal or order and product, and a campaign keeps its members: every contact, and every lead that landed on people or was converted into a contact.
Custom objects
Any queryable __c object. The field Salesforce marks unique or idLookup becomes the dedup key, and lookup fields resolve to the Attio object you pointed that lookup's target at.
Both note systems
Classic Notes and enhanced ContentNotes, the latter read with their document links so each note lands on the right record rather than on the user who wrote it.
Tasks and events
Tasks become Attio tasks; events become Attio meetings.
Field history
Optional, read from each object's history table so a closed-won date from last year still reads as last year.
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 the first 50 records of each object, you read the result, then one click runs the rest. A CSV imports in full, free, and rolls back if it is wrong.
Cancel that leaves zero trace
Every record, note, task, meeting, list entry, attribute and select option this migration created is deleted or archived in reverse order. Whatever was in your workspace before is never touched.
6 things that don’t move
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.
ContentNotes your user cannot see
Doesn't moveWithout the org permission "Query All Files", Salesforce returns only the notes shared with the connecting user and reports that as the whole set. The connection checks your permission sets and warns before the run; an org that will not report them cannot be checked at all.
History on long text fields
Doesn't moveSalesforce returns a null new-value on every edit of a field over 255 characters, which would import as a series of clears. Those fields are skipped and named in the summary.
Polymorphic lookups
Doesn't moveA field like WhatId can point at several kinds of record at once. No single Attio attribute can hold that, so it is not linked rather than guessed.
Emails
Doesn't moveAttio asks migration tools not to import them — its own inbox sync covers email far better than a one-time copy would, and it keeps working after the migration.
File attachments
Doesn't moveAttio publishes no endpoint for writing files onto a record, so there is nowhere to put them.
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.
Affinity
Persons, organizations, opportunities — and the lists and fields that are where Affinity actually keeps your work.
CSV
A spreadsheet from anywhere, including the CRM that has no API worth using.
Move 50 Salesforce records first. Then decide.
Free at any record count. Nothing is written to Attio until you have reviewed the objects and fields, and every run starts as a free 50-record sample.