Documentation Index
Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide walks you through importing relations between objects—for example, linking People to Companies, or Opportunities to People.What can be imported: Only one-to-many relations pointing to a single object type. Relations pointing to multiple object types (like Notes linking to People AND Companies) are not yet supported for import.
Understanding Relations
What is a “One-to-Many” Relation?
In a one-to-many relation:- One Company has many People (employees)
- One Company has many Opportunities
- One Person has many Tasks
Common Relations in Twenty
| Relation | ”One” Side (Parent) | “Many” Side (Child) |
|---|---|---|
| Companies → People | Company | People |
| Companies → Opportunities | Company | Opportunities |
| People → Tasks | Person | Tasks |
| People → Notes | Person | Notes |
Step 1: Identify the “One” and “Many” Sides
Before importing, determine which object is the parent and which is the child. Ask yourself: “Does ONE [Object A] have MANY [Object B]?”- One Company → Many People ✓ (Company is parent)
- One Person → Many Companies ✗ (This is wrong—a person belongs to one company)
Step 2: Import the Parent Records First
The parent (“one” side) must exist in Twenty before you can reference it. Import order:- Companies first (no dependencies)
- People second (link to Companies)
- Opportunities third (link to Companies and/or People)
- Tasks/Notes (link to any of the above)
Step 3: Note the Parent’s Unique Identifier
You need to reference the parent record using a unique identifier. Available options:| Parent Object | Available Unique Identifiers |
|---|---|
| Companies | id (UUID), domain (recommended), or any custom unique field |
| People | id (UUID), email, or any custom unique field |
| Workspace Members | id (UUID), email (not name) |
| Custom Objects | id (UUID), or any field marked as unique |
Recommended: Use
domain for Companies and email for People. These are human-readable and easy to verify in your spreadsheet.Finding the Identifier
If you need theid:
- Export the parent records from Twenty
- The export includes the
idcolumn - Use these IDs in your child records file
Step 4: Verify the Relation Field Exists
Before importing, ensure the relation field exists between your objects. To check or create:- Go to Settings → Data Model
- Select your child object (e.g., People)
- Look for a relation field pointing to the parent (e.g., Company)
- If it doesn’t exist, create it:
- Click + Add field
- Select Relation type
- Choose the parent object
Step 5: Prepare Your CSV File
Add a column to your child CSV that references the parent using its unique identifier.Example: People Linking to Companies
Your People CSV:companyDomain column references the Company’s domain.
Format Requirements
| Identifier | Format | Example |
|---|---|---|
| Domain | URL format | https://acme.com |
| Standard email | john@acme.com | |
| ID | UUID | c776ee49-f608-4a77-8cc8-6fe96ae1e43f |
Important Rules
- Exact match required — the value must exactly match the parent record
- Map only ONE unique identifier — don’t include both
companyIdANDcompanyDomain - Case sensitive —
Acme.com≠acme.com
Step 6: Upload and Map the Relation
- Navigate to the child object (e.g., People)
- Click ⋮ → Import records
- Upload your CSV file
- In the field mapping step:
- Find your relation column (e.g.,
companyDomain) - Map it to the Company relation field
- Find your relation column (e.g.,
- Complete the remaining mapping
- Review errors and confirm
Step 7: Verify the Import
After importing:- Open a few child records (e.g., People)
- Verify the relation field shows the correct parent (e.g., Company)
- Open a parent record and check the related records section
Common Mistakes to Avoid
| Mistake | Problem | Solution |
|---|---|---|
| Wrong import order | Importing People before Companies | Always import parents first, then children |
| Wrong domain format | Using acme.com instead of https://acme.com | Use full URL format with https:// |
| Multiple unique fields | Mapping both companyId AND companyDomain | Map only ONE unique identifier |
| Missing relation field | The relation field doesn’t exist in the data model | Create it in Settings → Data Model before importing |
| Non-existent records | The parent record doesn’t exist in Twenty | Import parent records first, or check for typos |
| Case mismatch | Acme.com in file but acme.com in Twenty | Ensure exact case matching |
Linking to Workspace Members
When linking to Workspace Members (your team):- Use their email address, not their name
- Example:
owner@yourcompany.com, not “John Smith”
FAQ
What if my parent record doesn't have a domain or email?
What if my parent record doesn't have a domain or email?
You have two options:
- Use the Twenty
id(export parent records to get their IDs) - Create a custom unique field in your data model to store an external ID from your previous system
Can I update relations on existing records?
Can I update relations on existing records?
Yes! Include the child record’s unique identifier (e.g.,
email for People) and the new relation value. The import will update the relation.Can I import Many-to-Many relationships?
Can I import Many-to-Many relationships?
Many-to-Many relations are not yet supported for import. This is planned for H1 2026.
Can I link to multiple object types (like Notes to People AND Companies)?
Can I link to multiple object types (like Notes to People AND Companies)?
Relations pointing to multiple object types are not yet supported for import/export. This is on our roadmap.
What happens if a parent record doesn't exist?
What happens if a parent record doesn't exist?
The import will show an error for that row. You can either:
- Import the parent record first, then re-import
- Fix the reference value
- Remove the row from import
Why is my relation not linking correctly?
Why is my relation not linking correctly?
Common causes:
- Wrong format (use
https://domain.comfor domains) - Case mismatch (check exact spelling)
- Parent doesn’t exist (import parents first)
- Mapping multiple identifiers (use only one)