packages/twenty-docs/user-guide/data-migration/capabilities/uniqueness-constraints.mdx
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
| Object | Unique Fields |
|---|---|
| People | id, email |
| Companies | id, domain |
| Custom objects | id only (by default) |
<Note>The id field is Twenty's internal identifier, auto-generated for each record. It uses UUID format (e.g., c776ee49-f608-4a77-8cc8-6fe96ae1e43f).</Note>
You can define additional unique fields under Settings → Data Model:
<Note>The field name id is reserved for Twenty's internal ID. Use a different name like externalId or legacyId for external identifiers.</Note>
If a unique field value doesn't exist, a new record is created.
If a unique field value matches an existing record, that record is updated with the new data. <Warning>To update existing records, it is recommended to only match one unique field.</Warning>
Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored with the new data. </Warning>
During the validation phase: