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

View File

@@ -0,0 +1,32 @@
---
title: Exportar FAQ
description: Preguntas frecuentes sobre la exportación de datos.
---
<AccordionGroup>
<Accordion title="¿Podemos exportar todos los datos del espacio de trabajo antes de la cancelación, incluyendo objetos personalizados, campos personalizados, relaciones, notas, tareas, oportunidades, accesos, flujos de trabajo, permisos e historial de auditorías?">
Los datos del espacio de trabajo pueden ser exportados antes de la cancelación con algunas excepciones: los paneles, los flujos de trabajo y los permisos deben ser transferidos manualmente; los registros de auditoría no pueden ser transferidos.
</Accordion>
<Accordion title="¿Qué elementos no se pueden exportar o migrar actualmente?">
La mayoría de los elementos pueden ser exportados o migrados con algunas excepciones:
* flujos de trabajo, paneles de control y todos los ajustes (teclas API, webhooks, registros de auditoría, configuración de usuario, etc.) debe migrarse manualmente
* objetos y campos creados por la aplicación se pueden migrar instalando dicha aplicación en un espacio de trabajo diferente. No deberían migrarse manualmente
* algunos registros, como versiones de flujo de trabajo y ejecuciones de flujo de trabajo, no son transferibles en absoluto y se espera que se pierdan
* algunos objetos como mensajes y objetos relacionados con el calendario no deberían ser exportados ya que son creados cuando una cuenta está conectada y sincronizada periódicamente. Serán sincronizados de nuevo una vez que conectes tu cuenta (siempre y cuando tengas acceso a dicha cuenta) si es una cuenta de un miembro del equipo que abandonó su empresa, entonces esos mensajes deben ser exportados, de lo contrario se perderán)
</Accordion>
<Accordion title="¿Hay una nube oficial para el procedimiento de migración autoalojada o un servicio de migración asistida?">
Hasta ahora, no existe ningún procedimiento oficial de migración en la nube. La idea general es:
* primero, instalar aplicaciones para introducir objetos y campos de aplicación
* replicar objetos personalizados y campos añadidos por los usuarios
* usar un script con claves API o herramientas de IA para migrar todos los datos de un espacio de trabajo a otro
* todos los objetos no transferibles deben migrarse manualmente
Por favor, tenga en cuenta algunas cosas:
* puede enviar hasta 50 solicitudes por minuto en el plan Pro o 100 solicitudes por minuto en el plan de la organización antes de alcanzar un límite mínimo
* cada solicitud de API puede tener hasta 200 registros
* algunos datos en campos como Creado por, Actividades de cronología y Actualizadas por el sistema se perderán durante la importación y sobrescritos por el sistema
</Accordion>
<Accordion title="¿Los archivos exportados se proporcionan en formatos abiertos y documentados?">
Los archivos exportados en la interfaz de usuario están en formato Excel, y todas las peticiones API se pueden guardar en formato JSON.
</Accordion>
</AccordionGroup>

View File

@@ -0,0 +1,209 @@
---
title: Exporta tus datos
description: Guía completa paso a paso para exportar datos desde Twenty.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Resumen
Exporta los datos de tu espacio de trabajo a CSV para copias de seguridad, informes o migración.
**Casos de uso:**
* **Copias de seguridad periódicas** — mantén copias de tus datos
* **Informes externos** — analiza los datos en Excel, Google Sheets o herramientas de BI
* **Migración** — mueve datos a otro sistema
* **Actualizaciones masivas** — exporta, edita y vuelve a importar para actualizar registros
## Lo que necesitas saber
### Límites de exportación
* **Máximo 20.000 registros** por exportación
* Solo se exportan las **columnas visibles**
* Solo se exportan los **registros filtrados** (según tu vista actual)
<Note>Para exportaciones más grandes (más de 20.000 registros), usa filtros para exportar por lotes o usa la [API](/l/es/developers/extend/api).</Note>
### Permisos
Necesitas el permiso **"Export CSV"** para exportar datos. Contacta con el administrador de tu espacio de trabajo si no tienes esta opción.
## Paso 1: Navega al objeto
Ve al objeto que quieres exportar:
* **Personas** — para contactos
* **Empresas** — para organizaciones
* **Oportunidades** — para negocios
* **Objetos personalizados** — cualquier objeto que hayas creado
## Paso 2: Configura tu vista
**Importante:** La exportación solo incluye lo que es visible en tu vista actual.
### Agregar/Quitar columnas
1. Haz clic en **Opciones → Campos** (o en el **+** al final de las columnas)
2. Marca los campos que quieres exportar
3. Desmarca los campos que no necesitas
### Filtrar registros (opcional)
Si solo necesitas un subconjunto de datos:
1. Haz clic en **Filtrar**
2. Añade condiciones de filtro (p. ej., "Created date > January 1, 2024")
3. Solo se exportarán los registros coincidentes
### Ordenar registros (opcional)
1. Haz clic en el encabezado de una columna para ordenar
2. La exportación seguirá tu orden de clasificación
<Note>**Crea una vista de exportación dedicada.** Guarda una vista configurada específicamente para exportaciones, así no tendrás que reconfigurar cada vez.</Note>
## Paso 3: Exporta los datos
1. Haz clic en el icono **⋮** en la parte superior derecha de la tabla
2. Selecciona **Exportar vista**
3. Elige dónde guardar el archivo CSV
4. Espera a que la descarga finalice
## Qué se exporta
| Incluido | No incluido |
| ------------------------------------------------ | ----------------------------------- |
| Todas las columnas visibles | Columnas ocultas |
| Registros que coinciden con los filtros actuales | Registros excluidos por los filtros |
| Valores de campos personalizados | Campos que no están en la vista |
| ID de registro | Archivos adjuntos |
| ID de relación | Imágenes |
### Campos de Relación
Los ID de relación solo se exportan en el **lado "muchos"** de una relación:
* **La exportación de Personas** incluye una columna `companyId` (relación Personas → Empresa)
* **La exportación de Empresas** NO incluye `peopleIds` (Empresas es el lado "uno")
Esto significa que puedes usar la exportación de Personas para volver a importar y mantener el vínculo con Empresa, pero necesitarás volver a importar Personas después de Empresas para recrear las relaciones.
## Exportación para fines específicos
### Para copias de seguridad
1. Crea una vista con **todos los campos** visibles
2. Elimina todos los filtros para incluir todos los registros
3. Exporta cada tipo de objeto por separado
4. Guarda las exportaciones en un lugar seguro
5. Configura un recordatorio recurrente (semanal/mensual)
### Para informes externos
1. Incluye solo los campos que necesitas para el análisis
2. Aplica filtros para concentrarte en los datos relevantes
3. Considera ordenar por el campo que analizarás
### Para actualizaciones masivas
1. Exporta los registros que quieres actualizar
2. Incluye el identificador único (`email`, `domain` o `id`)
3. Edita el archivo exportado
4. Vuelve a importar para actualizar registros
Consulta: [Cómo actualizar registros existentes](/l/es/user-guide/data-migration/how-tos/update-existing-records-via-import)
### Para migración
Si estás exportando para migrar a otro sistema:
1. **Exporta cada objeto por separado** — Personas, Empresas, Oportunidades, etc.
2. **Incluye los campos de ID** — ayudan a mantener las relaciones
3. **Documenta las asignaciones de campos** — anota cómo los campos de Twenty se asignan a tu sistema de destino
## Gestión de conjuntos de datos grandes (más de 20.000 registros)
El límite de exportación es de 20.000 registros. Para conjuntos de datos más grandes:
### Opción 1: Exportar por lotes
1. Añade un filtro (p. ej., rangos de "Created date")
2. Exporta el primer lote
3. Cambia el filtro
4. Exporta el siguiente lote
5. Combina los archivos en tu hoja de cálculo
**Filtros de ejemplo para dividir en lotes:**
* Por rango de fechas (enero, febrero, marzo...)
* Por propietario (miembro del equipo A, miembro del equipo B...)
* Por estado (Activo, Inactivo...)
### Opción 2: Usar la API
La API no tiene límite de registros:
1. Obtén tu clave de API en **Ajustes → Desarrolladores**
2. Usa la API de GraphQL para consultar registros
3. Procesa los resultados en tu aplicación
Consulta: [Documentación de la API](/l/es/developers/extend/api)
## Consejos y mejores prácticas
### Crea vistas de exportación
Guarda vistas configuradas específicamente para exportaciones:
1. Configura columnas y filtros
2. Haz clic en **Opciones de vista** → **Guardar como nueva vista**
3. Ponle el nombre "Exportación - [Propósito]"
### Protege tus exportaciones
Los archivos exportados pueden contener datos sensibles:
* Guárdalos en ubicaciones seguras
* Elimina las exportaciones antiguas cuando ya no sean necesarias
* Ten cuidado al compartir archivos de exportación
### Verifica antes de exportar
<Check>Las columnas correctas están visibles</Check>
<Check>Los filtros están configurados correctamente (o eliminados para exportación completa)</Check>
<Check>Tienes permiso de exportación</Check>
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Por qué faltan algunas columnas en mi exportación?">
Solo se exportan las columnas visibles. Añade las columnas que necesitas desde **Opciones → Campos** antes de exportar.
</Accordion>
<Accordion title="¿Por qué mi exportación no tiene todos los registros?">
Revisa tus filtros. La exportación solo incluye los registros que coinciden con los filtros de tu vista actual. Elimina los filtros para exportar todos los registros.
</Accordion>
<Accordion title="¿Puedo exportar más de 20.000 registros?">
No en una sola exportación. Usa filtros para exportar por lotes o usa la API para conjuntos de datos más grandes.
</Accordion>
<Accordion title="¿En qué formato está el archivo de exportación?">
CSV (valores separados por comas). Se abre en Excel, Google Sheets o cualquier aplicación de hoja de cálculo.
</Accordion>
<Accordion title="¿Se incluyen los ID de relación?">
Sí, pero solo en el lado "muchos" de las relaciones. Por ejemplo, una exportación de Personas incluye `companyId`, pero una exportación de Empresas no incluye ID de personas.
</Accordion>
<Accordion title="¿Puedo automatizar las exportaciones?">
No directamente a través de la interfaz de usuario. Usa la API para crear flujos de trabajo de exportación automatizados.
</Accordion>
</AccordionGroup>
## Próximos Pasos
* [Cómo actualizar registros existentes](/l/es/user-guide/data-migration/how-tos/update-existing-records-via-import) — edita y vuelve a importar tu exportación
* [Cómo importar datos mediante la API](/l/es/user-guide/data-migration/how-tos/import-data-via-api) — para conjuntos de datos grandes
* [Documentación de la API](/l/es/developers/extend/api) — crea flujos de trabajo de exportación personalizados

View File

@@ -0,0 +1,430 @@
---
title: Solucionar errores de importación
description: Guía completa de solución de problemas para resolver errores de importación de CSV.
---
## Resumen
¿No funciona la importación? Esta guía te ayuda a identificar y solucionar los errores de importación más comunes paso a paso.
## Cómo funciona la validación de la importación
Después de cargar tu archivo y asignar las columnas, Twenty valida tus datos:
1. **Se ejecuta la validación** — Twenty verifica cada fila en busca de errores
2. **Los errores se resaltan** — las filas problemáticas aparecen en **amarillo**
3. **Puedes corregir en el mismo lugar** — edita las celdas directamente en la interfaz de importación
4. **O elimina filas** — omite por completo los registros problemáticos
<Note>**Corrige los errores en la interfaz.** No necesitas volver a tu hoja de cálculo. Edita las celdas directamente durante la importación para ahorrar tiempo.</Note>
## Solución de problemas paso a paso
### Paso 1: Identificar el tipo de error
Haz clic en una fila resaltada para ver el mensaje de error específico. Tipos de errores comunes:
| Mensaje de error | Qué significa |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Valores duplicados resaltados en amarillo | El valor ya existe en Twenty o aparece dos veces en tu archivo |
| `{field} is not a valid {type}` (pasa el cursor sobre la celda amarilla) | Los datos no coinciden con el formato esperado |
| Campo obligatorio resaltado | El campo obligatorio está vacío |
| `Can't connect to {object}. No unique record found...` (la importación falla) | El registro referenciado no existe |
| `Too many records. Up to 10000 allowed` (carga bloqueada) | El archivo tiene más de 10.000 registros |
### Paso 2: Corregir el error
Sigue las instrucciones específicas a continuación para cada tipo de error.
---
## Error: Valor duplicado
### Lo Que Verás
Las filas con valores duplicados se **resaltan en amarillo** en la interfaz de importación antes de que comience la importación.
### Qué significa
Un campo único (correo electrónico, dominio) ya sea:
* Ya existe en Twenty
* Aparece dos veces en tu archivo
### Cómo solucionarlo
**Opción 1: editar el valor duplicado**
1. Haz clic en la celda con el error
2. Cambia a un valor único
3. Continúa con la importación
**Opción 2: eliminar la fila duplicada**
1. Haz clic en la X junto a la fila
2. La fila se omitirá durante la importación
**Opción 3: deja que Twenty actualice el registro existente**
1. Asegúrate de que tu archivo incluya un identificador único (`email`, `domain` o `id`)
2. Asigna el campo de identificador único
3. Twenty actualizará el registro existente en lugar de crear un duplicado
<Note>
**También puedes actualizar campos únicos.**
* Si mantienes el `id` pero cambias el `email` → se actualizará el correo electrónico
* Si mantienes el `email` pero cambias el `id` → se actualizará el id
Siempre que uno de los identificadores únicos coincida, Twenty actualiza el registro.
</Note>
### Cómo evitar este error
Antes de importar:
1. Ordena tu hoja de cálculo por el campo único
2. Elimina las filas duplicadas
3. Comprueba si los registros ya existen en Twenty
<Warning>
**Los registros eliminados lógicamente cuentan para la unicidad.**
Consulta el Menú de comandos → Ver registros eliminados. Los registros allí aún aplican la unicidad. Elimínalos permanentemente o restáuralos y actualízalos.
</Warning>
Para más detalles: [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints)
---
## Error: Formato no válido
### Lo Que Verás
El valor de la celda está resaltado en amarillo. Pasa el cursor sobre él para ver el mensaje de error:
```
{field name} is not a valid {field type}
```
### Qué significa
Los datos no coinciden con el formato esperado para ese tipo de campo.
### Cómo solucionarlo — por tipo de campo
#### Correo electrónico
**Problema:** Formato de correo electrónico no válido
**Solución:** Usa el formato `name@domain.com`
```
❌ john.smith@
❌ john smith@acme.com
✓ john.smith@acme.com
```
#### Dominio
**Problema:** Un formato inconsistente puede causar duplicados
**Solución:** Usa el formato `https://domain.com` (recomendado)
```
⚠️ acme.com (valid, but not recommended)
⚠️ www.acme.com (valid, but not recommended)
✅ https://acme.com (recommended)
```
<Note>Todos los formatos son válidos, pero se recomienda `https://domain.com` porque coincide con el formato utilizado por la sincronización de correo/calendario. Usar otros formatos puede crear empresas duplicadas.</Note>
#### Fecha
**Problema:** Formato de fecha no reconocido
**Solución:** Usa el formato `YYYY-MM-DD` de forma consistente en todo el archivo
```
✓ 2024-03-15 (YYYY-MM-DD)
❌ 03/15/2024 (MM/DD/YYYY)
❌ 15/03/2024 (DD/MM/YYYY)
```
#### Teléfono
**Problema:** Faltan columnas obligatorias
**Solución:** Incluye todas las columnas de teléfono
| Columna | Ejemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
#### Booleano
**Problema:** Valor booleano incorrecto
**Solución:** Usa `TRUE` o `FALSE` en mayúsculas
```
❌ true
❌ yes
❌ 1
✓ TRUE
✓ FALSE
```
#### Selección / Selección múltiple
**Problema:** El valor no coincide con las opciones existentes
**Solución:** Usa **nombres de API**, no 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 esquina inferior derecha)
4. Usa el nombre de la API (p. ej., `OPTION_1`, no "Option 1")
```
❌ High Priority
✓ HIGH_PRIORITY
```
#### Moneda
**Problema:** Falta el monto o el código de moneda
**Solución:** Rellena ambas columnas
| Columna | Ejemplo |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
#### Número
**Problema:** Caracteres no numéricos
**Solución:** Solo números, punto para decimales
```
❌ $1,234.56
❌ 1,234.56
✓ 1234.56
```
Para la referencia completa de formatos: [Referencia de asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping)
---
## Error: Falta un campo obligatorio
### Lo Que Verás
La fila está resaltada en amarillo con la celda del campo obligatorio marcada.
### Qué significa
En esta fila, un campo obligatorio está vacío.
### Cómo solucionarlo
**Opción 1: ingresar un valor**
1. Haz clic en la celda vacía
2. Ingresa un valor
3. Continúa con la importación
**Opción 2: eliminar la fila**
1. Si no tienes los datos, haz clic en X para omitir la fila
### Cómo evitar este error
Antes de importar, identifica los campos obligatorios:
1. Ve a **Configuración → Modelo de datos**
2. Selecciona tu objeto
3. Comprueba qué campos están marcados como obligatorios
---
## Error: Relación no encontrada
### Lo Que Verás
Este error aparece **después de que comience la importación** — la importación falla con un mensaje como:
```
Can't connect to company. No unique record found with condition: id = 7776ee49-f608-4a77-8cc8-6fe96ae1e43f
```
Esto significa que no hay ninguna empresa en Twenty con ese identificador específico.
<Note>A diferencia de otros errores, este no se detecta durante el paso de revisión de datos. La importación comenzará y luego fallará cuando encuentre la relación faltante.</Note>
### Qué significa
Estás intentando vincular a un registro que no existe en Twenty.
### Cómo solucionarlo
**Opción 1: importar primero los registros padre**
1. Cancela la importación actual
2. Importa los registros padre (p. ej., Empresas)
3. Luego importa los registros hijo (p. ej., Personas)
**Opción 2: corrige el valor de la referencia**
1. Verifica el valor de la referencia en tu archivo
2. Asegúrate de que coincida exactamente con un registro existente
3. Verifica el formato: los dominios deben ser `https://domain.com`
**Opción 3: eliminar la relación**
1. Limpia la celda para importar sin la relación
2. Agrega la relación manualmente más tarde
### Cómo evitar este error
1. **Importa en el orden correcto:**
* Empresas primero
* Personas después (con referencias a empresa)
* Oportunidades en tercer lugar
2. **Verifica los valores de referencia:**
* Exporta los registros padre para obtener identificadores exactos
* Usa el formato de dominio `https://domain.com`
* Comprueba posibles errores tipográficos y diferencias entre mayúsculas y minúsculas
<Warning>
**La importación fallará si se hace referencia a un registro inexistente.**
Importa siempre los objetos padre antes que los objetos hijo.
</Warning>
Para más detalles: [Importar relaciones](/l/es/user-guide/data-migration/capabilities/import-relations)
---
## Error: Archivo demasiado grande
### Lo Que Verás
Este error aparece **al cargar tu archivo** — la carga se bloquea por completo:
```
Too many records. Up to 10000 allowed
```
No podrás continuar al paso de revisión de datos hasta que reduzcas el tamaño del archivo.
### Qué significa
Tu archivo tiene más de 10.000 registros.
### Cómo solucionarlo
**Opción 1: dividir en varios archivos**
1. Divide tus datos en archivos de 10.000 registros o menos
2. Importa cada archivo por separado
3. Mantén el orden de importación (Empresas antes que Personas)
**Opción 2: usar importación mediante API**
Para conjuntos de datos muy grandes, usa la API, que no tiene límite de registros.
Consulta: [Cómo importar datos mediante la API](/l/es/user-guide/data-migration/how-tos/import-data-via-api)
---
## Error: Campo no reconocido
### Qué significa
No se puede asignar una columna de tu archivo porque el campo no existe en Twenty.
### Cómo solucionarlo
1. Ve a **Configuración → Modelo de datos**
2. Selecciona el objeto que estás importando
3. Haz clic en **+ Add field**
4. Crea el campo personalizado con el tipo adecuado
5. Vuelve a cargar tu archivo
<Note>La importación de CSV crea registros, no campos. Todos los campos deben existir antes de importar.</Note>
---
## Error: Relación de usuario vacía
### Qué significa
Estás intentando asignar un registro a un usuario (Propietario, Asignado) pero la relación no se está asignando.
### Causas comunes
1. **El usuario no ha aceptado su invitación** — el usuario aún no existe en Twenty
2. **Uso del ID de usuario del sistema anterior** — Twenty no puede hacer coincidir IDs de otro sistema
3. **Formato de correo electrónico incorrecto** — el correo no coincide con la cuenta del usuario en Twenty
### Cómo solucionarlo
1. Asegúrate de que todos los usuarios hayan **aceptado su invitación** a tu espacio de trabajo de Twenty
2. Usa la **dirección de correo electrónico** del usuario (no su nombre ni el ID del sistema anterior)
3. Usa el mismo correo que utilizaron para unirse a Twenty
<Warning>
**Los usuarios deben aceptar las invitaciones antes de importar.**
Si un usuario no ha aceptado su invitación, los registros que lo referencian tendrán relaciones de usuario vacías.
</Warning>
---
## Lista de verificación previa a la importación
Evita errores comprobando lo siguiente antes de importar:
### Requisitos del archivo
<Check>El archivo está en formato CSV, XLSX o XLS</Check>
<Check>El archivo tiene menos de 10.000 registros</Check>
<Check>El archivo usa codificación UTF-8</Check>
### Calidad de los datos
<Check>No hay correos duplicados (para Personas)</Check>
<Check>No hay dominios duplicados (para Empresas)</Check>
<Check>Todas las fechas usan un formato consistente</Check>
<Check>Todos los dominios usan el formato `https://domain.com`</Check>
### Formatos de campos
<Check>Los campos booleanos usan `TRUE` o `FALSE` (mayúsculas)</Check>
<Check>Los campos de selección usan nombres de API, no etiquetas visibles</Check>
<Check>Los campos de teléfono tienen todas las columnas obligatorias</Check>
<Check>Los campos de moneda tienen tanto Amount como Currency Code</Check>
### Relaciones
<Check>Registros padre importados antes que los registros hijo</Check>
<Check>Las columnas de relación hacen referencia a registros existentes</Check>
<Check>El formato de dominio coincide exactamente con el formato de Twenty</Check>
### Modelo de datos
<Check>Todos los campos personalizados existen en Configuración → Modelo de datos</Check>
<Check>Las opciones de selección existen antes de importar</Check>
---
## ¿Aún tienes problemas?
Si ya intentaste las soluciones anteriores:
1. **Descarga el archivo de ejemplo** — ve el formato exacto que espera Twenty
2. **Exporta los registros existentes** — compara tu archivo con datos correctos
3. **Prueba con un lote pequeño** — intenta primero con 5-10 filas
4. **Consulta los artículos de referencia:**
* [Referencia de asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping)
* [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints)
* [Importar relaciones](/l/es/user-guide/data-migration/capabilities/import-relations)
* [Manejo de errores](/l/es/user-guide/data-migration/capabilities/error-handling)

View File

@@ -0,0 +1,201 @@
---
title: Importar empresas mediante CSV
description: Guía completa paso a paso para importar empresas en Twenty.
---
## Resumen
Esta guía te llevará paso a paso por el proceso de importar tus empresas en Twenty. **Las empresas deben importarse primero** porque Personas y Oportunidades se vinculan a Empresas.
## Antes de empezar
### Lista de verificación de requisitos previos
<Check>
Tu archivo está en formato CSV, XLSX o XLS
</Check>
<Check>
El archivo tiene menos de 10.000 registros
</Check>
<Check>
No hay dominios duplicados en tu archivo
</Check>
<Check>
Todos los campos personalizados existen en **Settings → Data Model**
</Check>
<Note>
¿Necesitas importar más de 10.000 empresas? Divídelo en varios archivos o usa la [importación por API](/l/es/user-guide/data-migration/how-tos/import-data-via-api).
</Note>
## Paso 1: Preparar tus datos de empresa
### Campos obligatorios y recomendados
| Campo | ¿Obligatorio? | Formato | Notas |
| ------------------------- | ------------- | -------------------- | ---------------------------------- |
| **Name** | Recomendado | Texto | Nombre para mostrar de la empresa |
| **Dominio** | Recomendado | `https://domain.com` | Identificador único |
| **Dirección** | Opcional | Varias columnas | Consulta más abajo |
| **Empleados** | Opcional | Número | Número de empleados |
| **Campos personalizados** | Opcional | Varía | Debe existir en el modelo de datos |
### Formato de dominio
<Warning>
**Use el formato `https://domain.com` para dominios.**
Esto coincide con el formato utilizado cuando las Empresas se crean automáticamente a partir de la sincronización de correo/calendario, lo que evita duplicados posteriormente.
</Warning>
**Columnas de dominio:**
* **Domain / Domain Label**: `acme.com`
* **Domain / Domain URL**: `https://acme.com`
### Formato de dirección
Dirección es un campo anidado con varias columnas:
```
Address / Address 1,Address / City,Address / State,Address / Country,Address / Post Code
123 Main Street,San Francisco,CA,USA,94105
```
### Estructura de CSV de ejemplo
```csv
name,Domain / Domain URL,Domain / Domain Label,Address / City,Address / Country,employees
Acme Corp,https://acme.com,acme.com,San Francisco,USA,250
Widget Co,https://widgets.co,widgets.co,New York,USA,50
```
<Note>
**Consejo profesional:** Haz clic en **Download sample file** durante la importación para ver los nombres de columna exactos que Twenty espera.
</Note>
## Paso 2: Acceder a la función de importación
**Opción 1: Desde la vista de Empresas**
1. Ve a **Empresas** en la barra lateral izquierda
2. Haz clic en el icono **⋮** en la parte superior derecha
3. Selecciona **Import records**
**Opción 2: Usando el menú de comandos**
1. Presiona `Cmd + K` (Mac) o `Ctrl + K` (Windows)
2. Escribe "import"
3. Selecciona **Import records**
4. Elige **Empresas**
## Paso 3: Cargar su archivo
1. Haz clic en **Select file**
2. Elige tu archivo CSV, XLSX o XLS
3. Espera a que Twenty analice tu archivo
## Paso 4: Asignar sus columnas
Twenty intenta automáticamente hacer coincidir sus columnas con los campos. Revisa y ajusta:
1. **Comprueba las asignaciones automáticas** — verifica que sean correctas
2. **Corrige las asignaciones incorrectas** — haz clic en la lista desplegable para seleccionar el campo correcto
3. **Omitir columnas** — selecciona **Do not map** para las columnas que no deseas importar
### Reglas importantes de asignación
* **Dominio**: Asigna a **Domain / Domain URL** (no a Domain Label)
* **Dirección**: Asigna cada parte a su columna específica (City, State, etc.)
* **Campos Select**: los valores deben coincidir con las opciones existentes (o los mapearás en el siguiente paso)
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
## Paso 5: Mapea los valores de campos Select
Si tienes campos Select o Multi-Select:
1. Twenty muestra tus valores junto a las opciones existentes
2. Asocia cada valor de tu archivo con una opción de Twenty
3. O crea opciones nuevas si es necesario
<Note>
Las opciones de Select usan **nombres de API**, no las etiquetas visibles. Ve a **Settings → Data Model** → Activa el **Advanced mode** para ver los nombres de API.
</Note>
## Paso 6: Revisa y corrige errores
Antes de completar la importación, Twenty valida tus datos:
1. Haz clic en **Próximos Pasos**
2. Las filas con errores se resaltan en **amarillo**
3. **Corrige los errores directamente** — haz clic en una celda y edita el valor
4. **Elimina las filas problemáticas** — haz clic en la X para omitir esa fila
### Errores comunes al importar empresas
| Error | Causa | Solución |
| -------------------------------- | ------------------------------- | ----------------------------------------------------- |
| **Dominio duplicado** | El dominio ya existe en Twenty | Elimina del archivo o actualiza el registro existente |
| **Formato de dominio no válido** | Formato incorrecto | Usa `https://domain.com` |
| **Falta un campo obligatorio** | El campo obligatorio está vacío | Rellena el valor o elimina la fila |
## Paso 7: Completa la importación
1. Revisa el resumen de la importación
2. Haz clic en **Confirmar** para importar
3. Espera a que la importación finalice
4. Verifica revisando algunos registros
## Después de importar empresas
Ahora puedes importar registros que se vinculan a Empresas:
1. **[Importar Personas](/l/es/user-guide/data-migration/how-tos/import-contacts-via-csv)** — vincúlalas a Empresas usando el dominio
2. **Importa Oportunidades** — vincúlalas a Empresas
3. **Verifica la importación** — comprueba algunos registros para asegurarte de que los datos sean correctos
## Actualizar empresas existentes
Para actualizar empresas en lugar de crear nuevas:
1. Incluye la columna `domain` o `id` en tu archivo
2. Twenty hace coincidir los registros mediante este identificador único
3. Las empresas existentes se actualizan; las nuevas se crean
Consulta [Cómo actualizar registros existentes](/l/es/user-guide/data-migration/how-tos/update-existing-records-via-import) para más detalles.
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Por qué dos Empresas no pueden tener el mismo dominio?">
El dominio es un identificador único en Twenty. Esto evita empresas duplicadas y garantiza que la sincronización de correo vincule correctamente los correos con la empresa adecuada.
</Accordion>
<Accordion title="¿Qué pasa si tengo empresas sin dominio?">
Puedes dejar el dominio vacío. Sin embargo, recomendamos añadir dominios cuando sea posible para mejorar la calidad de los datos y el enlace automático de correos.
</Accordion>
<Accordion title="¿Puedo importar empresas sin ninguna Persona vinculada?">
¡Sí! Puede importar primero las empresas y, más tarde, importar Personas y vincularlas usando el dominio de la empresa.
</Accordion>
<Accordion title="¿Qué ocurre si importo un dominio que ya existe?">
Si incluye un identificador único (dominio o id) que coincida con una empresa existente, Twenty actualiza esa empresa en lugar de crear un duplicado.
</Accordion>
<Accordion title="¿Cómo soluciono los errores de 'dominio duplicado'?">
Elimine el duplicado de su archivo o incluya el `id` de la empresa para actualizar el registro existente en su lugar.
</Accordion>
</AccordionGroup>
## Solución de Problemas
¿Tiene problemas? Revise:
* [Cómo corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors)
* [Referencia de asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping)
* [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,242 @@
---
title: Importar contactos mediante CSV
description: Guía completa paso a paso para importar personas/contactos en Twenty.
---
## Resumen
Esta guía le llevará paso a paso por el proceso de importar sus contactos (Personas) en Twenty.
## Antes de empezar
### Lista de verificación de requisitos previos
<Check>
Su archivo está en formato CSV, XLSX o XLS
</Check>
<Check>
El archivo tiene menos de 10.000 registros
</Check>
<Check>
No hay direcciones de correo electrónico duplicadas en su archivo
</Check>
<Check>
**Empresas importadas primero** (si va a vincular Personas a Empresas)
</Check>
<Check>
Todos los campos personalizados existen en **Settings → Data Model**
</Check>
<Warning>
**Importe las Empresas antes que las Personas**
Si desea vincular Personas a Empresas, importe primero las Empresas. La Empresa debe existir antes de que pueda hacer referencia a ella.
</Warning>
## Paso 1: Preparar sus datos de contacto
### Campos obligatorios y recomendados
| Campo | ¿Obligatorio? | Formato | Notas |
| ------------------------- | ------------- | ----------------- | ---------------------------------- |
| **Correo Electrónico** | Recomendado | `name@domain.com` | Debe ser único |
| **Nombre** | Recomendado | Texto | |
| **Apellidos** | Recomendado | Texto | |
| **Empresa** | Opcional | Dominio o ID | Vincula a una Empresa existente |
| **Teléfono** | Opcional | Varias columnas | Vea más abajo |
| **Título del puesto** | Opcional | Texto | |
| **Campos personalizados** | Opcional | Varía | Debe existir en el modelo de datos |
### Formato de correo electrónico
* Debe tener un formato de correo electrónico válido: `name@domain.com`
* **Debe ser único** — sin duplicados en su archivo ni en Twenty
* Para correos electrónicos adicionales, use la columna **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Formato de teléfono
Teléfono es un **campo anidado** que requiere varias columnas:
| Columna | Ejemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### Vincular con Empresas
Agregue una columna con el identificador único de la Empresa:
| Nombre de la columna | Formato | Ejemplo |
| -------------------- | -------------- | -------------------------------------- |
| `companyDomain` | Formato de URL | `https://acme.com` |
| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Note>
**Use el formato de URL del dominio** (`https://acme.com`), no la etiqueta. Esto coincide con cómo se almacenan las Empresas en Twenty.
</Note>
### Estructura de CSV de ejemplo
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
John,Smith,john@acme.com,CEO,https://acme.com,4159095555,US
Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
<Note>
**Consejo profesional:** Haga clic en **Download sample file** durante la importación o exporte algunas Personas existentes para ver los nombres de columna exactos que Twenty espera.
</Note>
## Paso 2: Acceder a la función de importación
**Opción 1: Desde la vista de Personas**
1. Vaya a **People** en la barra lateral izquierda
2. Haga clic en el icono **⋮** en la parte superior derecha
3. Seleccione **Import records**
**Opción 2: Usando el menú de comandos**
1. Presione `Cmd + K` (Mac) o `Ctrl + K` (Windows)
2. Escriba "import"
3. Seleccione **Import records**
4. Elija **People**
## Paso 3: Cargar su archivo
1. Haga clic en **Select file**
2. Elija su archivo CSV, XLSX o XLS
3. Espere a que Twenty analice su archivo
## Paso 4: Asignar sus columnas
Twenty intenta automáticamente hacer coincidir sus columnas con los campos. Revise y ajuste:
1. **Compruebe las asignaciones automáticas** — verifique que sean correctas
2. **Corrija las asignaciones incorrectas** — haga clic en la lista desplegable para seleccionar el campo correcto
3. **Omitir columnas** — seleccione **Do not map** para las columnas que no desea importar
### Reglas importantes de asignación
| Tipo de columna | Asignar a | Notas |
| -------------------------------- | ------------------------------ | ----------------------------------------- |
| Referencia de Empresa | Campo de relación **Company** | Use el dominio O el id, no ambos |
| Correo electrónico | **Correo Electrónico** | Dirección de correo electrónico principal |
| Correos electrónicos adicionales | **Emails / Additional Emails** | Formato de matriz |
| Teléfono | Columnas separadas | Número, código de país, código de llamada |
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
### Asignar la relación Company
Al asignar la columna de empresa:
1. Encuentre su columna de referencia de empresa (p. ej., `companyDomain`)
2. Asígnela al campo de relación **Company**
3. Twenty vinculará cada Persona con la Empresa correspondiente
<Warning>
**Asigne solo UN identificador único para las relaciones.**
No mapees ambos `companyId` y `companyDomain`. Elige uno — preferiblemente el dominio, ya que es legible para humanos.
</Warning>
## Paso 5: Mapea los valores de campos Select
Si tienes campos Select o Multi-Select (como Fuente del lead):
1. Twenty muestra tus valores junto a las opciones existentes
2. Asocia cada valor de tu archivo con una opción de Twenty
3. O crea opciones nuevas si es necesario
<Note>
Las opciones de Select usan **nombres de API**, no las etiquetas visibles. Ve a **Settings → Data Model** → Activa el **Advanced mode** para ver los nombres de API.
</Note>
## Paso 6: Revisa y corrige errores
Antes de completar la importación, Twenty valida tus datos:
1. Haz clic en **Próximos Pasos**
2. Las filas con errores se resaltan en **amarillo**
3. **Corrige los errores directamente** — haz clic en una celda y edita el valor
4. **Elimina las filas problemáticas** — haz clic en la X para omitir esa fila
### Errores comunes al importar contactos
| Error | Causa | Solución |
| ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------ |
| **Correo electrónico duplicado** | El correo electrónico ya existe en Twenty o en el archivo | Elimina el duplicado o actualiza el registro existente |
| **Formato de correo electrónico no válido** | Formato de correo electrónico incorrecto | Corrige a `name@domain.com` |
| **Relación no encontrada** | La Empresa no existe | Importa primero las Empresas o corrige la referencia |
| **Falta un campo obligatorio** | El campo obligatorio está vacío | Rellena el valor o elimina la fila |
## Paso 7: Completa la importación
1. Revisa el resumen de la importación
2. Haz clic en **Confirmar** para importar
3. Espera a que la importación finalice
4. Verifica revisando algunos registros y sus enlaces a la Empresa
## Después de importar contactos
¡Tus contactos ya están en Twenty! Próximos Pasos:
1. **Verifica los enlaces a la Empresa** — abre algunos registros de Personas para confirmar que están vinculados a la Empresa correcta
2. **Importa Oportunidades** — si es necesario, vincúlalas a Personas y Empresas
3. **Configura la sincronización del correo** — conecta tu buzón para ver el historial de correos en los registros de contacto
## Actualizar contactos existentes
Para actualizar contactos en lugar de crear nuevos:
1. Incluye la columna `email` o `id` en tu archivo
2. Twenty hace coincidir los registros mediante este identificador único
3. Los contactos existentes se actualizan; los nuevos se crean
Consulta [Cómo actualizar registros existentes](/l/es/user-guide/data-migration/how-tos/update-existing-records-via-import) para más detalles.
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Por qué dos Personas no pueden tener el mismo correo electrónico?">
El correo electrónico es un identificador único en Twenty. Esto evita contactos duplicados y garantiza que la sincronización de correo vincule correctamente los correos con la persona adecuada.
</Accordion>
<Accordion title="¿Qué pasa si tengo Personas sin correo electrónico?">
Puedes dejar el correo electrónico vacío. Sin embargo, recomendamos añadir correos electrónicos cuando sea posible para mejorar la calidad de los datos y la funcionalidad de sincronización del correo.
</Accordion>
<Accordion title="¿Cómo vinculo Personas con Empresas durante la importación?">
Añade una columna con el dominio de la Empresa (p. ej., `https://acme.com`) o el ID. Durante el mapeo, conecta esta columna al campo de relación de Empresa.
</Accordion>
<Accordion title="¿Qué pasa si la Empresa aún no existe?">
Importa primero las Empresas y luego las Personas. La Empresa debe existir antes de poder hacer referencia a ella.
</Accordion>
<Accordion title="¿Puedo importar el ID de mi CRM anterior?">
¡Sí! Crea un campo personalizado marcado como "unique" en tu modelo de datos para almacenar el ID externo. Nota: el nombre de campo `id` está reservado para el ID interno de Twenty.
</Accordion>
<Accordion title="¿Cómo soluciono los errores de 'relación no encontrada'?">
La Empresa a la que haces referencia no existe. Importa primero la Empresa o verifica que el dominio/ID coincida exactamente con una Empresa existente.
</Accordion>
</AccordionGroup>
## Solución de Problemas
¿Tienes problemas? Consulta:
* [Cómo corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors)
* [Cómo importar relaciones](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [Referencia de mapeo de campos](/l/es/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,176 @@
---
title: Importar datos mediante la API
description: Cuándo y cómo usar las API de Twenty para importaciones de datos a gran escala.
---
## Resumen
Twenty ofrece tanto **GraphQL** como **API REST** para la importación programática de datos. Utiliza la API cuando la importación mediante CSV no sea práctica para tu volumen de datos o cuando necesites importaciones automatizadas y recurrentes.
## Cuándo usar la importación mediante API
| Escenario | Método recomendado |
| ---------------------------------- | -------------------------------------- |
| Menos de 10.000 registros | Importación CSV |
| 10.000 - 50.000 registros | Importación CSV (dividida en archivos) |
| **50.000+ registros** | **Importación mediante API** |
| Migración de una sola vez | Cualquiera (según el volumen) |
| **Importaciones recurrentes** | **Importación mediante API** |
| **Sincronización en tiempo real** | **Importación mediante API** |
| **Integración con otros sistemas** | **Importación mediante API** |
<Note>Para conjuntos de datos de cientos de miles, la API es significativamente más rápida y más fiable que múltiples importaciones CSV.</Note>
## Límites de tasa de la API
Twenty aplica límites de tasa para garantizar la estabilidad del sistema:
| Límite | Valor |
| --------------------------------- | ----------------------- |
| **Solicitudes por minuto** | 100 |
| **Registros por llamada en lote** | 60 |
| **Rendimiento máximo** | ~6.000 registros/minuto |
<Warning>
**Planifica tu importación en función de estos límites.**
Para 100.000 registros al rendimiento máximo, espera aproximadamente 17 minutos de tiempo de importación. Añade tiempo de margen para el manejo de errores y los reintentos.
</Warning>
## Primeros pasos
### Paso 1: Obtén tu clave de API
1. Ve a **Configuración → Desarrolladores**
2. Haz clic en **+ Crear clave de API**
3. Dale un nombre descriptivo a tu clave de API
4. Copia la clave de API inmediatamente (no se mostrará de nuevo)
5. Guárdala de forma segura
<Warning>
**Mantén en secreto tu clave de API.**
Cualquiera que tenga tu clave de API puede acceder y modificar los datos de tu espacio de trabajo. Nunca la subas a repositorios de código ni la compartas públicamente.
</Warning>
### Paso 2: Elige tu API
Twenty admite dos tipos de API:
| API | Ideal para | Documentación |
| ----------- | --------------------------------------------------------------------------- | ------------------------------------------------- |
| **GraphQL** | Consultas flexibles, obtención de datos relacionados, operaciones complejas | [Documentación de la API](/l/es/developers/extend/api) |
| **REST** | Operaciones CRUD simples, patrones REST familiares | [Documentación de la API](/l/es/developers/extend/api) |
Ambas APIs admiten:
* Crear, leer, actualizar y eliminar registros
* **Operaciones por lotes** — crear o actualizar hasta 60 registros por llamada
**Para las importaciones, usa operaciones por lotes** para maximizar el rendimiento dentro de los límites de tasa.
### Paso 3: Planifica el orden de importación
Al igual que en las importaciones CSV, **el orden importa** para las relaciones:
1. **Empresas** primero (sin dependencias)
2. **Personas** en segundo lugar (pueden vincularse a Empresas)
3. **Oportunidades** en tercer lugar (pueden vincularse a Empresas y Personas)
4. **Tareas/Notas** (pueden vincularse a cualquiera de las anteriores)
5. **Objetos personalizados** (siguiendo sus dependencias)
## Mejores prácticas
### Agrupa tus solicitudes
* No envíes los registros de uno en uno
* Agrupa hasta **60 registros por llamada a la API**
* Esto maximiza el rendimiento dentro de los límites de tasa
### Gestiona los límites de tasa
* Implementa retardos entre solicitudes (600 ms como mínimo para importaciones sostenidas)
* Usa backoff exponencial cuando alcances los límites
* Supervisa las respuestas 429 (Too Many Requests)
### Valida los datos primero
* Limpia y valida tus datos antes de importar
* Comprueba que los campos obligatorios estén completos
* Verifica que los formatos cumplan los requisitos de Twenty (consulta [Asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping))
### Registra todo
* Registra cada registro importado (incluidos los ID)
* Registra los errores con todo el contexto
* Esto ayuda a depurar problemas y verificar la finalización
### Prueba primero
* Prueba con un lote pequeño (10-20 registros)
* Verifica que los datos aparezcan correctamente en Twenty
* Luego ejecuta la importación completa
### Upsert para evitar duplicados
La API de GraphQL admite **upsert por lotes** — actualizar si el registro existe, crear si no. Esto evita duplicados al volver a ejecutar importaciones.
## Encontrar nombres de objetos y campos
Para ver los objetos y campos disponibles:
1. Ve a **Configuración → API y Webhooks**
2. Explora la **Metadata API**
3. Visualiza todos los objetos estándar y personalizados con sus campos
La documentación muestra todos los objetos estándar y personalizados, sus campos y los tipos de datos esperados.
## Servicios profesionales
Para migraciones complejas mediante API, nuestros socios pueden ayudar:
| Servicio | Qué incluye |
| ----------------------------------- | ---------------------------------------------- |
| **Diseño del modelo de datos** | diseñar tu estructura de datos óptima |
| **Scripts de migración** | escribir y ejecutar los scripts de importación |
| **Transformación de datos** | gestionar asignaciones complejas y limpieza |
| **Validación y control de calidad** | verificar que la migración esté completa |
**Ideal para:**
* Migraciones de más de 100.000 registros
* Transformaciones de datos complejas
* Plazos ajustados
* Equipos sin recursos de desarrollo
Contáctanos en [contact@twenty.com](mailto:contact@twenty.com) o explora nuestros [Servicios de implementación](/l/es/user-guide/getting-started/capabilities/implementation-services).
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Cuál es la diferencia entre GraphQL y REST?">
GraphQL te permite solicitar exactamente los datos que necesitas en una sola consulta y es mejor para operaciones complejas. REST utiliza métodos HTTP estándar (GET, POST, PUT, DELETE) y puede resultarte más familiar si has trabajado con APIs tradicionales.
</Accordion>
<Accordion title="¿Puedo actualizar registros existentes mediante la API?">
¡Sí! Usa mutaciones de actualización (GraphQL) o solicitudes PUT/PATCH (REST) con el `id` del registro.
</Accordion>
<Accordion title="¿Cómo gestiono los duplicados?">
Consulta primero si existen registros utilizando identificadores únicos (email, dominio). Actualiza si existe, crea si no.
</Accordion>
<Accordion title="¿Puedo eliminar registros mediante la API?">
Sí, usa mutaciones de eliminación (GraphQL) o solicitudes DELETE (REST).
</Accordion>
<Accordion title="¿Hay un SDK para Python o Node.js?">
Por el momento no, pero ambas APIs funcionan con cualquier cliente HTTP en cualquier lenguaje.
</Accordion>
</AccordionGroup>
## Documentación de la API
Para conocer todos los detalles de implementación, ejemplos de código y referencia de esquemas:
* [Documentación de la API](/l/es/developers/extend/api)

View File

@@ -0,0 +1,225 @@
---
title: Importar relaciones entre objetos mediante CSV
description: Guía completa paso a paso para vincular registros durante la importación de CSV.
---
## Resumen
Esta guía explica cómo importar relaciones entre objetos—por ejemplo, vincular Personas con Empresas u Oportunidades con Personas.
<Note>**Qué se puede importar:** Solo relaciones de uno a muchos que apunten a un único tipo de objeto. Las relaciones que apuntan a varios tipos de objeto (como Notas vinculadas a Personas Y Empresas) aún no son compatibles con la importación.</Note>
## Comprender las relaciones
### ¿Qué es una relación "de uno a muchos"?
En una relación de uno a muchos:
* **Una** Empresa tiene **muchas** Personas (empleados)
* **Una** Empresa tiene **muchas** Oportunidades
* **Una** Persona tiene **muchas** Tareas
El lado "uno" es el **padre**. El lado "muchos" es el **hijo**.
### Relaciones comunes en Twenty
| Relación | Lado "Uno" (Padre) | Lado "Muchos" (Hijo) |
| ------------------------ | ------------------ | -------------------- |
| Empresas → Personas | Empresa | Personas |
| Empresas → Oportunidades | Empresa | Oportunidades |
| Personas → Tareas | Persona | Tareas |
| Personas → Notas | Persona | Notas |
## Paso 1: Identificar los lados "Uno" y "Muchos"
Antes de importar, determine qué objeto es el padre y cuál es el hijo.
**Pregúntese:** "¿UNO [Objeto A] tiene MUCHOS [Objeto B]?"
* Una Empresa → Muchas Personas ✓ (la Empresa es el padre)
* Una Persona → Muchas Empresas ✗ (Esto es incorrecto: una persona pertenece a una sola empresa)
## Paso 2: Importar primero los registros padre
El padre (lado "uno") debe existir en Twenty antes de poder hacer referencia a él.
**Orden de importación:**
1. **Empresas** primero (sin dependencias)
2. **Personas** en segundo lugar (enlazadas a Empresas)
3. **Oportunidades** en tercer lugar (enlazadas a Empresas y/o Personas)
4. **Tareas/Notas** (enlazadas a cualquiera de las anteriores)
<Warning>
**Si el registro padre no existe, la importación fallará.**
Verifique siempre que las Empresas estén importadas antes de importar Personas con referencias a Empresas.
</Warning>
## Paso 3: Anotar el identificador único del padre
Debe hacer referencia al registro padre mediante un **identificador único**. Opciones disponibles:
| Objeto padre | Identificadores únicos disponibles |
| ----------------------------------- | ------------------------------------------------------------------------- |
| **Empresas** | `id` (UUID), `domain` (recomendado) o cualquier campo único personalizado |
| **Personas** | `id` (UUID), `email` o cualquier campo único personalizado |
| **Miembros del espacio de trabajo** | `id` (UUID), `email` (no el nombre) |
| **Objetos personalizados** | `id` (UUID) o cualquier campo marcado como único |
<Note>**Recomendado:** Use `domain` para Empresas y `email` para Personas. Son legibles para humanos y fáciles de verificar en su hoja de cálculo.</Note>
### Cómo encontrar el identificador
Si necesita el `id`:
1. Exporte los registros padre desde Twenty
2. La exportación incluye la columna `id`
3. Use estos IDs en su archivo de registros hijo
## Paso 4: Verificar que el campo de relación exista
Antes de importar, asegúrese de que exista el campo de relación entre sus objetos.
**Para revisar o crear:**
1. Vaya a **Configuración → Modelo de datos**
2. Seleccione su objeto hijo (p. ej., Personas)
3. Busque un campo de relación que apunte al padre (p. ej., Empresa)
4. Si no existe, créelo:
* Haga clic en **+ Add field**
* Seleccione el tipo **Relation**
* Elija el objeto padre
## Paso 5: Preparar su archivo CSV
Agregue una columna a su archivo CSV de registros hijo que haga referencia al padre utilizando su identificador único.
### Ejemplo: Personas vinculadas a Empresas
**Su CSV de Personas:**
```csv
firstName,lastName,email,jobTitle,companyDomain
John,Smith,john@acme.com,CEO,https://acme.com
Jane,Doe,jane@widgets.co,CTO,https://widgets.co
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
```
La columna `companyDomain` hace referencia al dominio de la Empresa.
### Requisitos de formato
| Identificador | Formato | Ejemplo |
| ------------------ | --------------------------- | -------------------------------------- |
| Dominio | Formato de URL | `https://acme.com` |
| Correo electrónico | Correo electrónico estándar | `john@acme.com` |
| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Warning>
**¡El formato del dominio importa!**
Use `https://domain.com` (no solo `domain.com`). Esto coincide con cómo Twenty almacena los dominios de las Empresas y evita errores de coincidencia.
</Warning>
### Reglas importantes
1. **Se requiere coincidencia exacta** — el valor debe coincidir exactamente con el registro padre
2. **Asigne solo UN identificador único** — no incluya `companyId` Y `companyDomain`
3. **Sensible a mayúsculas/minúsculas** — `Acme.com` ≠ `acme.com`
## Paso 6: Cargar y asignar la relación
1. Vaya al objeto hijo (p. ej., Personas)
2. Haga clic en **⋮** → **Importar registros**
3. Cargue su archivo CSV
4. En el paso de asignación de campos:
* Encuentre su columna de relación (p. ej., `companyDomain`)
* Asígnela al campo de relación **Company**
5. Complete las asignaciones restantes
6. Revise los errores y confirme
Twenty vinculará automáticamente cada registro hijo con el padre correspondiente.
## Paso 7: Verificar la importación
Después de importar:
1. Abra algunos registros hijo (p. ej., Personas)
2. Verifique que el campo de relación muestre el padre correcto (p. ej., Empresa)
3. Abra un registro padre y revise la sección de registros relacionados
## Errores comunes que se deben evitar
| Error | Problema | Solución |
| ----------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- |
| **Orden de importación incorrecto** | Importar Personas antes que Empresas | Importe siempre primero los padres y luego los hijos |
| **Formato de dominio incorrecto** | Usar `acme.com` en lugar de `https://acme.com` | Use el formato de URL completo con `https://` |
| **Varios campos únicos** | Asignar ambos `companyId` Y `companyDomain` | Asigne solo UN identificador único |
| **Falta el campo de relación** | El campo de relación no existe en el modelo de datos | Créelo en **Configuración → Modelo de datos** antes de importar |
| **Registros inexistentes** | El registro padre no existe en Twenty | Importe primero los registros padre o verifique si hay errores tipográficos |
| **Diferencia de mayúsculas y minúsculas** | `Acme.com` en el archivo pero `acme.com` en Twenty | Asegure una coincidencia exacta de mayúsculas y minúsculas |
## Vincular a miembros del espacio de trabajo
Al vincular a miembros del espacio de trabajo (su equipo):
* Use su **dirección de correo electrónico**, no su nombre
* Ejemplo: `owner@yourcompany.com`, no "John Smith"
```csv
taskName,assignedTo
Follow up with client,john@yourcompany.com
Review proposal,jane@yourcompany.com
```
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Qué pasa si mi registro padre no tiene dominio ni correo electrónico?">
Tiene dos opciones:
1. Use el `id` de Twenty (exporte los registros padre para obtener sus IDs)
2. Cree un campo único personalizado en su modelo de datos para almacenar un ID externo de su sistema anterior
</Accordion>
<Accordion title="¿Puedo actualizar relaciones en registros existentes?">
¡Sí! Incluya el identificador único del registro hijo (p. ej., `email` para Personas) y el nuevo valor de la relación. La importación actualizará la relación.
</Accordion>
<Accordion title="¿Puedo importar relaciones de muchos a muchos?">
Las relaciones de muchos a muchos aún no son compatibles con la importación. Está previsto para el primer semestre de 2026.
</Accordion>
<Accordion title="¿Puedo vincular a varios tipos de objeto (como Notas a Personas Y Empresas)?">
Las relaciones que apuntan a varios tipos de objeto aún no son compatibles con la importación/exportación. Esto está en nuestra hoja de ruta.
</Accordion>
<Accordion title="¿Qué ocurre si un registro padre no existe?">
La importación mostrará un error para esa fila. Puedes hacerlo de las siguientes maneras:
* Importe el registro padre primero y luego vuelva a importar
* Corrija el valor de la referencia
* Elimine la fila de la importación
</Accordion>
<Accordion title="¿Por qué mi relación no se vincula correctamente?">
Causas comunes:
* Formato incorrecto (use `https://domain.com` para dominios)
* Diferencia de mayúsculas y minúsculas (verifique la ortografía exacta)
* El padre no existe (importe primero los padres)
* Asignar varios identificadores (use solo uno)
</Accordion>
</AccordionGroup>
<Warning>
**Recuerde: los registros eliminados lógicamente cuentan para la unicidad.**
Si recibe errores de "no encontrado" pero el registro parece existir, consulte Menú de comandos → Ver registros eliminados. Es posible que el padre haya sido eliminado lógicamente.
</Warning>
## Solución de Problemas
¿Tiene problemas? Revise:
* [Cómo corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors)
* [Capacidades de importación de relaciones](/l/es/user-guide/data-migration/capabilities/import-relations)
* [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints)

View File

@@ -0,0 +1,289 @@
---
title: Migración desde otros CRM
description: Guía paso a paso para migrar tus datos desde cualquier CRM a Twenty.
---
## Resumen
Esta guía te lleva paso a paso para migrar tus datos desde cualquier CRM a Twenty. El proceso implica auditar tus datos, preparar tu espacio de trabajo de Twenty, exportar desde tu sistema actual e importar en Twenty.
<Note>Las vistas, los flujos de trabajo y los permisos deben recrearse manualmente después de la migración. Planifica tiempo para este trabajo de configuración.</Note>
## Paso 1: Audita tus datos actuales
La migración es una oportunidad para un nuevo comienzo. No migres datos innecesarios.
**Qué conservar:**
* Contactos y empresas activos
* Oportunidades y negocios abiertos
* Notas y actividades importantes
* Campos personalizados que realmente usas
**Qué dejar atrás:**
* Contactos obsoletos (sin actividad en 2 o más años)
* Registros duplicados
* Datos de prueba
* Campos personalizados no utilizados
## Paso 2: Mapea tu modelo de datos
Crea un documento de mapeo entre tu CRM actual y Twenty:
| Tu CRM | Twenty |
| --------------------- | ------------------------ |
| Cuenta / Organización | **Empresa** |
| Contacto / Persona | **Personas** |
| Negocio / Oportunidad | **Oportunidad** |
| Actividad | **Tarea** o **Nota** |
| Objeto personalizado | **Objeto personalizado** |
**Para cada campo, documenta:**
* El nombre del campo de origen
* El campo de destino en Twenty
* Cualquier transformación de formato necesaria (fechas, números de teléfono, etc.)
<Note>Mantén este documento de asignación a mano durante la importación—lo consultarás al asignar columnas.</Note>
## Paso 3: Configura tu espacio de trabajo en Twenty
Antes de importar datos, prepara tu espacio de trabajo en Twenty:
### Crea objetos y campos personalizados
1. Ve a **Configuración → Modelo de datos**
2. Crea los objetos personalizados que necesites
3. Añade campos personalizados a los objetos estándar y personalizados
4. Configura los ajustes de los campos (único, obligatorio, opciones de selección, etc.)
<Warning>
**Los campos deben existir antes de la importación.**
La importación de CSV crea registros, no campos. Crea todos los campos personalizados en Configuración → Modelo de datos antes de importar.
</Warning>
### Invita a tu equipo
<Warning>
**Invita a los usuarios ANTES de importar datos.**
Si tus datos incluyen referencias a usuarios (propietario de la cuenta, asignado, etc.), esos usuarios deben existir en Twenty antes de la importación. De lo contrario, esas relaciones no se podrán asignar.
</Warning>
1. Ir a **Ajustes → Miembros**
2. Invita a todos los miembros del equipo
3. **Espera a que todos acepten** su invitación
4. Verifica que todos los usuarios aparezcan en tu lista de miembros
## Paso 4: Exporta desde tu CRM actual
Exporta tus datos desde tu CRM actual:
1. Busca una función de **Exportar** (generalmente en Configuración, Gestión de datos o Administración)
2. Exporta al **formato CSV** cuando sea posible
3. Exporta cada tipo de objeto por separado (Empresas, Contactos, Negocios, etc.)
4. Incluye todos los campos que quieras migrar
**Exporta estos objetos (en este orden como referencia):**
1. Empresas / Cuentas / Organizaciones
2. Contactos / Personas
3. Negocios / Oportunidades
4. Notas y actividades
5. Objetos personalizados
## Paso 5: Limpia y da formato a tus datos
Abre cada CSV exportado en una aplicación de hojas de cálculo y prepáralo para Twenty.
### Elimina duplicados
1. Ordena por el campo único (correo electrónico para Personas, dominio para Empresas)
2. Elimina o combina filas duplicadas
3. Verifica que no existan duplicados ya en Twenty
### Da formato a los campos correctamente
| Tipo de campo | Formato requerido |
| ----------------------- | -------------------------------------------------------- |
| **Dominio** | `https://domain.com` |
| **Correo Electrónico** | `name@domain.com` (debe ser único) |
| **Fecha** | `YYYY-MM-DD` |
| **Teléfono** | Tres columnas: número, código de país, código de llamada |
| **Booleano** | `TRUE` o `FALSE` (mayúsculas) |
| **Campos de selección** | Usa nombres de API, no etiquetas visibles |
<Warning>
**El formato del dominio es fundamental.**
Usa `https://domain.com` (no `domain.com` ni `www.domain.com`). Esto coincide con el formato de Twenty y evita duplicados cuando conectas la sincronización de correo/calendario.
</Warning>
Consulta [Cómo preparar tus archivos CSV](/l/es/user-guide/data-migration/how-tos/prepare-your-csv-files) para conocer los requisitos de formato completos para todos los tipos de campos.
### Añade columnas de relación
Para vincular registros (p. ej., Personas con Empresas), añade una columna con el identificador único del registro padre.
**Ejemplo: CSV de Personas con vínculo a Empresa**
```csv
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
Consulta [Cómo importar relaciones](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para obtener instrucciones detalladas sobre cómo vincular registros.
### Actualiza las referencias de usuario
Si tus datos incluyen asignaciones de usuarios (propietario, asignado):
1. Añade una columna con el **correo electrónico del usuario** (no solo su ID del sistema anterior)
2. Usa las mismas direcciones de correo electrónico que los usuarios utilizaron para unirse a tu espacio de trabajo en Twenty
Consulta [Cómo preparar tus archivos CSV](/l/es/user-guide/data-migration/how-tos/prepare-your-csv-files) para obtener la guía de formato completa.
## Paso 6: Importa a Twenty
<Warning>
**¡El orden de importación importa!**
Importa siempre en este orden:
1. **Empresas** primero (sin dependencias)
2. **Personas** en segundo lugar (enlazadas a Empresas)
3. **Oportunidades** en tercer lugar (enlazadas a Empresas/Personas)
4. **Notas y Tareas** (enlazadas a registros)
5. **Objetos personalizados** siguiendo sus dependencias
El registro padre debe existir antes de que puedas hacer referencia a él.
</Warning>
### Importa cada objeto
Para cada archivo CSV, en orden:
1. Navega hasta el objeto en Twenty
2. Haz clic en **⋮ → Importar registros**
3. Sube el archivo CSV
4. Asocia las columnas a los campos:
* Asocia las columnas de correo electrónico de usuario a los campos de relación correspondientes
* Asocia las columnas de relación (como `companyDomain`) a los campos de relación
5. Revisa y corrige cualquier error en la interfaz
6. Confirma la importación
7. Verifica algunos registros antes de continuar con el siguiente archivo
**Guías detalladas:**
* [Cómo importar Empresas](/l/es/user-guide/data-migration/how-tos/import-companies-via-csv)
* [Cómo importar Contactos](/l/es/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [Cómo importar relaciones](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
## Paso 7: Migraciones grandes (50.000+ registros)
Para migraciones grandes:
| Volumen | Enfoque recomendado |
| ------------------------- | ------------------------------- |
| Menos de 10.000 registros | Importación en un único CSV |
| 10.000 - 50.000 registros | Divídelo en varios archivos CSV |
| 50.000+ registros | Usa la API |
**Para importaciones mediante la API:**
* Más rápido y fiable para conjuntos de datos grandes
* Admite operaciones por lotes (hasta 60 registros por llamada)
* Consulta [Cómo importar datos mediante la API](/l/es/user-guide/data-migration/how-tos/import-data-via-api)
## Paso 8: Configuración posterior a la migración
Después de importar los datos, completa la configuración de tu espacio de trabajo:
### Recrea las vistas
* Configura vistas guardadas con filtros, ordenaciones y configuraciones de columnas
* Crea cualquier vista de kanban o calendario que necesites
### Recrear flujos de trabajo
* Vuelve a crear tus automatizaciones en **Configuración → Flujos de trabajo**
* Empieza por los flujos de trabajo más críticos
* Prueba cada uno antes de depender de él
### Configura roles y permisos
* Configura los roles en **Configuración → Miembros → Roles**
* Asigna a los usuarios a los roles adecuados
### Conecta el correo electrónico y el calendario
* Cada usuario conecta su propia cuenta en **Configuración → Cuentas**
* Twenty comenzará a sincronizar los correos electrónicos con los registros de contactos
* Consulta [Correo y calendario](/l/es/user-guide/calendar-emails/overview)
### Capacita a tu equipo
* Recorran juntos la nueva interfaz
* Documenta cualquier proceso específico del equipo
## Problemas Comunes y Soluciones
| Problema | Causa | Solución |
| ---------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Errores de duplicados** | El correo electrónico/dominio ya existe | Elimina los duplicados del archivo o incluye un identificador único para actualizar los registros existentes |
| **Relación no encontrada** | El registro padre no existe | Importa primero los objetos padre (Empresas antes que Personas) |
| **Campos faltantes** | El campo personalizado no existe | Crea el campo en Configuración → Modelo de datos antes de importar |
| **Errores en campos de selección** | Uso de etiquetas visibles | Usa los nombres de la API (habilita el modo Avanzado en Configuración para encontrarlos) |
| **Relación de usuario vacía** | El usuario no ha aceptado la invitación | Asegúrate de que todos los usuarios acepten las invitaciones antes de importar |
Consulta [Cómo corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors) para obtener pasos detallados de solución de problemas.
## Lista de verificación post-migración
### Integridad de los datos
<Check>Todos los registros importados (compara los recuentos con el sistema de origen)</Check>
<Check>Relaciones funcionando correctamente (Personas vinculadas a Empresas)</Check>
<Check>Asignaciones de usuario correctas (Propietario, Asignado)</Check>
<Check>Campos personalizados completados</Check>
<Check>Sin duplicados inesperados</Check>
### Configuración
<Check>Vistas recreadas</Check>
<Check>Flujos de trabajo recreados y probados</Check>
<Check>Roles y permisos configurados</Check>
<Check>Sincronización de correo/calendario conectada</Check>
### Preparación del equipo
<Check>Equipo capacitado en el nuevo sistema</Check>
<Check>Plan de acceso al CRM antiguo decidido (¿mantenerlo como referencia? ¿Cuándo deshabilitarlo?)</Check>
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Puedo migrar los flujos de trabajo automáticamente?">
Actualmente no. Los flujos de trabajo deben recrearse manualmente en Twenty.
</Accordion>
<Accordion title="¿Qué pasa con los archivos adjuntos?">
Los archivos adjuntos no están incluidos en las exportaciones CSV. Necesitarás volver a subirlos manualmente, migrarlos mediante la API o contactar con nuestro equipo para obtener asistencia.
</Accordion>
<Accordion title="¿Puedo mantener ambos sistemas en funcionamiento durante la migración?">
Sí, recomendamos mantener tu CRM antiguo en funcionamiento hasta que hayas verificado que la migración está completa. Solo ten cuidado de no crear datos nuevos en ambos lugares.
</Accordion>
<Accordion title="¿Cuánto tiempo suele llevar la migración?">
Depende del volumen y la complejidad de los datos. Las migraciones pequeñas (menos de 10.000 registros) pueden realizarse en unas pocas horas. Las migraciones grandes pueden llevar varios días, incluyendo la limpieza de datos y las pruebas.
</Accordion>
</AccordionGroup>
## ¿Necesitas Ayuda?
<Tip>
¿Quieres ayuda con tu migración? [Encuentra un Veinte socio certificado](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-migrate-crm) para mover tus datos, tuberías y usuarios de extremo a extremo.
</Tip>

View File

@@ -0,0 +1,173 @@
---
title: Migración de autogestionado a la nube
description: Guía paso a paso para migrar tu instancia autogestionada de Twenty a Twenty Cloud.
---
## Resumen
Esta guía te acompaña en la migración de tus datos desde una instancia autogestionada de Twenty a Twenty Cloud. El proceso implica configurar tu espacio de trabajo en la nube, exportar tus datos y volver a importarlos.
<Note>Las vistas, los flujos de trabajo y los roles deben recrearse manualmente después de la migración. Planifica tiempo para este trabajo de configuración.</Note>
## Paso 1: Crea tu espacio de trabajo en la nube
1. Ve a [app.twenty.com](https://app.twenty.com) y crea un nuevo espacio de trabajo
2. Completa el asistente de configuración inicial
3. Anota la URL de tu nuevo espacio de trabajo
## Paso 2: Recrea tu modelo de datos
Antes de importar datos, recrea tus objetos y campos personalizados:
1. Ve a **Ajustes → Modelo de datos** en tu instancia en la nube
2. Crea objetos personalizados que coincidan con tu configuración autogestionada
3. Añade campos personalizados a los objetos estándar y personalizados
4. Configura los ajustes de los campos (único, obligatorio, etc.)
<Note>Toma capturas de pantalla de tu modelo de datos autogestionado como referencia, o mantén ambas instancias abiertas en paralelo.</Note>
## Paso 3: Invita a todos los usuarios
<Warning>
**Importante: invita a los usuarios ANTES de importar datos.**
Los usuarios deben aceptar sus invitaciones antes de que importes cualquier registro que los referencie (como los campos de propietario de la cuenta). Si los usuarios aún no existen, esas relaciones no se podrán mapear.
</Warning>
1. Ve a **Ajustes → Miembros** en tu instancia en la nube
2. Invita a todos los miembros del equipo que tenían cuentas en la instancia autogestionada
3. **Espera a que todos acepten** su invitación
4. Verifica que todos los usuarios aparezcan en tu lista de Miembros
## Paso 4: Exporta datos desde la instancia autogestionada
Exporta cada objeto desde tu instancia autogestionada:
1. Navega a cada objeto (Empresas, Personas, Oportunidades, etc.)
2. Configura la vista para mostrar **todas las columnas** que quieres migrar
3. Haz clic en **⋮ → Exportar vista**
4. Guarda cada archivo CSV con un nombre claro (p. ej., `companies-export.csv`)
**Exporta en este orden** (como referencia al importar):
1. Empresas
2. Personas
3. Oportunidades
4. Objetos personalizados (siguiendo sus dependencias)
5. Tareas, Notas
## Paso 5: Actualiza las referencias a miembros del espacio de trabajo
Los CSV exportados contienen IDs de usuario de tu instancia autogestionada. Estos ID no coincidirán con tu instancia en la nube, por lo que debes reemplazarlos por correos electrónicos.
**Para cada archivo CSV con referencias a usuarios (propietario, asignado, etc.):**
1. Abre el CSV en una aplicación de hojas de cálculo
2. Añade una nueva columna junto a cada columna de ID de usuario (p. ej., `accountOwnerEmail` junto a `accountOwnerId`)
3. Rellena la **dirección de correo electrónico** de cada usuario
4. Puedes eliminar la columna de ID antigua o dejarla (se omitirá durante la importación)
**Ejemplo:**
Antes:
```csv
name,domain,accountOwnerId
Acme Corp,https://acme.com,old-uuid-123
```
Después:
```csv
name,domain,accountOwnerEmail
Acme Corp,https://acme.com,john@yourcompany.com
```
<Note>Usa las mismas direcciones de correo electrónico que los usuarios usaron para aceptar la invitación a su espacio de trabajo en la nube.</Note>
## Paso 6: Planifica el orden de importación
Importa los archivos en el orden correcto para mantener las relaciones:
1. **Empresas** primero (sin dependencias)
2. **Personas** en segundo lugar (enlazadas a Empresas)
3. **Oportunidades** en tercer lugar (enlazadas a Empresas y Personas)
4. **Objetos personalizados** (siguiendo sus dependencias)
5. **Tareas y Notas** al final (enlazadas a otros registros)
Consulta [Cómo importar relaciones](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para obtener detalles sobre cómo mantener las relaciones.
## Paso 7: Importa a la nube
Para cada archivo CSV, en orden:
1. Navega al objeto en tu instancia en la nube
2. Haz clic en **⋮ → Importar registros**
3. Sube el archivo CSV
4. Asocia las columnas a los campos:
* Asocia las columnas de correo electrónico de usuario a los campos de relación correspondientes
* Asocia las demás columnas como de costumbre
5. Revisa y corrige cualquier error
6. Confirma la importación
7. Verifica algunos registros antes de continuar con el siguiente archivo
## Paso 8: Recrea la configuración
Después de importar los datos, recrea manualmente:
### Vistas
* Recrea las vistas guardadas con filtros, ordenaciones y configuraciones de columnas
* Configura cualquier vista de kanban o calendario
### Flujos de trabajo
* Recrea automatizaciones en **Ajustes → Flujos de trabajo**
* Prueba cada flujo de trabajo antes de depender de él
### Roles y permisos
* Configura los roles en **Configuración → Miembros → Roles**
* Asigna a los usuarios a los roles adecuados
### Integraciones
* Vuelve a conectar la sincronización de correo y calendario para cada usuario
* Reconfigura cualquier integración de API con nuevas claves de API
## Lista de verificación post-migración
<Check>Todos los datos se importaron correctamente</Check>
<Check>Las relaciones entre objetos funcionan correctamente</Check>
<Check>Las asignaciones de usuarios (propietario, asignado) se mapearon correctamente</Check>
<Check>Vistas recreadas</Check>
<Check>Flujos de trabajo recreados y probados</Check>
<Check>Roles y permisos configurados</Check>
<Check>Sincronización de correo/calendario reconectada</Check>
<Check>Integraciones de API actualizadas con nuevas claves</Check>
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Puedo migrar los flujos de trabajo automáticamente?">
Actualmente no. Los flujos de trabajo deben recrearse manualmente en tu instancia en la nube.
</Accordion>
<Accordion title="¿Qué pasa con los archivos adjuntos e imágenes?">
Los archivos adjuntos no están incluidos en las exportaciones CSV. Necesitarás volver a subir los archivos adjuntos manualmente, migrarlos mediante la API o contactar con nuestro equipo para obtener ayuda con migraciones grandes.
</Accordion>
<Accordion title="¿Puedo mantener ambas instancias en funcionamiento durante la migración?">
Sí, recomendamos mantener tu instancia autogestionada en funcionamiento hasta que hayas verificado que la migración a la nube está completa. Solo ten cuidado de no crear datos nuevos en ambos lugares.
</Accordion>
<Accordion title="¿Qué pasa si un usuario aún no ha aceptado su invitación?">
Los registros que hagan referencia a ese usuario fallarán al importar o la relación quedará vacía. Asegúrate de que todos los usuarios acepten las invitaciones antes de importar datos.
</Accordion>
</AccordionGroup>
## ¿Necesitas Ayuda?
<Tip>
¿Estás migrando un espacio de trabajo grande o complejo? [Encuentra un partner certificado de Twenty](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-migrate-cloud) para encargarse de la migración de principio a fin. *(O involucra a nuestro equipo: [contact@twenty.com](mailto:contact@twenty.com).)*
</Tip>

View File

@@ -0,0 +1,267 @@
---
title: Prepara tus archivos CSV
description: Guía completa paso a paso para dar formato a tus datos para importarlos en Twenty.
---
## Resumen
Esta guía te explica cómo preparar tu archivo CSV para una importación exitosa. Sigue estos pasos para evitar errores.
## Paso 1: Comprueba los requisitos del archivo
Antes de empezar, asegúrate de que tu archivo cumpla estos requisitos:
| Requisito | Detalles |
| -------------------- | ----------------------------- |
| **Formato** | CSV, XLSX o XLS |
| **Límite de tamaño** | 10.000 registros por archivo |
| **Codificación** | Se recomienda UTF-8 |
| **Estructura** | Un tipo de objeto por archivo |
<Note>Para conjuntos de datos de más de 10.000 registros, divídelos en varios archivos o usa la [importación por API](/l/es/user-guide/data-migration/how-tos/import-data-via-api).</Note>
## Paso 2: Descarga el archivo de ejemplo
**Este es el paso más importante.** El archivo de ejemplo te muestra los nombres de columna y el formato exactos que Twenty espera.
1. Ve a la vista del objeto (Personas, Empresas, etc.)
2. Haz clic en **⋮** → **Importar registros**
3. Haz clic en **Descargar archivo de ejemplo**
4. Utiliza este archivo como plantilla
<Note>**Consejo práctico:** En su lugar, exporta algunos registros existentes. Esto te proporciona ejemplos reales de cómo debe darse formato a los datos, y los nombres de las columnas se asignarán automáticamente durante la importación.</Note>
## Paso 3: Eliminar valores duplicados
Twenty exige unicidad en determinados campos. Los duplicados provocarán errores de importación.
| Objeto | Campos únicos |
| -------------------------- | ------------------------------------------------------------ |
| **Personas** | `id`, `email` |
| **Empresas** | `id`, `domain` |
| **Objetos personalizados** | `id`, además de cualquier campo que hayas marcado como único |
**Antes de importar:**
1. Ordena tu hoja de cálculo por el campo único (correo electrónico o dominio)
2. Elimina o fusiona las filas duplicadas
3. Comprueba si hay duplicados que ya existan en Twenty
<Warning>**Los registros eliminados lógicamente cuentan para la unicidad.** Los registros en Menú de comandos → Ver registros eliminados provocarán errores de duplicados. Elimínalos de forma permanente o restáuralos y actualízalos.</Warning>
## Paso 4: Formatea correctamente cada tipo de campo
Los distintos tipos de campos requieren formatos específicos. Aquí tienes la referencia completa:
### Campos de texto
* No se requiere un formato especial
* Los espacios iniciales y finales se eliminan automáticamente
### Campos de correo electrónico
* Debe tener un formato de correo electrónico válido: `name@domain.com`
* Debe ser único (sin duplicados en el archivo ni en Twenty)
* Para correos electrónicos adicionales, utiliza este formato en la columna **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### Campos de dominio
* **Formato recomendado**: `https://domain.com`
* Esto coincide con el formato usado por la sincronización del buzón/calendario (evita duplicados)
* Rellena ambas columnas:
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
* Debe ser único dentro de tu archivo y en Twenty
### Campos de teléfono
El campo de teléfono es un **campo anidado** que requiere varias columnas:
| Columna | Ejemplo |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### Campos de dirección
Dirección es un **campo anidado** con varias columnas (algunas pueden dejarse en blanco):
* **Dirección / Dirección 1**: Línea 1 de la dirección
* **Dirección / Dirección 2**: Línea 2 de la dirección (opcional)
* **Dirección / Ciudad**: Nombre de la ciudad
* **Dirección / Estado**: Estado o provincia
* **Dirección / País**: Nombre del país
* **Dirección / Código postal**: Código postal/ZIP
### Campos de fecha
Usa un formato coherente en todo tu archivo:
* `YYYY-MM-DD` (recomendado): `2024-03-15`
* ISO 8601: `2024-03-15T10:30:00Z`
### Campos numéricos
* Solo números (sin texto)
* Usa punto para decimales: `1234.56`
* Sin separadores de miles (no `1,234.56`)
### Campos de moneda
Moneda es un **campo anidado** que requiere dos columnas que **ambas deben completarse**:
| Columna | Ejemplo |
| --------------------- | --------- |
| **Importe / Importe** | `1234.56` |
| **Importe / Moneda** | `USD` |
### Campos booleanos
Usa mayúsculas: `TRUE` o `FALSE`
<Warning>Las minúsculas `true` o `false` no funcionarán.</Warning>
### Campos de Selección
Usa el **nombre de la API** de la opción, no la etiqueta visible.
**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** (conmutador en la parte inferior derecha)
4. Copia el nombre de la API (p. ej., `OPTION_1`, no "Option 1")
<Note>Las nuevas opciones de selección no se crean automáticamente. Agrégalas en **Configuración → Modelo de datos** antes de importar.</Note>
### Campos de selección múltiple
Usa nombres de API en formato de arreglo:
```
["VALUE1","VALUE2"]
```
### Campos de arreglo
Usa el formato de arreglo JSON:
```
["value1","value2"]
```
### Campos de calificación
Usa el formato: `RATING_1`, `RATING_2`, `RATING_3`, `RATING_4` o `RATING_5`
### Campos de enlaces/URL
Completa ambas columnas:
* **Enlaces / Etiqueta del enlace**: `Twenty`
* **Enlaces / URL del enlace**: `https://twenty.com`
Para enlaces secundarios, usa la columna **Enlaces / Enlaces secundarios**:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### Campos JSON
Usa un formato JSON válido:
```
{"key":"value","key2":"value2"}
```
### Campos de ID
* **Opcional**: Twenty genera IDs automáticamente si no se proporcionan
* **Formato**: UUID (p. ej., `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
* **Caso de uso**: Incluye el ID para actualizar registros existentes en lugar de crear nuevos
## Paso 5: Agrega columnas de relación (si se vinculan registros)
Para vincular registros con otros objetos (p. ej., Personas con Empresas), agrega una columna con el identificador único del registro relacionado.
**Ejemplo**: Vincular Personas con Empresas
Agrega una columna a tu CSV de Personas:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Reglas importantes para las relaciones:**
* El registro padre debe existir previamente en Twenty
* Usa el formato de **URL de dominio** (`https://domain.com`), no la etiqueta
* Mapea solo UN identificador único (no incluyas `companyId` Y `companyDomain`)
* Para los miembros del espacio de trabajo, usa su **email** (no el nombre)
<Warning>
**¡El orden de importación importa!**
Importa el lado "uno" antes del lado "muchos":
1. **Empresas** primero
2. **Personas** después (con referencia a la empresa)
3. **Oportunidades** en tercer lugar
El registro padre debe existir antes de poder referenciarlo.
</Warning>
Consulta [Cómo importar relaciones](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para obtener instrucciones detalladas.
## Paso 6: Asegúrate de que los campos existan en Twenty
La importación crea **registros**, no **campos**. Todos los campos que quieras importar deben existir ya en tu modelo de datos.
**Antes de importar:**
1. Ve a **Configuración → Modelo de datos**
2. Selecciona tu objeto
3. Crea los campos personalizados que necesites
4. Anota los nombres exactos de los campos (deben coincidir con los encabezados de tus columnas)
## Paso 7: Lista de comprobación final
Antes de subir tu archivo, verifica:
<Check>El archivo está en formato CSV, XLSX o XLS</Check>
<Check>El archivo tiene menos de 10,000 registros</Check>
<Check>La codificación es UTF-8</Check>
<Check>No hay correos electrónicos duplicados (para Personas) ni dominios duplicados (para Empresas)</Check>
<Check>Las fechas usan un formato coherente en todo el archivo</Check>
<Check>Los dominios usan el formato `https://domain.com`</Check>
<Check>Los campos booleanos usan `TRUE` o `FALSE` (en mayúsculas)</Check>
<Check>Los campos de selección usan nombres de API, no etiquetas visibles</Check>
<Check>Todos los campos personalizados existen en Configuración → Modelo de datos</Check>
<Check>Los registros padre importados antes que los registros hijo</Check>
<Check>Las columnas de relación hacen referencia a registros existentes</Check>
## Errores comunes a evitar
| Error | Solución |
| ------------------------------------------------- | ----------------------------------------------- |
| Usar `true` en lugar de `TRUE` | Los valores booleanos deben estar en mayúsculas |
| Usar etiquetas visibles para campos de selección | Busca y usa los nombres de API en Configuración |
| Importar Personas antes que Empresas | Importa siempre primero los objetos padre |
| Falta el código de moneda en los campos de moneda | Completa las columnas de Importe y Moneda |
| Formato de dominio incorrecto | Usa `https://domain.com` de forma coherente |
| Mapear varios campos únicos para las relaciones | Mapea solo UNO (dominio O ID, no ambos) |
## Próximos Pasos
¡Tu archivo está listo! Ahora:
* [Importar empresas](/l/es/user-guide/data-migration/how-tos/import-companies-via-csv) (importa estas primero)
* [Importar contactos](/l/es/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [Corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors)

View File

@@ -0,0 +1,198 @@
---
title: Actualizar registros existentes mediante la importación
description: Guía completa paso a paso para actualizar registros en masa mediante la importación de CSV.
---
## Resumen
¿Necesita actualizar muchos registros a la vez? En lugar de editarlos uno por uno, use la importación de CSV para actualizar en masa los registros existentes.
**Casos de uso:**
* Actualizar cargos para varias personas
* Cambiar información de empresas en masa
* Añadir datos a nuevos campos personalizados
* Corregir errores de datos en muchos registros
## Cómo Funciona
Cuando importa un archivo que contiene un **identificador único** que coincide con un registro existente, Twenty actualiza ese registro en lugar de crear un duplicado.
| Si el identificador único... | Twenty hará... |
| ---------------------------------- | ------------------------------------------------- |
| Coincide con un registro existente | **Actualizar** el registro existente |
| No coincide con ningún registro | **Crear** un nuevo registro |
| Falta en su archivo | **Crear** un nuevo registro (con ID autogenerado) |
<Warning>
**Los campos de selección múltiple se sobrescriben, no se combinan.**
Si un registro tiene `Option A` y `Option B` seleccionadas, y usted importa `["Option C"]`, el registro solo tendrá `Option C` después de la importación. La importación reemplaza todas las selecciones anteriores—no las agrega.
Para conservar los valores existentes, inclúyalos todos en su importación: `["Option A","Option B","Option C"]`
</Warning>
## Paso 1: Exporte sus datos actuales
Primero, exporte los registros que desea actualizar:
1. Navegue al objeto (Personas, Empresas, etc.)
2. **Agregue las columnas que necesita** — haga clic en **Opciones → Campos** para mostrar los campos que desea actualizar
3. **Filtre si es necesario** — limite a solo los registros que desea actualizar
4. Haga clic en **⋮** → **Exportar vista**
5. Guarde el archivo CSV
<Note>**¿Por qué exportar primero?** El archivo exportado tiene el formato correcto, incluye identificadores únicos y se asigna automáticamente durante la importación.</Note>
### Qué se exporta
* Todas las columnas visibles en su vista actual
* Los identificadores únicos del registro (`id`, `email`, `domain`)
* Valores de los campos actuales que puede modificar
## Paso 2: Edite el archivo CSV
Abra el archivo exportado en su aplicación de hoja de cálculo (Excel, Google Sheets, etc.):
1. **Conserve la columna del identificador único** — no elimine `id`, `email` ni `domain`
2. **Actualice los valores** en las columnas que desea cambiar
3. **Elimine las columnas que no necesita actualizar** (opcional, pero más limpio)
4. **No cambie los valores del identificador único** — o Twenty creará nuevos registros
### Ejemplo: Actualizar cargos
**Archivo exportado:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Sales Rep
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Sales Rep
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Sales Rep
```
**Después de sus cambios:**
```csv
id,email,firstName,lastName,jobTitle
550e8400-e29b-41d4-a716-446655440001,john@acme.com,John,Smith,Account Executive
550e8400-e29b-41d4-a716-446655440002,jane@acme.com,Jane,Doe,Senior Account Executive
550e8400-e29b-41d4-a716-446655440003,bob@acme.com,Bob,Johnson,Account Executive
```
<Warning>
**No cambie los valores del identificador único.**
Si cambia `john@acme.com` a `john.smith@acme.com`, Twenty creará un registro nuevo en lugar de actualizar el existente.
</Warning>
## Paso 3: Importe el archivo actualizado
1. Navegue al objeto
2. Haga clic en **⋮** → **Importar registros**
3. Cargue su archivo CSV editado
4. **Asegúrese de que el identificador único esté asignado** — verifique que `email`, `domain` o `id` estén asignados correctamente
5. Revise las asignaciones de campos
6. Verifique si hay errores
7. Haga clic en **Confirmar**
Twenty hace coincidir los registros mediante el identificador único y los actualiza con nuevos valores.
## Elegir el identificador único adecuado
| Objeto | Recomendado | Alternativa | Notas |
| -------------------------- | --------------------- | ----------- | --------------------------------------------- |
| **Personas** | `correo Electrónico` | `id` | El correo electrónico es legible para humanos |
| **Empresas** | `dominio` | `id` | El dominio es legible para humanos |
| **Objetos personalizados** | Cualquier campo único | `id` | Use su campo único personalizado |
<Note>**Use solo UN identificador único.** No asigne `email` Y `id`. Esto puede causar confusión y errores.</Note>
### Uso de campos únicos personalizados
Si tiene un campo personalizado marcado como único (como un ID externo de otro sistema):
1. Incluya ese campo en su exportación e importación
2. Asígnelo durante la importación
3. Twenty hará coincidir por ese campo
## Paso 4: Verifique las actualizaciones
Después de la importación:
1. Abra algunos registros actualizados
2. Verifique que los cambios se hayan aplicado
3. Compruebe que no se hayan creado registros duplicados
## ¿Qué pasa con los campos que no están en su archivo?
**Los campos que no se incluyen en su archivo de importación permanecen sin cambios.**
| Su archivo incluye... | Resultado |
| ---------------------------- | ----------------------------------------------------------------- |
| `email`, `jobTitle` | Solo se actualiza `jobTitle`; los demás campos permanecen iguales |
| `email`, `jobTitle`, `phone` | Se actualizan `jobTitle` y `phone` |
Esto significa que solo necesita incluir los campos que desea cambiar (más el identificador único).
## Combinar actualizaciones y nuevos registros
Puede actualizar registros existentes Y crear otros nuevos en la misma importación:
```csv
email,firstName,lastName,jobTitle
john@acme.com,John,Smith,Senior Manager ← Updates existing (email matches)
newperson@acme.com,New,Person,Analyst ← Creates new (email doesn't match)
```
## Errores comunes que se deben evitar
| Error | Problema | Resultado | Solución |
| ----------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------- | ----------------------------------------------------- |
| **Cambiar el identificador único** | Se cambió `john@acme.com` a `john.smith@acme.com` | Crea un nuevo registro en lugar de actualizar | Mantenga sin cambios los identificadores únicos |
| **Varios campos únicos** | Asignar ambos `email` Y `id` | Posibles conflictos de coincidencia | Asigne solo UN identificador único |
| **Sin identificador único** | El archivo solo tiene `firstName`, `lastName`, `jobTitle` | Todas las filas crean nuevos registros | Incluya siempre `email`, `domain` o `id` |
| **Diferencia de mayúsculas y minúsculas** | El archivo tiene `John@acme.com`, pero Twenty tiene `john@acme.com` | Crea un nuevo registro | Exporte desde Twenty para obtener los valores exactos |
## Preguntas frecuentes
<AccordionGroup>
<Accordion title="¿Qué pasa si algunos registros aún no existen?">
Los registros con identificadores únicos que no coincidan con registros existentes se crearán como nuevos registros. Esto le permite actualizar y crear en la misma importación.
</Accordion>
<Accordion title="¿Puedo borrar/vaciar el valor de un campo?">
Sí, deje la celda vacía en su CSV. La importación borrará el valor de ese campo en el registro existente.
</Accordion>
<Accordion title="¿Qué ocurre con los campos que no incluyo en la importación?">
Los campos que no estén en su archivo de importación permanecen sin cambios en los registros existentes. Solo se actualizan los campos que incluya.
</Accordion>
<Accordion title="¿Puedo actualizar campos de relación (como Empresa)?">
¡Sí! Incluya el identificador único de la relación (p. ej., `companyDomain`) y asígnelo al campo de relación. Se actualizará la relación.
</Accordion>
<Accordion title="¿Cómo sé qué registros se actualizarán y cuáles se crearán?">
Durante el paso de revisión de la importación, Twenty le muestra cuántos registros se actualizarán frente a cuántos se crearán según las coincidencias del identificador único.
</Accordion>
<Accordion title="¿Puedo deshacer una actualización masiva?">
No hay deshacer automático. Le recomendamos exportar sus datos como copia de seguridad antes de realizar actualizaciones masivas.
</Accordion>
</AccordionGroup>
## Mejores prácticas
1. **Exporte primero** — comience siempre desde una exportación para asegurar el formato correcto
2. **Haga una copia de seguridad antes de actualizar** — exporte sus datos antes de realizar cambios masivos
3. **Pruebe con unos pocos registros** — intente actualizar primero 5–10 registros antes de hacer un lote grande
4. **Use identificadores legibles para humanos** — `email` y `domain` son más fáciles de verificar que `id`
5. **Incluya solo las columnas necesarias** — menos columnas significa menos posibilidades de errores
## Solución de Problemas
¿Tiene problemas? Revise:
* [Cómo corregir errores de importación](/l/es/user-guide/data-migration/how-tos/fix-import-errors)
* [Restricciones de unicidad](/l/es/user-guide/data-migration/capabilities/uniqueness-constraints)
* [Referencia de asignación de campos](/l/es/user-guide/data-migration/capabilities/field-mapping)

View File

@@ -0,0 +1,83 @@
---
title: Migración de datos
description: Importe y exporte sus datos de CRM mediante archivos CSV o la API.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## Métodos de importación
Twenty admite dos métodos principales para importar datos:
| Método | Ideal para | Límite de volumen |
| ---------------------------- | ------------------------------------------------ | ---------------------------- |
| **Importación CSV** | Migraciones estándar, actualizaciones periódicas | 10.000 registros por archivo |
| **Importación mediante API** | Migraciones a gran escala, automatización | Ilimitado |
<Note>Para conjuntos de datos muy grandes (cientos de miles de registros), use la API. Nuestros [socios de implementación](/l/es/user-guide/getting-started/capabilities/implementation-services) pueden ayudar a ejecutar estos scripts si es necesario.</Note>
## Conceptos básicos de la importación CSV
Puede importar datos de cualquier objeto mediante archivos CSV, XLSX o XLS. Cada archivo debe contener **solo un tipo de objeto** (por ejemplo, solo registros de Personas).
<Note>**Los campos deben existir antes de la importación.** Cargar un CSV crea registros, pero no crea campos. Si necesita campos personalizados, créelos primero en **Configuración → Modelo de datos**.</Note>
### Pasos
1. Vaya al objeto en el que desea importar datos
2. Haga clic en el icono **⋮** en la esquina superior derecha (este es el Menú de comandos) y haga clic en **Importar registros**
3. Descargue el archivo de plantilla para asegurarse de que sus datos estén en el formato esperado
4. Cargue su archivo CSV con el formato correcto
5. Asigne sus columnas a los campos de Twenty
6. Revise los errores (resaltados en amarillo) y corríjalos, editando directamente en la interfaz de usuario
7. Confirme la importación
### Importar relaciones entre objetos
Puedes importar relaciones entre objetos usando la función de importación CSV. Debe hacer referencia al objeto relacionado utilizando un campo único de ese objeto: el `id`, el `email` para Personas y Miembros del espacio de trabajo, el `domain` para empresas, cualquier otro campo establecido como único en el modelo de datos para cualquier otro objeto.
<Note>**Los registros eliminados cuentan para la unicidad.** Los registros eliminados lógicamente (visibles en Menú de comandos → Ver registros eliminados) se incluyen en las comprobaciones de unicidad. Si importa un registro con el mismo valor único que un registro eliminado, el registro eliminado se restaurará.</Note>
<Warning>
**¡Importa el orden de importación!**
Al importar objetos relacionados, cargue los archivos en este orden:
1. **Empresas** primero (el lado "uno" de las relaciones)
2. **Personas** en segundo lugar (vinculadas a Empresas mediante companyId)
3. **Oportunidades** en tercer lugar (vinculadas a Empresas/Personas)
4. **Objetos personalizados** con relaciones al final
¿Por qué? El lado "uno" de una relación de uno a muchos debe existir antes de que pueda hacer referencia a él. Por ejemplo, el registro de Empresa debe existir antes de importar una Persona con el ID de esa empresa.
</Warning>
Consulte [este artículo](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) para ver una guía paso a paso sobre cómo proceder.
## Exportar Datos
Exporte los datos de su espacio de trabajo para copias de seguridad, informes o migración.
### Pasos
1. Vaya al objeto que desea exportar
2. Configure la vista con las columnas que necesita
3. Haga clic en **⋮** → **Exportar vista**
4. Guarde el archivo CSV
<Note>**Solo se exportan las columnas visibles.** El archivo CSV contendrá únicamente las columnas que se muestran en su vista actual. Agregue u oculte columnas antes de exportar para controlar qué datos se incluyen.</Note>
<Note>**Límites de exportación**: hasta 20.000 registros por exportación.</Note>
## Permisos
La importación y exportación de datos requieren permisos específicos:
* **Importación**: requiere el permiso "Importar CSV"
* **Exportación**: requiere el permiso "Exportar CSV"
Póngase en contacto con el administrador de su espacio de trabajo si no tiene estos permisos.
## Próximos Pasos
* [Prepare sus archivos CSV](/l/es/user-guide/data-migration/how-tos/prepare-your-csv-files)
* [Importe relaciones entre objetos](/l/es/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [Importe mediante API para conjuntos de datos grandes](/l/es/user-guide/data-migration/how-tos/import-data-via-api)