Publicado: 1 de agosto de 2026

Migrar CRM sin romper flujos

Migrar CRM sin romper flujos | Logixb2b

Fetch lote origen → mapear campos → upsert destino → inventario Sheets + Slack.

JSON migración CRM: inventariar campos, upsert leads HubSpot/Pipedrive y no perder automatizaciones n8n en España y la UE. Logixb2b · Europe/Madrid · B2B.

Descarga el workflow

JSON listo para importar en n8n (Import from File). Sustituye solo REEMPLAZA_* y credenciales.

Qué resuelve esta migración CRM

Cambiar de CRM (Pipedrive a HubSpot, HubSpot a Pipedrive u otro par) suele romper más que los contactos: webhooks de formulario, alertas de oportunidad caliente, scoring, asignación por territorio y reportes a Sheets siguen apuntando a IDs y propiedades del CRM viejo. Este workflow de n8n mueve un lote de fichas con mapeo editable, upsert por email y deja un inventario en Google Sheets de qué registros hay que reenganchar.

No es un conector mágico todo el historial de forever. Es una plantilla de producción para lotes controlados: Config → fetch origen → mapear → IF email → upsert destino → Append inventario → Slack resumen, con zona Europe/Madrid. Sirve para equipos B2B en España y la UE que quieren probar con 5–25 contactos antes de vaciar el origen.

La guía larga de inventario de automatismos, field map y RGPD está en /migrar-datos-crm-sin-perder-automatizaciones.

Qué necesitas antes de importar el JSON

Una instancia n8n (local solo para prueba, o ya en Cloud/VPS), acceso API al CRM origen y al CRM destino (Private App HubSpot o api_token Pipedrive), y opcionalmente una hoja de Google Sheets con pestaña Inventario (columnas: fecha, migrationLabel, sourceId, email, destProvider, estado, nota_reenganche) más un Incoming Webhook de Slack.

Define el fieldMapJson en Config: qué campo del origen cae en email, firstname, lastname, phone, company. Empieza con batchSize=5 y startOffset=0. Guarda tokens solo en credenciales de n8n; el JSON trae placeholders REEMPLAZA_* a propósito.

Haz backup export del CRM origen y lista los workflows n8n/Make/Zapier que tocan contactos o Leads antes de mover nada. Sin esa lista, el upsert puede funcionar y aun así dejar el comercial a ciegas.

Cómo está construido el workflow

El lienzo abre con sticky INSTRUCCIONES y Manual Trigger migración. Config migración CRM (Set) concentra providers, URLs, tokens placeholder, batchSize, offset, fieldMapJson, dedupeProperty, sheetsInventoryId, slackWebhookUrl y migrationLabel.

Fetch lote CRM origen hace GET HTTP al listado (plantilla Pipedrive persons). SplitOut parte el array. Code Mapear campos aplica el JSON de mapeo y normaliza email. IF email válido filtra basura. Upsert CRM destino es HTTP hacia HubSpot batch/contacts (plantilla; adapta si destProvider=pipedrive).

Append inventario Sheets escribe la traza; Slack resume el lote. El workflow llega inactive y con timezone Europe/Madrid. Actívalo solo cuando el lote de prueba cuadre en ambos CRMs.

Importar, conectar credenciales y probar el primer lote

En n8n: ⋯ → Import from File → assets/workflows/migrar-datos-crm-automatizaciones-n8n.json. Abre Config y rellena sourceProvider/destProvider. En Fetch y Upsert crea credenciales HTTP Header Auth / Query Auth reales y quita el token del query string si puedes.

Conecta Google Sheets OAuth si usas inventario. Ejecuta Manual Trigger. Revisa: contactos en destino sin duplicar el mismo email dos veces, filas en Sheets con estado ok/error, mensaje Slack con migrationLabel.

Si firstname o phone llegan vacíos, ajusta fieldMapJson a los nombres reales del API origen (org_name vs company, phone vs phone_numbers[0]). Repite el lote de 5 hasta que el mapeo sea estable; entonces sube batchSize y avanza startOffset.

Errores frecuentes en el primer lote

El fallo típico es un fieldMapJson que no coincide con el API origen: org_name frente a company, o phone en array. Revisa la respuesta cruda del Fetch antes de subir batchSize.

Otro error habitual es upsert sin dedupe por email: crea duplicados en el CRM destino y ensucia el inventario. Usa dedupeProperty=email y comprueba que el destino no tenga dos fichas con el mismo correo tras el lote de 5.

Si Slack o Sheets fallan, desactívalos temporalmente y valida solo Fetch → Map → Upsert. Cuando el destino cuadre, reactiva la traza. No copies tokens al JSON versionado: Credentials en n8n.

Subir n8n a producción 24/7 (VPS, Docker, Cloud)

Importar en localhost no basta: la migración por lotes y el reenganche de webhooks necesitan n8n encendido. Opciones: (1) n8n Cloud — creas cuenta, importas JSON, conectas credenciales y Active; menos ops, vigila límites de ejecuciones. (2) Self-hosted en VPS UE (Hetzner, OVH, IONOS o similar): Ubuntu LTS, Docker + Docker Compose, imagen n8n + Postgres, volúmenes persistentes, reverse proxy Caddy/Nginx con HTTPS, variables N8N_HOST, WEBHOOK_URL, GENERIC_TIMEZONE=Europe/Madrid, N8N_ENCRYPTION_KEY.

Pasos típicos VPS: crear droplet/VPS en región UE → SSH → instalar Docker → pegar compose con n8n+db → levantar stack → abrir 443 → crear usuario owner → Import from File → credenciales CRM/Sheets/Slack → prueba Manual → Active. Hostinguer u otros paneles con Docker también sirven si te dan contenedores y dominio propio.

Make.com / Zapier: mismo mapa (HTTP list → Iterator → CRM upsert → Sheets → Slack). Este JSON es el esqueleto n8n; no copies secretos al escenario Make. Tras migrar fichas, reengancha formularios y alertas a las nuevas propiedades/IDs del CRM destino.

Reenganche de automatismos, RGPD y cierre

Usa la columna nota_reenganche del inventario: formulario→CRM, alertas hot Lead, WhatsApp inbound, scoring, territorio, reporting. Cambia URLs de webhook y mapeos de propiedad en cada flujo. No desactives el CRM origen el mismo día del primer lote; deja una ventana de doble escritura corta si el riesgo es alto.

RGPD: minimiza campos migrados, evita notas clínicas o datos especiales innecesarios, documenta base jurídica y quién rota tokens. Borra exports locales cuando termines.

Cuando el origen esté vacío o congelado y los automatismos apunten al destino, archiva el workflow de migración o déjalo solo para deltas. Detalle operativo en /migrar-datos-crm-sin-perder-automatizaciones.

EU AI Act y RGPD: qué es y por qué tu empresa debe aplicarlo

El Reglamento (UE) 2024/1689 (EU AI Act) ya está en vigor. Si tu empresa usa n8n con nodos de IA (Gemini, OpenAI, Claude, etc.) en ventas o operaciones, actuáis como desplegadores (deployers): no hace falta ser el fabricante del modelo. Desde el 2 de febrero de 2025 el Artículo 4 exige alfabetización en IA del personal que opera estos sistemas; en agosto de 2026 se refuerza la supervisión (AESIA en España) y la trazabilidad.

En paralelo, el RGPD (AEPD) aplica porque el flujo trata datos de contacto B2B. Base jurídica, minimización y, si hay perfiles automatizados a escala, evaluación de impacto. AI Act y RGPD se acumulan: un fallo puede implicar ambas autoridades.

Este recurso ayuda en la práctica: placeholders sin secretos, Europe/Madrid, opción self-hosted en VPS UE (soberanía de datos), registro de ejecuciones en n8n (logs) y espacio para human-in-the-loop (aprobación antes de acciones sensibles). Detalle: /uso-responsable-de-ia-y-transparencia. Texto informativo, no asesoramiento legal.

Preguntas frecuentes

¿El JSON migra todo el historial de actividades y emails?

No. Migra el lote de contactos/leads con el mapeo definido. Actividades, notas pesadas y adjuntos requieren flujos aparte o herramientas del vendor. Empieza por la ficha comercial y el inventario de automatismos.

¿Puedo usarlo HubSpot → Pipedrive igual que Pipedrive → HubSpot?

Sí: cambia sourceProvider/destProvider y adapta las URLs HTTP de Fetch y Upsert. El Code de mapeo y el IF email se mantienen; el fieldMapJson debe reflejar los nombres del API origen.

¿Hace falta VPS si solo pruebo cinco contactos?

Para la prueba basta n8n local o Cloud. Para lotes reales y reenganche 24/7 necesitas instancia estable (Cloud o Docker en VPS UE).

¿Dónde dejo constancia de qué workflows hay que tocar después?

En la pestaña Inventario de Sheets (nota_reenganche) y en el checklist del artículo /migrar-datos-crm-sin-perder-automatizaciones.

¿Los tokens van dentro del JSON descargado?

No. Usa placeholders y credenciales de n8n. Si pegaste un token real, rótalo en el CRM y limpia el nodo antes de compartir el flujo.