跳转到主要内容

Overview

Need to update many records at once? Instead of editing them one by one, use the CSV import to bulk update existing records. Use cases:
  • Update job titles for multiple people
  • Change company information in bulk
  • Add data to new custom fields
  • Correct data errors across many records

How It Works

When you import a file containing a unique identifier that matches an existing record, Twenty updates that record instead of creating a duplicate.
If unique identifier…Twenty will…
Matches an existing recordUpdate the existing record
Doesn’t match any recordCreate a new record
Is missing from your fileCreate a new record (with auto-generated ID)
Multi-Select fields are overwritten, not merged.If a record has Option A and Option B selected, and you import ["Option C"], the record will only have Option C after import. The import replaces all previous selections—it does not add to them.To keep existing values, include them all in your import: ["Option A","Option B","Option C"]

Step 1: Export Your Current Data

First, export the records you want to update:
  1. Navigate to the object (People, Companies, etc.)
  2. Add the columns you need — click Options → Fields to show the fields you want to update
  3. Filter if needed — narrow down to only the records you want to update
  4. Click Export view
  5. Save the CSV file
Why export first? The exported file has the correct format, includes unique identifiers, and maps automatically during import.

What Gets Exported

  • All visible columns in your current view
  • The record’s unique identifiers (id, email, domain)
  • Current field values you can modify

Step 2: Edit the CSV File

Open the exported file in your spreadsheet application (Excel, Google Sheets, etc.):
  1. Keep the unique identifier column — don’t delete id, email, or domain
  2. Update the values in the columns you want to change
  3. Remove columns you don’t need to update (optional, but cleaner)
  4. Don’t change unique identifier values — or Twenty will create new records

Example: Updating Job Titles

Exported file:
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,[email protected],John,Smith,Sales Rep
550e8400-e29b-41d4-a716-446655440002,[email protected],Jane,Doe,Sales Rep
550e8400-e29b-41d4-a716-446655440003,[email protected],Bob,Johnson,Sales Rep
After your edits:
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,[email protected],John,Smith,Account Executive
550e8400-e29b-41d4-a716-446655440002,[email protected],Jane,Doe,Senior Account Executive
550e8400-e29b-41d4-a716-446655440003,[email protected],Bob,Johnson,Account Executive
Don’t change the unique identifier values.If you change [email protected] to [email protected], Twenty will create a new record instead of updating the existing one.

Step 3: Import the Updated File

  1. Navigate to the object
  2. Click Import records
  3. Upload your edited CSV file
  4. Ensure the unique identifier is mapped — verify email, domain, or id is mapped correctly
  5. Review the field mappings
  6. Check for errors
  7. Click Confirm
Twenty matches records by the unique identifier and updates them with new values.

Choosing the Right Unique Identifier

ObjectRecommendedAlternativeNotes
PeopleemailidEmail is human-readable
CompaniesdomainidDomain is human-readable
Custom objectsAny unique fieldidUse your custom unique field
Use only ONE unique identifier. Don’t map both email AND id. This can cause confusion and errors.

Using Custom Unique Fields

If you have a custom field marked as unique (like an external ID from another system):
  1. Include that field in your export and import
  2. Map it during import
  3. Twenty will match on that field

Step 4: Verify the Updates

After importing:
  1. Open a few updated records
  2. Verify the changes were applied
  3. Check that no duplicate records were created

What About Fields Not in Your File?

Fields not included in your import file remain unchanged.
Your file includes…Result
email, jobTitleOnly jobTitle is updated; other fields stay the same
email, jobTitle, phonejobTitle and phone are updated
This means you only need to include the fields you want to change (plus the unique identifier).

Combining Updates and New Records

You can update existing records AND create new ones in the same import:
email,firstName,lastName,jobTitle
[email protected],John,Smith,Senior Manager    ← Updates existing (email matches)
[email protected],New,Person,Analyst      ← Creates new (email doesn't match)

Common Mistakes to Avoid

MistakeProblemResultSolution
Changing unique identifierChanged [email protected] to [email protected]Creates new record instead of updatingKeep unique identifiers unchanged
Multiple unique fieldsMapping both email AND idPotential matching conflictsMap only ONE unique identifier
No unique identifierFile only has firstName, lastName, jobTitleAll rows create new recordsAlways include email, domain, or id
Case mismatchFile has [email protected] but Twenty has [email protected]Creates new recordExport from Twenty to get exact values

FAQ

Records with unique identifiers that don’t match existing records will be created as new records. This lets you update and create in the same import.
Yes, leave the cell empty in your CSV. The import will clear that field’s value on the existing record.
Fields not in your import file remain unchanged on existing records. Only fields you include are updated.
Yes! Include the relation’s unique identifier (e.g., companyDomain) and map it to the relation field. The relation will be updated.
During the import review step, Twenty shows you how many records will be updated vs. created based on unique identifier matches.
There’s no automatic undo. We recommend exporting your data as a backup before making bulk updates.

Best Practices

  1. Export first — always start from an export to ensure correct format
  2. Backup before updating — export your data before making bulk changes
  3. Test with a few records — try updating 5-10 records first before doing a large batch
  4. Use human-readable identifiersemail and domain are easier to verify than id
  5. Only include necessary columns — fewer columns means less chance for errors

Troubleshooting

Having issues? Check: