La respuesta corta
Los fallos de migración son silenciosos por defecto. Los problemas estructurales (una fila irregular, un correo electrónico mal formado) se detectan. Los problemas de valor no: un valor de desplegable sin una opción coincidente en el destino queda vacío, sin ningún error. Según el recuento sobre una exportación antes de importar, un solo campo habría dejado vacíos 579 de 3432 registros, un 17 %.
Dos reglas hacen la mayor parte del trabajo. Haga el inventario de la exportación completa, nunca de una muestra: una muestra de 71 filas mostraba 59 columnas vacías donde el archivo completo tenía 26, y un campo que aparecía relleno al 0 % lo estaba en realidad al 100 %. Y concilie el conjunto de valores de cada desplegable con las opciones del destino antes de importar, no después.
El problema de negocio
Una organización traslada su base de datos de contactos de un sistema al CRM. A primera vista es un ejercicio de mapeo: alinear las columnas, ejecutar la importación y tenerlo terminado antes de comer.
Lo que realmente tiene que conseguir:
- Completitud: cada columna que contiene datos reales acaba en algún sitio, o se descarta por una decisión explícita y no por accidente;
- Atribución: cada registro llega con el propietario correcto, porque la propiedad determina la visibilidad y los informes;
- Integridad del consentimiento: la aceptación de comunicaciones de marketing y los indicadores del RGPD llegan intactos, ya que equivocarse aquí tiene consecuencias legales y no solo molestas;
- Idempotencia: la importación puede ejecutarse dos veces sin producir dos copias de todo, porque se ejecutará dos veces;
- Procedencia: después sigue siendo posible saber de dónde vino cada registro y cuándo se creó originalmente.
La exportación de este proyecto tenía 91 columnas de ancho y 3432 registros de fondo. Era estructuralmente limpia: sin filas irregulares, sin direcciones de correo mal formadas o en blanco, sin identificadores de origen duplicados. Todos los problemas que merece la pena contar estaban escondidos dentro de datos por lo demás válidos.
Por qué falla el enfoque obvio
Diseñar el esquema de destino a partir de una exportación de muestra
La muestra miente, y miente en ambas direcciones. Una muestra de 71 filas del sistema de origen mostraba 59 columnas completamente vacías. La exportación completa de 3432 filas solo tenía 26 realmente vacías.
Una columna aparecía rellena al 0 % en la muestra y rellena al 100 % (los 3432 registros) en el archivo completo. Si se construye a partir de la muestra, esa columna no tiene ningún destino.
El motivo es prosaico y se puede generalizar: una muestra suele ser un corte reciente, y los registros recientes usan campos distintos de los históricos. Los bloques de dirección, los campos del programa de partners, la atribución de campañas y los datos de referidos probablemente estaban rellenos en los registros antiguos y simplemente no aparecían en una ventana de cuatro semanas.
La misma trampa tiene un filo más cortante. En la muestra, todas las direcciones de correo eran únicas, lo que sugería el correo como clave natural de deduplicación. En la exportación completa había direcciones de correo duplicadas en 10 registros. Una estrategia de deduplicación elegida a partir de la muestra habría fusionado sin avisar a personas distintas.
Tratar la exportación como una única lista homogénea
Rara vez lo es. Esta exportación contenía varias cohortes distintas de contactos (registros procedentes de un sitio de contenidos, altas en pruebas del producto, prospectos de marketing y un puñado de consultas puntuales) y el patrón de cumplimentación seguía a la cohorte, no al contacto. Cada cohorte rellenaba un subconjunto distinto de columnas, y cada una tenía su propio propietario.
La consecuencia es de diseño, no de datos: no construya un único formulario plano. Dieciocho campos nuevos repartidos entre tres cohortes significan que un único formulario combinado aparece vacío en aproximadamente un 70 % en cada registro, sea cual sea la cohorte a la que pertenezca.
Mapear las columnas y pulsar importar
Aquí es donde se produce la pérdida silenciosa, y merece su propia sección.
El fallo silencioso: los valores de los desplegables
Los campos desplegables se importan por el identificador de la opción, no por la etiqueta. Un valor de origen sin una opción coincidente en el destino no da error, no avisa y no detiene la importación. El campo queda vacío.
Fuente, y la laguna que contiene. El centro de ayuda de Coevera, Importing data into Coevera — tips on data preparation, establece el requisito: «no podrá importar registros que contengan valores que no coincidan con los que tiene en Coevera», y le indica que cree primero las opciones que faltan. Lo que no dice es qué ocurre realmente si se salta ese paso: el registro se importa y solo se pierde ese campo. Esa diferencia es todo el contenido de esta sección.
Medido en esta exportación, antes de cualquier corrección:
| Campo | Quedaría en blanco | Causa |
|---|---|---|
| Estado del contacto | 579 de 3432 · 17 % | Cinco valores presentes en el origen no tenían ninguna opción creada, entre ellos un estado que llevaban 335 registros y otro que llevaban 128. |
| Nivel de producto | 117 de 418 · 28 % | Sobre todo variantes de mayúsculas y minúsculas de opciones que sí existían, más dos valores numéricos que eran realmente basura. |
| Tramo de tamaño del equipo | 39 | Una opción que faltaba, más fechas corruptas por la hoja de cálculo. |
| Versión del producto | 1 | Una sola variante de mayúsculas y minúsculas. |
Tres causas distintas, tres soluciones diferentes
- Opciones que nunca se crearon. El caso obvio, y el más fácil de resolver una vez que ha contado los valores distintos del origen en lugar de suponer el conjunto a partir de la documentación.
-
Variantes de mayúsculas y minúsculas. El mismo valor llega como
Unlimitedy comounlimited. No son opciones nuevas: crearlas fragmentaría sus informes. Normalícelas en el momento de la importación. -
Corrupción por la hoja de cálculo. Valores de rango como
2-4y5-10habían sido convertidos sin avisar en fechas por una hoja de cálculo en algún punto anterior, y llegaban como4-Feby10-May. No es culpa del sistema de origen ni del CRM; es lo que ocurre cuando un CSV pasa por una hoja de cálculo. Se detecta contando los valores distintos y leyendo la lista con sus propios ojos.
Las tres son invisibles a posteriori. Un campo en blanco tiene exactamente el mismo aspecto que un campo que estaba legítimamente vacío en el origen.
Configuración a nivel de campo
De 91 columnas de origen, el resultado fue 8 mapeadas a campos estándar existentes, 18 campos personalizados nuevos, y el resto o bien realmente vacías o bien descartadas de forma explícita.
Qué descartar deliberadamente
Algunas columnas con datos no valen nada, e identificarlas forma parte del trabajo:
- Constantes. Una columna que tiene el mismo valor en todas las filas suele ser el identificador de tenant del sistema de origen o un discriminador de tipo implícito en su mapeo. No aporta ninguna información por registro.
- Artefactos de la exportación. Una columna era idéntica byte a byte al identificador del registro allí donde estaba rellena, y vacía en el resto: un duplicado producido por la exportación, no un campo que alguien mantuviera.
- Códigos sin tabla de consulta. Los códigos numéricos no significan nada sin la leyenda, y la leyenda a menudo no se puede exportar. Mejor descartarlos que importar números que nadie sabe interpretar.
Normalización que debe hacer la importación
| Síntoma en la exportación | Corrección antes de importar |
|---|---|
Booleanos exportados como 1.00 / 0.00 | Convertir a verdadero/falso |
Identificadores enteros exportados como 104857.00 | Eliminar el sufijo decimal, o se importarán como texto con una cola espuria |
| País como códigos ISO-2 en minúsculas | Expandir a los nombres que espera el CRM |
| Números de teléfono con espacios y paréntesis incoherentes | Normalizar |
| Variantes de mayúsculas y minúsculas en desplegables | Unificar en la opción canónica; no crear una segunda opción |
Etiquetas
Las etiquetas son un campo multivalor, así que un contacto conserva todas sus etiquetas de origen, pero el vocabulario de etiquetas debe existir en el espacio antes de importar los contactos. Tres detalles de esta exportación que conviene comprobar en la suya: verifique que el delimitador es realmente seguro (aquí, ningún valor contenía una coma que no fuera seguida de un espacio); vigile los apóstrofos tipográficos, que hacen distintas dos etiquetas visualmente idénticas; y cuente con basura: una etiqueta sin sentido aparecía en 182 registros.
Pertenencia al formulario
Cada campo nuevo debe colocarse en el formulario, no solo crearse. En Coevera, un campo que existe en el esquema pero no está en el formulario queda inerte; consulte el Blueprint 002, donde la misma restricción desactiva sin avisar los campos de IA y los calculados.
Como la exportación tiene forma de cohortes, divida el formulario en secciones por cohorte
en lugar de listar dieciocho campos en un solo bloque. Tenga en cuenta que las columnas de
los formularios de Coevera deben usar una de las cinco divisiones válidas de cuatro
unidades: [4], [2,2],
[1,1,2], [2,1,1], [1,1,1,1].
La secuencia de importación
El orden importa, porque varios pasos son requisito previo del siguiente.
- Haga el inventario de la exportación completaCada columna: número de valores rellenos, número de valores distintos y los valores distintos reales de todo lo que vaya a convertirse en desplegable. No la muestra: el archivo entero.
- Divida en cohortesAgrupe las filas por patrón de cumplimentación. Esto determina el diseño del formulario y a menudo revela que un propietario corresponde a una cohorte.
- Decida explícitamente el destino de cada columnaCampo estándar, nuevo campo personalizado o descartada con un motivo declarado. Una columna sin decisión es una columna que se perderá.
- Concilie las opciones de los desplegablesPara cada desplegable, compare los valores distintos del origen con las opciones del destino. Cree lo que falte de verdad; normalice las variantes de mayúsculas y minúsculas; corrija la corrupción en el origen.
- Cree el vocabulario de etiquetasAntes de importar ningún contacto, o las etiquetas no se asignarán y no habrá aviso.
- Cree los campos y colóquelos en el formularioAmbas cosas, en el mismo cambio.
- Escriba un registro real de principio a finUna fila real de la exportación, no datos sintéticos. Vuelva a leerlo y compare cada campo. Después elimínelo.
- Importe y luego verifique por tasa de cumplimentaciónCompare la tasa de cumplimentación de cada campo tras la importación con el número de valores rellenos del origen. Una discrepancia es la única señal de la que dispone.
El paso 7 es el que la gente se salta y el que detecta la mayoría de los problemas. Los datos de prueba sintéticos son limpios por construcción; una fila real trae las variantes de mayúsculas y minúsculas, los sufijos decimales y los apóstrofos tipográficos.
Límites y compromisos
Los campos gestionados por el sistema no se pueden importar
La marca de tiempo de creación del registro la fija la plataforma. No puede importar en ella la fecha de creación del sistema de origen, así que conservar la procedencia requiere un campo de fecha personalizado aparte; decídalo de antemano, porque después no se puede recuperar sin volver a importar.
La fecha del último contacto también la gestiona el CRM y no se puede importar. En esta exportación esa columna estaba rellena en los 3432 registros, y sin un decimoquinto campo personalizado no habría tenido ningún sitio adonde ir.
Los campos URL reescriben un dominio al escribirse
En los valores escritos en un campo de tipo url, la cadena
pipelinersales.com se sustituye por coevera.com en el momento de
almacenarse. Verificado en un espacio en producción el 2026-09-03 con un control
emparejado: el mismo valor escrito simultáneamente en un campo url y en un
campo de texto en una misma petición volvió reescrito en el primero y literal en el segundo.
Es una sustitución de subcadena aplicada en cualquier parte del valor, también dentro
de las cadenas de consulta, de modo que un parámetro de seguimiento o de redirección que
haga referencia al dominio antiguo se redirige sin avisar. El esquema, el subdominio y la
ruta se conservan, y los dominios no relacionados no se tocan. En la migración original esto
afectó a 28 de 29 valores de URL. Si sus datos de origen contienen este tipo de URL y las
necesita literales, use un campo de texto simple en lugar de un campo url.
El propietario es obligatorio, y los nombres no son claves
Cada registro requiere un propietario válido, así que las cuentas de usuario deben existir en el destino antes de ejecutar la importación. Mapee por la dirección de correo electrónico del usuario de origen, no por su nombre visible: en esta exportación el nombre de un comercial correspondía a dos direcciones de correo distintas, 2432 registros con una y 15 con la otra. Mapear por nombre habría eliminado una distinción real.
Elija la clave de deduplicación de forma deliberada
Importe el identificador de registro propio del sistema de origen en un campo personalizado dedicado. Es único en el origen, se mantiene estable entre reexportaciones y hace que una importación repetida sea idempotente. El correo electrónico es la opción intuitiva y no es seguro: esta base de datos contenía direcciones realmente duplicadas que una muestra no reveló.
Lo que la exportación no le dirá
- La ausencia de un valor no prueba su ausencia en el sistema de origen. Todos los estados de aceptación de esta exportación decían Subscribed, lo que casi con seguridad significa que la exportación estaba filtrada a los suscriptores, no que nadie se hubiera dado de baja. Importarla como si fuera el panorama completo habría descartado sin avisar la lista de bajas, que es el único error de todo este artículo con consecuencias legales.
- Los problemas reales de calidad de datos viajan con los datos. Esta exportación traía registros sin nombre, sin apellido o sin ninguno de los dos. La migración no es el momento de corregirlos, pero sí el momento de contarlos.
Verificación
El modo de fallo es el silencio, así que la verificación no puede ser «¿informó la importación de que todo había ido bien?»: lo hizo.
- Número de campos antes y después. La entidad Contact pasó de 83 campos a 98. Un simple recuento confirma que cada campo previsto se creó realmente, y detecta el que silenciosamente no se creó.
- Cada opción de desplegable confirmada como presente, con los nombres y el orden correctos, antes de importar, no después.
- Un registro real escrito de principio a fin, usando una fila real de la exportación, releído a través de ambas API, la REST y la de administración, y comparado campo por campo. Esto es lo que sacó a la luz la reescritura de URL: todos los demás valores se conservaron exactamente y uno no. El registro de prueba se eliminó después.
- Tasa de cumplimentación por campo tras la importación, comparada con el número de valores rellenos del origen. Esta es la comprobación que detecta el vaciado silencioso de desplegables a escala: un campo que debería tener 3432 valores y muestra 2853 ha perdido 579 registros, y nada más se lo dirá.
- Unicidad de la clave de deduplicación verificada de nuevo en el destino, no supuesta a partir del origen.
- Asignación de etiquetas comprobada por muestreo en contactos que deberían llevar varias, ya que las etiquetas fallan en silencio si el vocabulario estaba incompleto.
Qué indicaría una regresión: un campo desplegable cuyo número de valores rellenos baja tras una reimportación; registros duplicados que aparecen en una segunda ejecución, lo que significa que la clave de deduplicación no está coincidiendo; URL en el destino que difieren del origen; o un indicador de consentimiento con una distribución distinta de la de la exportación.
Preguntas frecuentes
¿Por qué las importaciones al CRM pierden datos sin avisar en lugar de fallar?
Porque los fallos más habituales afectan a los valores y no a la estructura. Un campo desplegable se importa por el identificador de la opción, de modo que un valor de origen sin una opción coincidente en el destino no provoca ningún error: el campo simplemente queda vacío. En una migración, un recuento sobre la exportación antes de importar encontró 579 de 3432 registros, aproximadamente un 17 por ciento, que habrían quedado vacíos en un único campo de estado. Entre las causas había opciones que nunca se crearon, variantes de mayúsculas y minúsculas de opciones existentes, valores basura y hojas de cálculo que convertían sin avisar valores de rango como 2-4 en fechas.
¿Se puede diseñar el esquema del CRM de destino a partir de una exportación de muestra?
No, y hacerlo es el error más caro posible. En una migración, una muestra de 71 filas mostraba 59 columnas completamente vacías; la exportación completa de 3432 filas solo tenía 26 realmente vacías. Un campo aparecía relleno al cero por ciento en la muestra y al cien por cien en el archivo completo. Las direcciones de correo electrónico eran únicas en la muestra y contenían duplicados en la exportación completa, lo que invalida el correo electrónico como clave de deduplicación. Haga siempre el inventario de la exportación completa antes de diseñar los campos.
¿Qué campos del CRM no se pueden rellenar mediante una importación?
Los campos gestionados por el sistema. En Coevera, la marca de tiempo de creación del registro la fija la plataforma y no se puede suministrar, así que conservar la fecha de origen del sistema de procedencia requiere un campo de fecha personalizado aparte. La fecha del último contacto también la gestiona el CRM y no se puede importar, lo que significa que una columna de origen totalmente rellena no tiene adónde ir a menos que añada un campo personalizado para ella. Identifíquelos antes de mapear, porque cada uno es o un nuevo campo personalizado o una columna que usted decide descartar.
¿Qué se debe usar como clave de deduplicación al importar contactos?
El identificador de registro propio del sistema de origen, importado en un campo personalizado dedicado. Está garantizado que es único en el origen, se mantiene estable entre reexportaciones y hace que una importación repetida sea idempotente en lugar de duplicarlo todo. La dirección de correo electrónico es la opción intuitiva y no es segura: las bases de datos de contactos reales contienen direcciones de correo duplicadas, y una muestra puede no revelarlas. La asignación del propietario también debe mapearse por el correo electrónico del usuario de origen y no por su nombre visible, porque la relación entre nombre y correo no es de uno a uno de forma fiable.