i18n - docs translations (#17433)

Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot]
2026-01-26 07:11:01 +01:00
committed by GitHub
parent c8c821a692
commit 2353bc62cc
361 changed files with 20096 additions and 17317 deletions
@@ -1,76 +1,76 @@
---
title: Error Handling & Validation
description: Review and fix import errors directly in the UI before confirming.
title: Manejo de errores y validación
description: Revisa y corrige los errores de importación directamente en la interfaz antes de confirmar.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Pre-Import Validation
## Validación previa a la importación
After uploading your file and mapping fields, Twenty validates your data **before** importing. This allows you to catch and fix errors without affecting your existing data.
Después de cargar tu archivo y asignar los campos, Twenty valida tus datos **antes** de importar. Esto te permite detectar y corregir errores sin afectar tus datos existentes.
## How It Works
## Cómo Funciona
1. **Upload** your CSV file
2. **Map** your columns to Twenty fields
3. **Review** the potential errors highlighted in yellow
4. **Fix errors** directly in the UI
5. **Confirm** the import
1. **Carga** tu archivo CSV
2. **Asigna** tus columnas a los campos de Twenty
3. **Revisa** los posibles errores resaltados en amarillo
4. **Corrige los errores** directamente en la interfaz
5. **Confirma** la importación
<VimeoEmbed videoId="1145273857" title="Video demonstration" />
<VimeoEmbed videoId="1145273857" title="Demostración en video" />
## Error Display
## Visualización de errores
Rows with issues are highlighted in **yellow**. You can:
Las filas con problemas se resaltan en **amarillo**. Puedes:
* **Edit the cell directly** to fix the error
* **Remove the row** to skip it entirely
* **Edita la celda directamente** para corregir el error
* **Elimina la fila** para omitirla por completo
This inline editing saves time—no need to go back to your spreadsheet, fix errors, and re-upload.
Esta edición en línea ahorra tiempo—no necesitas volver a tu hoja de cálculo, corregir los errores y volver a cargar.
## Common Error Types
## Tipos de errores comunes
### Duplicate Values
### Valores duplicados
**Cause**: A unique field (email, domain) already exists in Twenty or appears twice in your file.
**Causa**: Un campo único (correo electrónico, dominio) ya existe en Twenty o aparece dos veces en tu archivo.
**Fix**:
**Solución**:
* Edit the duplicate value in the import UI
* Remove one of the duplicate rows
* Edita el valor duplicado en la interfaz de importación
* Elimina una de las filas duplicadas
See [Uniqueness Constraints](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints) for more details on how uniqueness is enforced.
Consulta [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints) para más detalles sobre cómo se aplica la unicidad.
### Invalid Format
### Formato no válido
**Cause**: Data doesn't match the expected format (e.g., invalid email, wrong date format).
**Causa**: Los datos no coinciden con el formato esperado (p. ej., correo electrónico no válido, formato de fecha incorrecto).
**Fix**: Edit the cell to use the correct format.
**Solución**: Edita la celda para usar el formato correcto.
See [Field Mapping](/l/es/user-guide/data-migration/capabilities/field-mapping) for the expected format of each field type.
Consulta [Asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping) para conocer el formato esperado de cada tipo de campo.
### Missing Required Fields
### Faltan campos obligatorios
**Cause**: A required field is empty.
**Causa**: Un campo obligatorio está vacío.
**Fix**: Enter a value in the required field or remove the row.
**Solución**: Introduce un valor en el campo obligatorio o elimina la fila.
### Relation Not Found
### Relación no encontrada
**Cause**: The referenced record doesn't exist (e.g., a Company domain that wasn't imported).
**Causa**: El registro de referencia no existe (p. ej., un dominio de Empresa que no se importó).
**Fix**:
**Solución**:
* Import the parent records first
* Or correct the reference value
* Importa primero los registros padre
* O corrige el valor de la referencia
See [Import Relations](/l/es/user-guide/data-migration/capabilities/import-relations) for the correct import order and how to link records.
Consulta [Importar relaciones](/l/es/user-guide/data-migration/capabilities/import-relations) para conocer el orden correcto de importación y cómo vincular registros.
## Tips for Fewer Errors
## Consejos para reducir errores
1. **Download the template** to see expected format prior to importing your file
2. **Clean your data** in the spreadsheet first
3. **Import files in correct order** to import relations (Companies → People → Opportunities)
4. **Test with small batches** before full import
5. **Check for duplicates** before uploading
6. **Limit the size of your file to 10,000 records** per file
1. **Descarga la plantilla** para ver el formato esperado antes de importar tu archivo
2. **Limpia tus datos** primero en la hoja de cálculo
3. **Importa los archivos en el orden correcto** para importar relaciones (Empresas → Personas → Oportunidades)
4. **Haz pruebas con lotes pequeños** antes de la importación completa
5. **Verifica duplicados** antes de cargar
6. **Limita el tamaño de tu archivo a 10.000 registros** por archivo
@@ -1,198 +1,198 @@
---
title: Field Mapping
description: How field mapping works during data import.
title: Asignación de campos
description: Cómo funciona la asignación de campos durante la importación de datos.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## How Field Mapping Works
## Cómo funciona la asignación de campos
When you upload a file, Twenty analyzes your columns and attempts to match them to existing fields.
Cuando cargas un archivo, Twenty analiza las columnas e intenta hacerlas coincidir con los campos existentes.
### Automatic Mapping
### Asignación automática
Twenty tries to match columns based on:
Twenty intenta hacer coincidir las columnas en función de:
* Column header names (exact or similar matches)
* Data type detection (dates, numbers, emails)
* Common field patterns
* Nombres de encabezados de columna (coincidencias exactas o similares)
* Detección de tipo de datos (fechas, números, correos electrónicos)
* Patrones de campo comunes
<Note>**Quick tip:** Export a few rows from the object you want to import. The exported file will have the exact column names Twenty expects, making automatic mapping seamless during import.</Note>
<Note>**Consejo rápido:** Exporta algunas filas del objeto que quieres importar. El archivo exportado tendrá los nombres de columna exactos que Twenty espera, lo que hará que la asignación automática sea fluida durante la importación.</Note>
### Manual Mapping Options
### Opciones de asignación manual
For each column, you can:
Para cada columna, puedes:
* **Map to a field**: Select the matching Twenty field from a dropdown
* **Do not map**: Skip the column entirely (data won't be imported)
* **Asignar a un campo**: Selecciona el campo correspondiente de Twenty desde un menú desplegable
* **No asignar**: Omite la columna por completo (los datos no se importarán)
<Note>**Fields must exist before import.** The import creates records, not fields. Create custom fields under **Settings → Data Model** before importing.</Note>
<Note>**Los campos deben existir antes de la importación.** La importación crea registros, no campos. Crea campos personalizados en **Settings → Data Model** antes de importar.</Note>
## Field Type Compatibility
## Compatibilidad de tipos de campo
All field types available in the Data Model are supported for import.
Todos los tipos de campo disponibles en el Data Model son compatibles con la importación.
You can also import `id` values to either assign a specific ID to new records or update existing ones.
También puedes importar valores de `id` para asignar un ID específico a los nuevos registros o actualizar los existentes.
<img src="/images/user-guide/fields/all-field-types.png" style={{width:'100%'}} />
## Data Format Requirements
## Requisitos de formato de datos
<Note>**Some fields have special syntax.** We recommend downloading the sample file before preparing your import to see the expected syntax for each field type.</Note>
<Note>**Algunos campos tienen una sintaxis especial.** Recomendamos descargar el archivo de muestra antes de preparar la importación para ver la sintaxis esperada para cada tipo de campo.</Note>
### Address Fields
### Campos de dirección
Address is a nested field with multiple columns. Some can be left empty.
Dirección es un campo anidado con múltiples columnas. Algunos se pueden dejar vacíos.
* **Address / Address 1**: Street address line 1
* **Address / Address 2**: Street address line 2
* **Address / City**: City name
* **Address / State**: State or province
* **Address / Country**: Country name
* **Address / Post Code**: Postal/ZIP code
* **Address / Address 1**: Primera línea de la dirección
* **Address / Address 2**: Segunda línea de la dirección
* **Address / City**: Nombre de la ciudad
* **Address / State**: Estado o provincia
* **Address / Country**: Nombre del país
* **Address / Post Code**: Código postal/ZIP
### Array Fields
### Campos de array
Use the following format:
Usa el siguiente formato:
```
["value1","value2"]
```
### Boolean Fields
### Campos booleanos
Use `TRUE` or `FALSE` (uppercase) - not `true` or `false`
Usa `TRUE` o `FALSE` (mayúsculas), no `true` o `false`
### Currency Fields
### Campos de moneda
Currency is a nested field with two columns that **both must be filled**:
Moneda es un campo anidado con dos columnas que **ambas deben completarse**:
* **Amount / Amount**: The numeric value (e.g., `1234.56`)
* **Amount / Currency**: The currency code (e.g., `USD`, `EUR`)
* **Amount / Amount**: El valor numérico (p. ej., `1234.56`)
* **Amount / Currency**: El código de la moneda (p. ej., `USD`, `EUR`)
### Date Fields
### Campos de fecha
Supported formats:
Formatos admitidos:
* `YYYY-MM-DD` (recommended)
* `YYYY-MM-DD` (recomendado)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
* ISO 8601 format
* Formato ISO 8601
### Domain Fields
### Campos de dominio
* It is recommended to use the format `https://domain.com` to avoid creating duplicates, as this is the format used for Companies created by the mailbox and calendar synchronizations
* A `Domain Label` and `Domain URL` can be filled: best practice is to fill `domain.com` in the label and `https://domain.com` in the url
* Domains must be unique within the Companies object
* **Domains must be unique within the file to import**
* Se recomienda usar el formato `https://domain.com` para evitar crear duplicados, ya que este es el formato utilizado para las Companies creadas por las sincronizaciones del buzón y del calendario
* Se pueden completar `Domain Label` y `Domain URL`: la mejor práctica es poner `domain.com` en la etiqueta y `https://domain.com` en la URL
* Los dominios deben ser únicos dentro del objeto Companies
* **Los dominios deben ser únicos dentro del archivo a importar**
### Email Fields
### Campos de correo electrónico
* Must be valid email format
* Emails must be unique within the People object
* **Emails must be unique within the file to import**
* For additional emails: use **Emails / Primary Email** for the main email, and **Emails / Additional Emails** with this format:
* Debe tener un formato de correo electrónico válido
* Los correos electrónicos deben ser únicos dentro del objeto People
* **Los correos electrónicos deben ser únicos dentro del archivo a importar**
* Para correos adicionales: usa **Emails / Primary Email** para el correo principal y **Emails / Additional Emails** con este formato:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Id Fields
### Campos de ID
Specifying an `id` during import is optional. Twenty auto-generates one if not provided.
Es opcional especificar un `id` durante la importación. Twenty lo genera automáticamente si no se proporciona.
Use cases for mapping an `id` column:
Casos de uso para asignar una columna `id`:
* **Set a specific ID**: Choose the UUID for newly created records
* **Update existing records**: Match against existing records to update them instead of creating duplicates. In that case, it is recommended to not map the other unique fields: mapping only one unique field ensures a smoother import.
* **Establecer un ID específico**: Elige el UUID para los registros recién creados
* **Actualizar registros existentes**: Haz coincidir con los registros existentes para actualizarlos en lugar de crear duplicados. En ese caso, se recomienda no asignar los otros campos únicos: asignar solo un campo único garantiza una importación más fluida.
<Note>If you provide an `id`, it must be in UUID format (e.g., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
<Note>Si proporcionas un `id`, debe estar en formato UUID (p. ej., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
### JSON Fields
### Campos JSON
Use valid JSON format:
Usa un formato JSON válido:
```
{"key":"value","key2":"value2"}
```
### Links Fields
### Campos de enlaces
Similar to Domain fields:
Similar a los campos de dominio:
* Fill both the label and URL columns: **Links / Link URL** and **Links / Link Label**
* Use full URL format: `https://example.com`
* For secondary links, use **Links / Secondary Links** column with this format:
* Completa ambas columnas de etiqueta y URL: **Links / Link URL** y **Links / Link Label**
* Usa el formato de URL completo: `https://example.com`
* Para enlaces secundarios, usa la columna **Links / Secondary Links** con este formato:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### Multi-Select Fields
### Campos de selección múltiple
Use the **API names** (not the display labels) in the following format:
Usa los **nombres de la API** (no las etiquetas visibles) con el siguiente formato:
```
["VALUE1","VALUE2"]
```
See [here](#finding-api-names-for-select-fields) where to find the API names.
Consulta [aquí](#finding-api-names-for-select-fields) dónde encontrar los nombres de la API.
<Note>New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.</Note>
<Note>Las nuevas opciones de selección no se crearán automáticamente mediante la importación. Deben agregarse en **Settings → Data Model** antes de importar.</Note>
<Warning>
**Import overwrites, it does not add.**
**La importación sobrescribe; no agrega.**
If a record already has `VALUE2` and `VALUE3` selected, and you import `["VALUE1"]`, the record will only have `VALUE1` after import. The previous selections are replaced, not merged.
Si un registro ya tiene seleccionados `VALUE2` y `VALUE3`, y importas ["VALUE1"], el registro solo tendrá `VALUE1` después de la importación. Las selecciones anteriores se reemplazan, no se fusionan.
</Warning>
### Number Fields
### Campos numéricos
* Numbers only
* Decimals use period: `1234.56`
* No thousands separators
* Solo números
* Los decimales usan punto: `1234.56`
* Sin separadores de miles
### Phone Fields
### Campos de teléfono
Phone is a nested field with multiple columns that **must be filled**
Teléfono es un campo anidado con múltiples columnas que **deben completarse**
* **Phones / Primary Phone Number**: The phone number (e.g., `4159095555`)
* **Phones / Primary Phone Country Code**: Country code (e.g., `US`)
* **Phones / Primary Phone Calling Code**: Dialing code (e.g., `+1`)
* **Phones / Primary Phone Number**: El número de teléfono (p. ej., `4159095555`)
* **Phones / Primary Phone Country Code**: Código de país (p. ej., `US`)
* **Phones / Primary Phone Calling Code**: Código de marcación (p. ej., `+1`)
### Rating Fields
### Campos de calificación
Use the API name format: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
Usa el formato de nombre de API: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
### Relation Fields
### Campos de Relación
Please see our dedicated article: [Import Relations Between Objects](/l/es/user-guide/data-migration/capabilities/import-relations)
Consulta nuestro artículo dedicado: [Importar relaciones entre objetos](/l/es/user-guide/data-migration/capabilities/import-relations)
### Select Fields
### Campos de Selección
Use the **API name** of the option (not the display label):
Usa el nombre de la API de la opción (no la etiqueta visible):
```
VALUE1
```
See [here](#finding-api-names-for-select-fields) where to find the API names.
<Note>New select options will not be created automatically by the import. They must be added under **Settings → Data Model** before importing.</Note>
Consulta [aquí](#finding-api-names-for-select-fields) dónde encontrar los nombres de la API.
<Note>Las nuevas opciones de Select no se crearán automáticamente mediante la importación. Deben agregarse en **Configuración → Modelo de datos** antes de importar.</Note>
### Text Fields
### Campos de texto
* No special formatting required
* Leading/trailing spaces are trimmed
* No se requiere formato especial
* Los espacios iniciales y finales se eliminan
## Finding API Names
## Encontrar nombres de la API
For Select, Multi-Select, and Array fields with predefined options, you must use the **API names**, not the display labels.
Para los campos Select, Multi-Select y Array con opciones predefinidas, debes usar los **nombres de la API**, no las etiquetas visibles.
### How to Find API Names
### Cómo encontrar los nombres de la API
1. Go to **Settings → Data Model**
2. Select the object and field
3. Enable **Advanced mode** (toggle at the bottom right of the settings page)
4. View the API name for each option
1. Ve a **Configuración → Modelo de datos**
2. Selecciona el objeto y el campo
3. Activa el **modo avanzado** (interruptor en la parte inferior derecha de la página de configuración)
4. Consulta el nombre de la API de cada opción
<VimeoEmbed videoId="1144910809" title="Video demonstration" />
<VimeoEmbed videoId="1144910809" title="Demostración en video" />
@@ -1,48 +1,48 @@
---
title: Supported File Formats
description: File formats supported for data import in Twenty.
title: Formatos de archivo compatibles
description: Formatos de archivo compatibles para la importación de datos en Twenty.
---
## Supported Formats
## Formatos compatibles
Twenty supports three file formats for import:
Twenty admite tres formatos de archivo para la importación:
| Format | Extension | Notes |
| ------------------ | --------- | ---------------------------- |
| **CSV** | .csv | Recommended, most compatible |
| **Excel** | .xlsx | Modern Excel format |
| **Excel (Legacy)** | .xls | Older Excel format |
| Formato | Extensión | Notas |
| -------------------- | --------- | ------------------------------ |
| **CSV** | .csv | Recomendado, el más compatible |
| **Excel** | .xlsx | Formato de Excel moderno |
| **Excel (heredado)** | .xls | Formato de Excel antiguo |
## File Requirements
## Requisitos del archivo
| Requirement | Value |
| ---------------- | ------------------------------------- |
| **Encoding** | UTF-8 recommended |
| **Record limit** | 10,000 records per file |
| **Structure** | First row must contain column headers |
| **Content** | One object type per file |
| Requisito | Valor |
| ----------------------- | -------------------------------------------------------- |
| **Codificación** | Se recomienda UTF-8 |
| **Límite de registros** | 10.000 registros por archivo |
| **Estructura** | La primera fila debe contener los encabezados de columna |
| **Contenido** | Un tipo de objeto por archivo |
## CSV Best Practices
## Mejores prácticas para CSV
* **Delimiter**: Use comma (`,`) or semicolon (`;`)
* **Text qualifier**: Use double quotes (`"`) for text containing commas
* **Line endings**: Windows (CRLF) or Unix (LF) both supported
* **Empty values**: Leave cells empty, don't use "NULL" or "N/A"
* **Delimitador**: Use coma (`,`) o punto y coma (`;`)
* **Calificador de texto**: Use comillas dobles (`"`) para texto que contenga comas
* **Finales de línea**: Windows (CRLF) o Unix (LF), ambos compatibles
* **Valores vacíos**: Deje las celdas vacías; no use "NULL" ni "N/A"
## Excel Best Practices
## Mejores prácticas para Excel
When exporting from Excel:
Al exportar desde Excel:
* Remove formulas (export values only)
* Delete empty rows at the end
* Ensure no merged cells
* Use the first sheet only
* Elimine las fórmulas (exporte solo valores)
* Elimine las filas vacías al final
* Asegúrese de que no haya celdas combinadas
* Use solo la primera hoja
## Large Datasets
## Conjuntos de datos grandes
For datasets larger than 10,000 records:
Para conjuntos de datos de más de 10.000 registros:
* Split into multiple files
* Or use the [API import](/l/es/user-guide/data-migration/how-tos/import-data-via-api) for unlimited records
* Divídalos en varios archivos
* O use la [importación mediante API](/l/es/user-guide/data-migration/how-tos/import-data-via-api) para registros ilimitados
<Note>For very large migrations (100,000+ records), the API is significantly faster and more reliable than CSV imports.</Note>
<Note>Para migraciones muy grandes (100.000+ registros), la API es significativamente más rápida y más fiable que las importaciones CSV.</Note>
@@ -1,94 +1,94 @@
---
title: Import Relations Between Objects
description: Import relationships between records via CSV.
title: Importar relaciones entre objetos
description: Importar relaciones entre registros mediante CSV.
---
## Overview
## Resumen
Twenty supports importing relationships between objects during CSV import. This allows you to link records (e.g., attach People to Companies) as part of your data migration.
Twenty admite importar relaciones entre objetos durante la importación de CSV. Esto te permite vincular registros (p. ej., adjuntar Personas a Empresas) como parte de tu migración de datos.
<Note>**Currently supported for import**: One-to-many relations pointing to a single object type on each side (e.g., People → Companies). Relations pointing to multiple object types are not yet supported in import/export.</Note>
<Note>**Actualmente compatible para la importación**: Relaciones de uno a muchos que apuntan a un único tipo de objeto en cada lado (p. ej., Personas → Empresas). Las relaciones que apuntan a varios tipos de objeto aún no son compatibles con la importación/exportación.</Note>
## How Relations Work in Twenty
## Cómo funcionan las relaciones en Twenty
### One to Many / Many to One
### De uno a muchos / de muchos a uno
Twenty supports standard relations where one record links to many others:
Twenty admite relaciones estándar en las que un registro se vincula a muchos otros:
* **One Company → Many People**: A company can have multiple employees, but each person belongs to one company
* **One Company → Many Opportunities**: A company can have multiple deals, but each opportunity belongs to one company
* **Una Empresa → Muchas Personas**: Una empresa puede tener múltiples empleados, pero cada persona pertenece a una sola empresa
* **Una Empresa → Muchas Oportunidades**: Una empresa puede tener múltiples acuerdos, pero cada oportunidad pertenece a una sola empresa
### Relations That Can Point to Multiple Object Types
### Relaciones que pueden apuntar a varios tipos de objeto
Some relations can connect to different types of objects. This works in two ways:
Algunas relaciones pueden conectarse a diferentes tipos de objetos. Esto funciona de dos maneras:
**Pattern 1: Many records linking to one record each from different object types**
**Patrón 1: Muchos registros que se vinculan cada uno a un registro de diferentes tipos de objeto**
Several Notes, Tasks, or Activities can each be attached to multiple object types at once:
Varias Notas, Tareas o Actividades pueden adjuntarse a la vez a varios tipos de objeto:
* **Notes** can be linked to one Person, one Company, and one Opportunity simultaneously
* **Tasks** can be linked to one Person, one Company, and one Opportunity simultaneously
* **Notas** pueden vincularse simultáneamente a una Persona, una Empresa y una Oportunidad
* **Tareas** pueden vincularse simultáneamente a una Persona, una Empresa y una Oportunidad
Here, the Notes/Tasks are on the "many" side. Each links to one record per object type.
Aquí, las Notas/Tareas están en el lado de "muchos". Cada una se vincula a un registro por tipo de objeto.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
**Pattern 2: One record receiving links from many records of different object types**
**Patrón 2: Un registro que recibe vínculos de muchos registros de diferentes tipos de objeto**
A Project can receive links from multiple records across different object types:
Un Proyecto puede recibir vínculos de múltiples registros de diferentes tipos de objeto:
* **A Project** can have many People linked to it, many Companies linked to it, and many Notes attached to it
* **Un Proyecto** puede tener muchas Personas vinculadas, muchas Empresas vinculadas y muchas Notas adjuntas
Here, the Project is on the "one" side. Multiple records from different objects can all link to the same Project.
Aquí, el Proyecto está en el lado de "uno". Varios registros de diferentes objetos pueden vincularse todos al mismo Proyecto.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**Import/Export limitation**: Relations that point to multiple object types (like Notes → People/Companies/Opportunities) are **not yet supported** in CSV import or export.
**Limitación de importación/exportación**: Las relaciones que apuntan a varios tipos de objeto (como Notas → Personas/Empresas/Oportunidades) **aún no son compatibles** en la importación o exportación de CSV.
* **Import**: Only one-to-many relations pointing to a single object type on each side can be imported
* **Export**: Columns for relations pointing to multiple object types are currently left empty
* **Importación**: Solo se pueden importar relaciones de uno a muchos que apunten a un único tipo de objeto en cada lado
* **Exportación**: Actualmente, las columnas de relaciones que apuntan a varios tipos de objeto se dejan vacías
This is on our roadmap.
Esto está en nuestra hoja de ruta.
</Warning>
### What's Not Supported Today
### Qué no es compatible hoy
**Many to Many relations** are not yet available. For example, you cannot currently create a relation where:
**Relaciones de muchos a muchos** aún no están disponibles. Por ejemplo, actualmente no puedes crear una relación en la que:
* Many People are linked to many Projects
* Muchas Personas están vinculadas a muchos Proyectos
<Note>Many to Many relations are planned for H1 2026.</Note>
<Note>Las relaciones de muchos a muchos están previstas para el 1.º semestre de 2026.</Note>
## Linking Records During Import
## Vincular registros durante la importación
<Note>**Reminder**: Only one-to-many relations pointing to a single object type can be imported (e.g., People → Companies). Relations pointing to multiple object types (e.g., Notes → People/Companies/Opportunities) are not yet supported.</Note>
<Note>**Recordatorio**: Solo se pueden importar relaciones de uno a muchos que apunten a un único tipo de objeto (p. ej., Personas → Empresas). Las relaciones que apuntan a varios tipos de objeto (p. ej., Notas → Personas/Empresas/Oportunidades) aún no son compatibles.</Note>
### Step 1: Identify the "One" and "Many" Sides
### Paso 1: Identificar los lados "Uno" y "Muchos"
First, determine which object is on the "one" side and which is on the "many" side of the relationship.
Primero, determina qué objeto está en el lado de "uno" y cuál en el lado de "muchos" de la relación.
**Example**:
**Ejemplo**:
* **Company** is the "one" side (one company has many employees)
* **People** is the "many" side (each person belongs to one company)
* **Empresa** es el lado de "uno" (una empresa tiene muchos empleados)
* **Personas** es el lado de "muchos" (cada persona pertenece a una empresa)
### Step 2: Ensure the "One" Side Records Exist
### Paso 2: Asegúrate de que existan los registros del lado de "uno"
Before importing the "many" side, the "one" side records must already exist in Twenty.
Antes de importar el lado de "muchos", los registros del lado de "uno" ya deben existir en Twenty.
* Import or create the "one" side records first (e.g., Companies)
* Validate their unique identifier. This can be:
* The `id` (Twenty's UUID)
* A field set as unique (e.g., `domain` for Companies, or an external ID from your previous system)
* Importa o crea primero los registros del lado de "uno" (p. ej., Empresas)
* Valida su identificador único. Este puede ser:
* El `id` (UUID de Twenty)
* Un campo definido como único (p. ej., `domain` para Empresas, o un ID externo de tu sistema anterior)
<Warning>The import will fail if a reference is made to a record that does not exist.</Warning>
<Warning>La importación fallará si se hace referencia a un registro que no existe.</Warning>
### Step 3: Prepare Your CSV File
### Paso 3: Prepara tu archivo CSV
Add a column in your "many" side CSV file that references the "one" side record.
Agrega una columna en tu archivo CSV del lado de "muchos" que haga referencia al registro del lado de "uno".
**Example**: For a People CSV file linking to Companies:
**Ejemplo**: Para un archivo CSV de Personas vinculado a Empresas:
```
firstName,lastName,email,companyDomain
@@ -96,53 +96,53 @@ John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Important**:
**Importante**:
* The value must **exactly match** the unique field on the Company record
* For domains, use the **Domain URL** (e.g., `https://acme.com`), not the Domain Label
* Map only **one** unique identifier per relation: this leads to a smoother import
* El valor debe **coincidir exactamente** con el campo único en el registro de Empresa
* Para dominios, usa la **URL del dominio** (p. ej., `https://acme.com`), no la etiqueta de dominio
* Asigna solo **un** identificador único por relación: esto conduce a una importación más fluida
### Step 4: Ensure the Relation Field Exists
### Paso 4: Asegúrate de que el campo de relación exista
Before uploading your file, make sure the relation field exists between your objects.
Antes de subir tu archivo, asegúrate de que exista el campo de relación entre tus objetos.
If it doesn't exist:
Si no existe:
1. Go to **Settings → Data Model**
2. Select your object (e.g., People)
3. Create a relation field pointing to the target object (e.g., Company)
1. Ve a **Configuración → Modelo de datos**
2. Selecciona tu objeto (p. ej., Personas)
3. Crea un campo de relación que apunte al objeto de destino (p. ej., Empresa)
### Step 5: Upload and Map the Relation
### Paso 5: Carga y asigna la relación
1. Upload your CSV file via the import UI
2. In the field mapping step, find your relation column (e.g., `companyDomain`)
3. Map it to the relation field (e.g., Company)
4. Twenty will automatically link each record to the matching parent
1. Carga tu archivo CSV mediante la interfaz de importación
2. En el paso de asignación de campos, encuentra tu columna de relación (p. ej., `companyDomain`)
3. Asígnala al campo de relación (p. ej., Empresa)
4. Twenty vinculará automáticamente cada registro con el padre correspondiente
### Available Unique Fields for Relations
### Campos únicos disponibles para relaciones
| Object | Unique Fields Available |
| ------------------------------------- | --------------------------------------- |
| **Companies** | `id`, `domain`, any custom unique field |
| **People** | `id`, `email`, any custom unique field |
| **Workspace Members** | `id`, `email` (not name) |
| **Other standard and custom objects** | `id`, any field marked as unique |
| Objeto | Campos únicos disponibles |
| ------------------------------------------- | --------------------------------------------------- |
| **Empresas** | `id`, `domain`, cualquier campo único personalizado |
| **Personas** | `id`, `email`, cualquier campo único personalizado |
| **Miembros del espacio de trabajo** | `id`, `email` (no el nombre) |
| **Otros objetos estándar y personalizados** | `id`, cualquier campo marcado como único |
<Note>**Linking to Workspace Members**: When the relation points to Workspace Members (your team logging into Twenty), reference them by their **email address**, not their name.</Note>
<Note>**Vinculación a Miembros del espacio de trabajo**: Cuando la relación apunta a Miembros del espacio de trabajo (tu equipo que inicia sesión en Twenty), haz referencia a su **dirección de correo electrónico**, no a su nombre.</Note>
<Note>We recommend using `domain` for Companies and `email` for People, as these are human-readable and easy to maintain in spreadsheets.</Note>
<Note>Recomendamos usar `domain` para Empresas y `email` para Personas, ya que son legibles para humanos y fáciles de mantener en hojas de cálculo.</Note>
<Note>**Reminder**: Soft-deleted records (visible under Command Menu → See deleted records) count toward uniqueness criteria. If you import a record with the same unique value as a deleted record, the deleted record will be restored. See [Uniqueness Constraints](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints) for more details.</Note>
<Note>**Recordatorio**: Los registros eliminados de forma lógica (visibles en Menú de comandos → Ver registros eliminados) cuentan para los criterios de unicidad. Si importas un registro con el mismo valor único que un registro eliminado, el registro eliminado se restaurará. Consulta [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints) para más detalles.</Note>
## Import Order Rule
## Regla de orden de importación
<Warning>
**Always import the "one" side first!**
**¡Importa siempre primero el lado de "uno"!**
1. **Companies** first (no dependencies)
2. **People** second (linked to Companies)
3. **Opportunities** third (linked to Companies/People)
4. **Custom objects** following their dependencies
1. **Empresas** primero (sin dependencias)
2. **Personas** en segundo lugar (vinculadas a Empresas)
3. **Oportunidades** en tercer lugar (vinculadas a Empresas/Personas)
4. **Objetos personalizados** según sus dependencias
The parent record must exist before you can reference it.
El registro padre debe existir antes de que puedas hacer referencia a él.
</Warning>
@@ -1,72 +1,72 @@
---
title: Uniqueness Constraints
description: How Twenty enforces data uniqueness during import.
title: Restricciones de unicidad
description: Cómo Twenty garantiza la unicidad de los datos durante la importación.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Overview
## Resumen
Twenty enforces uniqueness on certain fields to prevent duplicate records and ensure data integrity. Understanding these constraints is essential for successful imports.
Twenty aplica unicidad en ciertos campos para evitar registros duplicados y garantizar la integridad de los datos. Comprender estas restricciones es esencial para realizar importaciones exitosas.
## Default Unique Fields
## Campos únicos predeterminados
| Object | Unique Fields |
| ------------------ | ---------------------- |
| **People** | `id`, `email` |
| **Companies** | `id`, `domain` |
| **Custom objects** | `id` only (by default) |
| Objeto | Campos únicos |
| -------------------------- | ----------------------------------- |
| **Personas** | `id`, `email` |
| **Empresas** | `id`, `domain` |
| **Objetos personalizados** | solo `id` (de forma predeterminada) |
<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>
<Note>El campo `id` es el identificador interno de Twenty, generado automáticamente para cada registro. Utiliza el formato UUID (p. ej., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
## Custom Unique Fields
## Campos únicos personalizados
You can define additional unique fields under **Settings → Data Model**:
Puedes definir campos únicos adicionales en **Configuración → Modelo de datos**:
1. Go to **Settings → Data Model**
2. Select the object
3. Click on a field
4. Enable **Unique** in field settings
1. Ve a **Configuración → Modelo de datos**
2. Selecciona el objeto
3. Haz clic en un campo
4. Activa **Único** en la configuración del campo
### Use Cases for Custom Unique Fields
### Casos de uso de campos únicos personalizados
* **External IDs**: Store IDs from other systems (Salesforce ID, HubSpot ID)
* **Business identifiers**: Employee numbers, customer codes
* **Alternative contact info**: LinkedIn profile, phone number
* **ID externos**: Almacenar ID de otros sistemas (Salesforce ID, HubSpot ID)
* **Identificadores empresariales**: Números de empleado, códigos de cliente
* **Información de contacto alternativa**: Perfil de LinkedIn, número de teléfono
<Note>The field name `id` is reserved for Twenty's internal ID. Use a different name like `externalId` or `legacyId` for external identifiers.</Note>
<Note>El nombre de campo `id` está reservado para el ID interno de Twenty. Usa un nombre diferente como `externalId` o `legacyId` para los identificadores externos.</Note>
## Import Behavior
## Comportamiento de la importación
### Creating New Records
### Creación de nuevos registros
If a unique field value doesn't exist, a new record is created.
Si el valor de un campo único no existe, se crea un nuevo registro.
### Updating Existing Records
### Actualización de registros existentes
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>
Si el valor de un campo único coincide con un registro existente, ese registro se **actualiza** con los nuevos datos.
<Warning>Para **actualizar registros existentes**, se recomienda **hacer coincidir solo un campo único**.</Warning>
### Soft-Deleted Records
### Registros eliminados lógicamente
<Warning>
**Deleted records count toward uniqueness.**
**Los registros eliminados de forma lógica cuentan para la unicidad.**
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.
Los registros eliminados de forma lógica (visibles en Menú de comandos → Ver registros eliminados) se incluyen en las verificaciones de unicidad. Si importas un registro con el mismo valor único que un registro eliminado, el registro eliminado se **restaurará** con los nuevos datos.
</Warning>
## Duplicate Detection During Import
## Detección de duplicados durante la importación
During the validation phase:
Durante la fase de validación:
* Duplicates within your file are highlighted in yellow
* You can edit or remove duplicate rows from the UI before starting the import
* Los duplicados dentro de tu archivo se resaltan en amarillo
* Puedes editar o eliminar filas duplicadas desde la interfaz antes de iniciar la importación
<VimeoEmbed videoId="1145246326" title="Video demonstration" />
<VimeoEmbed videoId="1145246326" title="Demostración en video" />
## Best Practices
## Mejores prácticas
1. **Remove duplicates** from your file before importing
2. **Check for existing records** in Twenty before importing
3. **Use external IDs** when migrating from other systems
4. **Include unique fields** if you want to update existing records
1. **Elimina los duplicados** de tu archivo antes de importar
2. **Comprueba si existen registros** en Twenty antes de importar
3. **Usa ID externos** al migrar desde otros sistemas
4. **Incluye campos únicos** si quieres actualizar registros existentes