snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
---
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';
## Validación previa a la importación
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.
## Cómo Funciona
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="Demostración en video" />
## Visualización de errores
Las filas con problemas se resaltan en **amarillo**. Puedes:
* **Edita la celda directamente** para corregir el error
* **Elimina la fila** para omitirla por completo
Esta edición en línea ahorra tiempo: no necesitas volver a tu hoja de cálculo, corregir los errores y volver a cargar.
## Tipos de errores comunes
### Valores duplicados
**Causa**: Un campo único (correo electrónico, dominio) ya existe en Twenty o aparece dos veces en tu archivo.
**Solución**:
* Edita el valor duplicado en la interfaz de importación
* Elimina una de las filas duplicadas
Consulta [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints) para más detalles sobre cómo se aplica la unicidad.
### Formato no válido
**Causa**: Los datos no coinciden con el formato esperado (p. ej., correo electrónico no válido, formato de fecha incorrecto).
**Solución**: Edita la celda para usar el formato correcto.
Consulta [Asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping) para conocer el formato esperado de cada tipo de campo.
### Faltan campos obligatorios
**Causa**: Un campo obligatorio está vacío.
**Solución**: Introduce un valor en el campo obligatorio o elimina la fila.
### Relación no encontrada
**Causa**: El registro de referencia no existe (p. ej., un dominio de Empresa que no se importó).
**Solución**:
* Importa primero los registros padre
* O corrige el valor de la referencia
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.
## Consejos para reducir errores
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 cada archivo a 10.000 registros**

View File

@@ -0,0 +1,198 @@
---
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';
## Cómo funciona la asignación de campos
Cuando cargas un archivo, Twenty analiza las columnas e intenta hacerlas coincidir con los campos existentes.
### Asignación automática
Twenty intenta hacer coincidir las columnas en función de:
* 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>**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>
### Opciones de asignación manual
Para cada columna, puedes:
* **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>**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>
## Compatibilidad de tipos de campo
Todos los tipos de campo disponibles en el Data Model son compatibles con la importación.
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%'}} />
## Requisitos de formato de datos
<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>
### Campos de dirección
Dirección es un campo anidado con múltiples columnas. Algunos se pueden dejar vacíos.
* **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
### Campos de array
Usa el siguiente formato:
```
["value1","value2"]
```
### Campos booleanos
Usa `TRUE` o `FALSE` (mayúsculas), no `true` o `false`
### Campos de moneda
Moneda es un campo anidado con dos columnas que **ambas deben completarse**:
* **Amount / Amount**: El valor numérico (p. ej., `1234.56`)
* **Amount / Currency**: El código de la moneda (p. ej., `USD`, `EUR`)
### Campos de fecha
Formatos admitidos:
* `YYYY-MM-DD` (recomendado)
* `MM/DD/YYYY`
* `DD/MM/YYYY`
* Formato ISO 8601
### Campos de dominio
* 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**
### Campos de correo electrónico
* 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"]
```
### Campos ID
Es opcional especificar un `id` durante la importación. Twenty lo genera automáticamente si no se proporciona.
Casos de uso para asignar una columna `id`:
* **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>Si proporcionas un `id`, debe estar en formato UUID (p. ej., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`).</Note>
### Campos JSON
Usa un formato JSON válido:
```
{"key":"value","key2":"value2"}
```
### Campos de enlaces
Similar a los campos de dominio:
* 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"}]
```
### Campos de selección múltiple
Usa los **nombres de la API** (no las etiquetas visibles) con el siguiente formato:
```
["VALUE1","VALUE2"]
```
Consulta [aquí](#finding-api-names-for-select-fields) dónde encontrar los nombres de la API.
<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>
**Importa sobrescritos; no agrega.**
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>
### Campos numéricos
* Solo números
* Los decimales usan punto: `1234.56`
* Sin separadores de miles
### Campos de teléfono
Teléfono es un campo anidado con múltiples columnas que **deben completarse**
* **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`)
### Campos de calificación
Usa el formato de nombre de API: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4`, `RATING_5`
### Campos de Relación
Consulta nuestro artículo dedicado: [Importar relaciones entre objetos](/l/es/user-guide/data-migration/capabilities/import-relations)
### Campos de Selección
Usa el nombre de la API de la opción (no la etiqueta visible):
```
VALUE1
```
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>
### Campos de texto
* No se requiere formato especial
* Los espacios iniciales y finales se eliminan
## Encontrar nombres de la API
Para los campos Select, Multi-Select y Array con opciones predefinidas, debes usar los **nombres de la API**, no las etiquetas visibles.
### Cómo encontrar los nombres de la API
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="Demostración en video" />

View File

@@ -0,0 +1,48 @@
---
title: Formatos de archivo compatibles
description: Formatos de archivo compatibles para la importación de datos en Twenty.
---
## Formatos compatibles
Twenty admite tres formatos de archivo para la importación:
| Formato | Extensión | Notas |
| -------------------- | --------- | ------------------------------ |
| **CSV** | .csv | Recomendado, el más compatible |
| **Excel** | .xlsx | Formato de Excel moderno |
| **Excel (heredado)** | .xls | Formato de Excel antiguo |
## Requisitos del archivo
| 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 |
## Mejores prácticas para CSV
* **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"
## Mejores prácticas para Excel
Al exportar desde Excel:
* 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
## Conjuntos de datos grandes
Para conjuntos de datos de más de 10.000 registros:
* 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>Para migraciones muy grandes (100.000+ registros), la API es significativamente más rápida y más fiable que las importaciones CSV.</Note>

View File

@@ -0,0 +1,148 @@
---
title: Importar relaciones entre objetos
description: Importar relaciones entre registros mediante CSV.
---
## Resumen
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>**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>
## Cómo funcionan las relaciones en Twenty
### De uno a muchos / de muchos a uno
Twenty admite relaciones estándar en las que un registro se vincula a muchos otros:
* **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
### Relaciones que pueden apuntar a varios tipos de objeto
Algunas relaciones pueden conectarse a diferentes tipos de objetos. Esto funciona de dos maneras:
**Patrón 1: Muchos registros que se vinculan cada uno a un registro de diferentes tipos de objeto**
Se pueden adjuntar varias notas o tareas a varios tipos de objetos a la vez:
* **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
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%'}} />
**Patrón 2: Un registro que recibe vínculos de muchos registros de diferentes tipos de objeto**
Un Proyecto puede recibir vínculos de múltiples registros de diferentes tipos de objeto:
* **Un Proyecto** puede tener muchas Personas vinculadas, muchas Empresas vinculadas y muchas Notas adjuntas
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>
**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.
* **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
Esto está en nuestra hoja de ruta.
</Warning>
### Qué no es compatible hoy
**Relaciones de muchos a muchos** aún no están disponibles. Por ejemplo, actualmente no puedes crear una relación en la que:
* Muchas Personas están vinculadas a muchos Proyectos
<Note>Se planifican relaciones muchas a muchas muchas para H2 2026.</Note>
## Vincular registros durante la importación
<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>
### Paso 1: Identificar los lados "Uno" y "Muchos"
Primero, determina qué objeto está en el lado de "uno" y cuál en el lado de "muchos" de la relación.
**Ejemplo**:
* **Empresa** es el lado de "uno" (una empresa tiene muchos empleados)
* **Personas** es el lado de "muchos" (cada persona pertenece a una empresa)
### Paso 2: Asegúrate de que existan los registros del lado de "uno"
Antes de importar el lado de "muchos", los registros del lado de "uno" ya deben existir en Twenty.
* 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>La importación fallará si se hace referencia a un registro que no existe.</Warning>
### Paso 3: Prepara tu archivo CSV
Agrega una columna en tu archivo CSV del lado de "muchos" que haga referencia al registro del lado de "uno".
**Ejemplo**: Para un archivo CSV de Personas vinculado a Empresas:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Importante**:
* 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
### Paso 4: Asegúrate de que el campo de relación exista
Antes de subir tu archivo, asegúrate de que exista el campo de relación entre tus objetos.
Si no existe:
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)
### Paso 5: Carga y asigna la relación
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
### Campos únicos disponibles para relaciones
| 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>**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>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>**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>
## Regla de orden de importación
<Warning>
**¡Importa siempre primero el lado de "uno"!**
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
El registro padre debe existir antes de que puedas hacer referencia a él.
</Warning>

View File

@@ -0,0 +1,72 @@
---
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';
## Resumen
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.
## Campos únicos predeterminados
| Objeto | Campos únicos |
| -------------------------- | ----------------------------------- |
| **Personas** | `id`, `email` |
| **Empresas** | `id`, `domain` |
| **Objetos personalizados** | solo `id` (de forma predeterminada) |
<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>
## Campos únicos personalizados
Puedes definir campos únicos adicionales en **Configuración → Modelo de datos**:
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
### Casos de uso de campos únicos personalizados
* **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>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>
## Comportamiento de la importación
### Creación de nuevos registros
Si el valor de un campo único no existe, se crea un nuevo registro.
### Actualización de registros existentes
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>
### Registros eliminados lógicamente
<Warning>
**Los registros eliminados de forma lógica cuentan para la unicidad.**
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>
## Detección de duplicados durante la importación
Durante la fase de validación:
* 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="Demostración en video" />
## Mejores prácticas
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