Módulo 6: CRM con HubSpot
Contactos
Descripción de la cápsula
El Contacto es el objeto central de HubSpot. Todo lo demás — empresas, deals, actividades — existe alrededor de personas. Un deal sin un contacto asociado es una venta sin comprador; una empresa sin contactos es un directorio vacío. Por eso empezamos aquí: dominar contactos es dominar el 50% del CRM.
Un contacto en HubSpot es, conceptualmente, lo que ya conoces: un registro en una base de datos relacional (Módulo 5). Tiene propiedades (nombre, email, teléfono, etiqueta de ciclo de vida...) y un ID estable. Si entendiste records de Airtable y páginas de Notion, los contactos de HubSpot te van a resultar familiares — con una diferencia importante que esta cápsula trata con cuidado: en HubSpot, el email tiene un rol especial, casi de clave primaria, y eso cambia cómo aplicas el patrón "buscar antes de actuar".
Esta cápsula cubre las operaciones core sobre contactos (crear, buscar, actualizar), las propiedades, y por qué los CRMs odian los duplicados más que cualquier otra herramienta que has visto.
Lo que vas a aprender
Al terminar esta cápsula serás capaz de:
- ✅ Crear contactos (leads) desde un workflow
- ✅ Buscar contactos por email y otras propiedades
- ✅ Actualizar contactos existentes
- ✅ Trabajar con las propiedades de un contacto
- ✅ Entender el rol especial del email como identificador
- ✅ Evitar duplicados — el pecado capital de un CRM
Las operaciones core sobre contactos
El nodo HubSpot, con Resource: Contact, ofrece:
| Operación | Qué hace |
|---|---|
| Create / Create or Update | Crear un contacto (o crear/actualizar) |
| Get | Traer un contacto por su ID |
| Get Many | Listar contactos |
| Search | Buscar contactos por propiedades |
| Update | Modificar un contacto existente |
| Delete | Eliminar un contacto |
Si hiciste los Módulos 1 y 5, el repertorio te suena: son las mismas operaciones de cualquier base de datos. Lo propio de HubSpot está en los detalles — y el primero es el email.
El rol especial del email
En HubSpot, el email funciona casi como una clave primaria del contacto. HubSpot lo usa para deduplicar: si intentas crear un contacto con un email que ya existe, HubSpot lo reconoce como la misma persona.
Esto es distinto de lo que viste antes. En Sheets, dos filas con el mismo email eran dos filas (tú tenías que evitar el duplicado). En HubSpot, el sistema sabe que el email identifica a la persona — y eso es a la vez una ayuda y algo que tienes que manejar bien.
Consecuencia práctica: la operación Create or Update (a veces llamada upsert) usa el email para decidir. Si el email no existe → crea el contacto. Si ya existe → actualiza ese contacto. Es el "buscar antes de actuar" del Módulo 1, pero HubSpot lo hace por ti usando el email como clave.
Crear un contacto
- Resource:
Contact - Operation:
Create(oCreate or Update) - Mapea las propiedades del contacto
Las propiedades más comunes de un contacto:
| Propiedad | Qué es |
|---|---|
email | El email — el identificador clave |
firstname / lastname | Nombre y apellido |
phone | Teléfono |
company | Nombre de la empresa (texto) |
lifecyclestage | La etapa del ciclo de vida: lead, marketingqualifiedlead, customer... |
hs_lead_status | El estado del lead |
Recomendación fuerte: usa
Create or Update, noCreatea secas. Si usasCreatey el contacto ya existe (mismo email), tienes un problema — o un error, o un intento de duplicado.Create or Updateresuelve esto: si existe, actualiza; si no, crea. Para el 90% de los workflows de captura de leads, es la operación correcta.
Buscar contactos
- Operation:
Search - Defines filtros sobre propiedades
El caso más común: buscar por email.
Propiedad: email
Operador: igual a
Valor: {{ $json.email }}
También puedes buscar por otras propiedades (estado del lead, ciclo de vida, fecha de creación) y combinar filtros. HubSpot Search es expresivo — soporta varios operadores (igual, contiene, mayor que, etc.).
Como en todos los módulos: mira el output real. Un contacto leído llega con su
idy sus propiedades. Las propiedades vienen dentro de una estructura — confírmala ejecutando el nodo, no la adivines.
Actualizar un contacto
- Operation:
Update - Contact ID:
{{ $json.id }}— el contacto a modificar - Mapea solo las propiedades que cambian
El Update quirúrgico de siempre: toca solo lo que mapeas. Necesita el Contact ID — obtenlo de un Search, de un Create previo, o de donde lo guardaste.
Detalle de HubSpot: muchas operaciones aceptan identificar el contacto por ID o por email. Como el email es casi una clave, a veces puedes actualizar "el contacto con este email" directamente. Pero el ID sigue siendo la forma más inequívoca — un email podría, en teoría, escribirse mal; el ID no.
Por qué los CRMs odian los duplicados
Esta es la idea que tienes que llevarte de la cápsula.
Un duplicado en una hoja de cálculo es molesto. Un duplicado en un CRM es un problema de negocio real: dos vendedores contactan a la misma persona sin saberlo, el historial de la relación se parte en dos registros, los reportes de ventas mienten, el cliente recibe comunicación contradictoria.
Por eso un CRM se diseña para evitar duplicados — y por eso HubSpot usa el email como clave. Tu trabajo al automatizar:
- Usa
Create or Updateen vez deCreatepara captura de leads — deja que HubSpot deduplique por email - Si el flujo es más complejo, aplica el patrón explícito: Search por email → IF → Create o Update (igual que el Módulo 1, cuando "existe / no existe" dispara lógica distinta)
- Normaliza el email antes de usarlo como clave: minúsculas, sin espacios —
ANA@correo.comyana@correo.comdeberían tratarse como la misma persona, pero un email mal normalizado puede romper la deduplicación
El email limpio y el Create or Update son tus dos defensas principales contra el caos de los duplicados.
Las propiedades: lo que define a un contacto
Las propiedades de un contacto son sus "campos" — pero HubSpot trae muchas predefinidas (decenas), y se pueden crear personalizadas. Para automatizar bien:
- No todas las propiedades importan para tu workflow. Identifica las pocas que tu caso usa (email, nombre, estado del lead, una o dos personalizadas) y trabaja con esas.
- Las propiedades tienen tipos — como en Airtable. Una propiedad de tipo "desplegable" (dropdown) solo acepta sus opciones definidas; una de fecha espera una fecha. Respétalos en tu mapeo.
lifecyclestagees especial: marca en qué punto del embudo está el contacto (lead → MQL → SQL → oportunidad → cliente). Muchos workflows de ventas lo actualizan a medida que el contacto avanza.
No intentes "dominar todas las propiedades de HubSpot" — son demasiadas. Domina las que tu workflow toca, y consulta la lista de propiedades de tu cuenta cuando necesites una nueva.
Trampas comunes
Trampa 1: Usar Create en vez de Create or Update para leads
Qué pasa: Capturas un lead con Create, ese email ya existía → error o intento de duplicado.
Cómo evitar: Para captura de leads, Create or Update casi siempre es la operación correcta — HubSpot deduplica por email.
Trampa 2: No normalizar el email
Qué pasa: ANA@correo.com y ana@correo.com se tratan como personas distintas porque el email llegó sin normalizar. Duplicado.
Cómo evitar: Normaliza el email (minúsculas, sin espacios) antes de usarlo — el diseño defensivo del Módulo 1.
Trampa 3: Mandar a una propiedad de tipo opción un valor inválido
Qué pasa: Pones lifecyclestage = "cliente potencial" pero el valor interno que HubSpot espera es lead. La propiedad lo rechaza o lo ignora.
Cómo evitar: Las propiedades tipo desplegable tienen valores internos específicos. Verifica cuál espera HubSpot (a veces difiere de la etiqueta visible) y mándalo exacto.
Trampa 4: Intentar trabajar con "todas" las propiedades
Qué pasa: Te abruma la cantidad de propiedades de HubSpot y no sabes por dónde empezar.
Cómo evitar: Tu workflow usa unas pocas propiedades. Identifícalas, trabaja con esas, ignora el resto.
Trampa 5: Apuntar a un contacto por nombre
Qué pasa: Intentas actualizar "el contacto Ana López" — pero puede haber varias, o el nombre cambió.
Cómo evitar: Apunta por Contact ID (lo más inequívoco) o por email (la clave de HubSpot). Nunca por nombre.
Ejercicio: el ciclo de un contacto
Objetivo: practicar crear, buscar y actualizar contactos sin generar duplicados.
Tu tarea
- Create or Update: Manual Trigger → Set (email, firstname, lastname) → HubSpot (Contact, Create or Update). Normaliza el email en el Set.
- Ejecútalo dos veces con el mismo email pero distinto
lastnamela segunda vez. Verifica en HubSpot que hay un solo contacto, con el apellido actualizado — no dos. - Buscar: Manual Trigger → HubSpot (Contact, Search por email). Confirma que encuentras el contacto y observa su
idy propiedades en el output. - Actualizar por ID: encadena un HubSpot (Contact, Update) que use el
iddel search para cambiarlifecyclestagealead.
Ver pistas
- En el 1, el Set normaliza:
email = {{ $json.email.toLowerCase().trim() }} - En el 2, la prueba clave del módulo:
Create or Updatecon el mismo email no duplica — actualiza - En el 3, mira cómo llegan las propiedades en el output del Search antes de construir el siguiente nodo
- En el 4,
Contact ID = {{ $json.id }}del resultado del Search
Resumen y siguiente paso
- El Contacto es el objeto central de HubSpot — todo (empresas, deals, actividades) gira alrededor de personas
- Un contacto es un registro relacional con propiedades y un ID estable — familiar tras el Módulo 5
- El email tiene rol de clave: HubSpot deduplica por email — distinto de Sheets, donde tú evitabas el duplicado
- Usa
Create or Update(noCreate) para captura de leads — HubSpot deduplica por email automáticamente - Los CRMs odian los duplicados porque son un problema de negocio real — tus defensas:
Create or Update+ email normalizado - Trabaja con las pocas propiedades que tu workflow usa; respeta sus tipos (los desplegables tienen valores internos específicos)
- 5 trampas:
Createen vez deCreate or Update, no normalizar el email, valor de opción inválido, querer dominar todas las propiedades, apuntar por nombre
Antes de avanzar deberías poder:
- Crear contactos con
Create or Updatesin duplicar - Buscar y actualizar contactos
- Explicar el rol especial del email en HubSpot
Lo que sigue (cápsula 04):
Un contacto es una persona; pero una venta es una oportunidad. La cápsula 04 cubre los deals (negocios) y los pipelines — cómo se modela una venta en curso y cómo se mueve por sus etapas. Es donde el CRM deja de ser un directorio y se vuelve una máquina de ventas.
Recursos adicionales
- n8n HubSpot node Docs - Operaciones de Contact.
- HubSpot: propiedades de contacto - Las propiedades predefinidas.
- HubSpot: deduplicación - Cómo HubSpot evita duplicados.
Creado: Mayo 14, 2026 Versión: 1.0