packages/twenty-docs/user-guide/data-migration/how-tos/migrating-from-other-crms.mdx
This guide walks you through migrating your data from any CRM to Twenty. The process involves auditing your data, preparing your Twenty workspace, exporting from your current system, and importing into Twenty.
<Note>Views, workflows, and permissions must be recreated manually after migration. Plan time for this configuration work.</Note>
Migration is an opportunity for a fresh start. Don't bring over clutter.
What to keep:
What to leave behind:
Create a mapping document between your current CRM and Twenty:
| Your CRM | Twenty |
|---|---|
| Account / Organization | Company |
| Contact / Person | People |
| Deal / Opportunity | Opportunity |
| Activity | Task or Note |
| Custom Object | Custom Object |
For each field, document:
<Note>Keep this mapping document handy during import—you'll reference it when mapping columns.</Note>
Before importing data, prepare your Twenty workspace:
The CSV import creates records, not fields. Create all custom fields in Settings → Data Model before importing. </Warning>
If your data includes user references (Account Owner, Assignee, etc.), those users must exist in Twenty before import. Otherwise, those relations cannot be mapped. </Warning>
Export your data from your current CRM:
Export these objects (in this order for reference):
Open each exported CSV in a spreadsheet application and prepare it for Twenty.
| Field Type | Required Format |
|---|---|
| Domain | https://domain.com |
[email protected] (must be unique) | |
| Date | YYYY-MM-DD |
| Phone | Three columns: Number, Country Code, Calling Code |
| Boolean | TRUE or FALSE (uppercase) |
| Select fields | Use API names, not display labels |
Use https://domain.com (not domain.com or www.domain.com). This matches Twenty's format and prevents duplicates when you connect email/calendar sync.
</Warning>
See How to Prepare Your CSV Files for complete formatting requirements for all field types.
To link records (e.g., People to Companies), add a column with the parent's unique identifier.
Example: People CSV with Company link
firstName,lastName,email,companyDomain
John,Smith,[email protected],https://acme.com
Jane,Doe,[email protected],https://widgets.co
See How to Import Relations for detailed instructions on linking records.
If your data includes user assignments (Owner, Assignee):
See How to Prepare Your CSV Files for complete formatting guide.
Always import in this order:
The parent record must exist before you can reference it. </Warning>
For each CSV file, in order:
companyDomain) to relation fieldsDetailed guides:
For large migrations:
| Volume | Recommended Approach |
|---|---|
| Under 10,000 records | Single CSV import |
| 10,000 - 50,000 records | Split into multiple CSV files |
| 50,000+ records | Use the API |
For API imports:
After importing data, complete your workspace configuration:
| Issue | Cause | Solution |
|---|---|---|
| Duplicate errors | Email/domain already exists | Remove duplicates from file, or include unique identifier to update existing records |
| Relation not found | Parent record doesn't exist | Import parent objects first (Companies before People) |
| Missing fields | Custom field doesn't exist | Create field in Settings → Data Model before importing |
| Select field errors | Using display labels | Use API names (enable Advanced mode in Settings to find them) |
| User relation empty | User hasn't accepted invite | Ensure all users accept invitations before importing |
See How to Fix Import Errors for detailed troubleshooting steps.
<Check>All records imported (compare counts with source system)</Check> <Check>Relations working correctly (People linked to Companies)</Check> <Check>User assignments mapped correctly (Owner, Assignee)</Check> <Check>Custom fields populated</Check> <Check>No unexpected duplicates</Check>
<Check>Views recreated</Check> <Check>Workflows recreated and tested</Check> <Check>Roles and permissions configured</Check> <Check>Email/calendar sync connected</Check>
<Check>Team trained on new system</Check> <Check>Old CRM access plan decided (keep for reference? When to disable?)</Check>
For complex migrations or large datasets:
Contact [email protected] or explore our Implementation Services.