1. Inicio
  2. Conectar Instagram con HubSpot

Cómo conectar Instagram con HubSpot sin duplicar contactos (con Make o n8n)

Para conectar Instagram con HubSpot sin duplicar contactos, HookReply manda cada contacto por webhook a Make o n8n, y de ahí a HubSpot, cuando el seguidor ya ha escrito su email: HubSpot reconoce a los contactos por ese dato y, sin él, no sabe que dos fichas son la misma persona. La otra vía es la herramienta social de HubSpot, que recibe los mensajes directos de Instagram solo con Marketing Hub Professional o Enterprise. Abajo tienes las propiedades que crear, el escenario de Make y el flujo de n8n campo a campo, y qué hacer con quien no deja email.

Actualizado el 18 de octubre de 2026Lectura: 13 minutos

¿Qué opciones hay para conectar Instagram con HubSpot?

HubSpot recibe de forma nativa los mensajes directos de Instagram en su herramienta social, y esa función está disponible con Marketing Hub Professional o Enterprise, según su página de ayuda sobre cómo revisar y contestar DMs de Instagram en HubSpot (actualizada el 29-09-2026). Sin ese plan, los contactos de Instagram tienen que llegar por una integración externa: una app de terceros o un webhook que pase por Make o n8n, que es lo que explica esta guía. Las páginas citadas aquí no detallan qué límites tiene cada plan de HubSpot para conectar apps externas, así que compruébalo en tu cuenta antes de montar el escenario.

AspectoHerramienta social de HubSpotAviso de HookReply + Make o n8n
Suscripción de HubSpotMarketing Hub Professional o EnterpriseUna cuenta de usuario de HubSpot CRM; la app de Make pide además que un Super Admin la apruebe
Qué entra en HubSpotLas conversaciones, para leerlas y contestarlas en Marketing › SocialUna ficha de contacto con email, @, identificador de Instagram y etiquetas
Ficha en el CRMAsocias tú el perfil de Instagram a un contacto, desde cada mensajeSe crea o se actualiza sola cuando el seguidor llega a un paso concreto
Quién contestaTú, con recomendaciones de respuesta generadas por HubSpotLa automatización de HookReply
HistorialAl conectar la cuenta, solo los DMs de los últimos 7 días; de cada hilo, los 200 mensajes más recientesNo guarda mensajes en HubSpot, solo datos del contacto
App de HubSpot para teléfonoLos DMs de Instagram no aparecen; solo en la webNo interviene: todo ocurre entre servidores

Si ya pagas Marketing Hub Professional y lo que quieres es contestar los DMs sin salir de HubSpot, la herramienta social te basta. Lo que no te da es una ficha rellena por cada seguidor que deja sus datos en un mensaje automático: en la ayuda de HubSpot, unir el perfil de Instagram con un contacto es una acción manual («Assign CRM contact»). Para eso está la otra vía. Y si solo necesitas pasar los contactos de vez en cuando, tampoco hace falta un escenario: exporta el CSV desde Contactos en HookReply e impórtalo en HubSpot; en el apartado de límites tienes qué columna usar como clave para no duplicar.

¿Por qué se duplican los contactos de Instagram en HubSpot?

Los contactos de Instagram se duplican en HubSpot cuando llegan sin email, porque el email es el dato con el que HubSpot sabe que dos registros son la misma persona. Su página sobre la deduplicación de registros en HubSpot (actualizada el 02-10-2026) explica que, cuando entra un contacto nuevo, busca el mismo valor en la propiedad Email: si llega por una importación o un formulario y ya existe una ficha con ese email, actualiza esa ficha en lugar de crear otra.

La guía de la API de contactos de HubSpot (modificada el 03-09-2026) añade el otro lado del problema: para crear un contacto basta con uno de estos tres datos, el email, el nombre (firstname) o los apellidos (lastname), aunque recomienda incluir siempre el email, que es el identificador único principal de los contactos y evita duplicados. Un seguidor que llega solo con su nombre de perfil entra sin problema; la segunda vez que pasa por tu flujo, HubSpot no tiene con qué compararlo, y si tu escenario lo crea de nuevo tendrás dos fichas de la misma persona.

Hay dos formas de evitarlo, y conviene elegir una antes de montar nada:

¿Qué propiedades hay que crear en HubSpot antes de conectar Instagram?

Antes de conectar Instagram hay que crear en HubSpot tres propiedades de contacto propias: el identificador de Instagram, el @ y las etiquetas. El email, el nombre y el teléfono ya existen. Créalas en la configuración de HubSpot, en Propiedades, con el objeto Contacto seleccionado, y anota el nombre interno de cada una, que es el que usarán Make y n8n; la etiqueta es solo lo que ves en la ficha.

Propiedad (nombre interno)Tipo de campoDato de HookReply
Identificador de Instagram (ig_id)Texto de una línea; con valores únicos solo si eliges la clave ig_idcontact.ig_id
Usuario de Instagram (usuario_instagram)Texto de una líneacontact.username, sin la arroba
Etiquetas de Instagram (etiquetas_instagram)Texto de una línea, con las etiquetas separadas por comascontact.tags
Email (email, ya existe)Propia de HubSpotcontact.fields.email
Nombre (firstname, ya existe)Propia de HubSpotcontact.fields.nombre si lo pediste; si no, contact.name o el @
Número de teléfono (phone, ya existe)Propia de HubSpotcontact.fields.telefono

La propiedad ig_id solo tiene que exigir valores únicos si eliges esa clave: al crearla, marca que HubSpot no acepte el mismo valor en dos contactos. Con la clave email no hace falta, porque el email ya es único.

Las etiquetas van a una propiedad de texto porque HookReply envía siempre la lista entera de etiquetas que tiene la persona en ese momento: cada aviso sustituye el valor anterior y la ficha queda igual que en HookReply, también cuando un paso le quita una etiqueta. Se unen con una coma y un espacio, como lead, newsletter-si. Una propiedad de opciones obligaría a mandar el nombre interno de cada opción, según la guía de la API de contactos, y a crear en HubSpot cada etiqueta nueva que inventes en HookReply.

¿En qué paso de HookReply va el aviso a HubSpot?

El aviso a HubSpot va en el mensaje que HookReply envía después de recibir el email, nunca en el mensaje que lo pregunta. En el código de HookReply, cada paso guarda los datos del contacto y lanza el aviso a otra app justo a continuación, en el momento en que sale su mensaje; la respuesta del seguidor llega más tarde y se guarda al saltar al paso siguiente. Con el aviso en la pregunta, el JSON llega con fields.email vacío, o con un email antiguo si esa persona ya te dio uno en otro flujo, y con la clave email no hay nada con qué deduplicar.

Mensaje privado · automatización «Pedir el email»
INFO
¡Genial! ¿A qué email te lo envío? ✉️
Paso 1: pide el dato y lo guarda como email. Sin aviso a otra app.
sofia.ramos@gmail.com
¡Gracias Sofía! Te escribo muy pronto 🙌
Paso 2: aquí va «Avisar a otra app» con la URL de Make o n8n

Cómo se añade «Avisar a otra app» a un paso, el límite de 5 segundos y el hecho de que el envío no lleva firma están en el apartado sobre en qué paso poner el webhook de la guía de Make, Zapier y n8n; el texto para pedir el email con permiso, en la de conseguir emails de seguidores de Instagram. Lo que cambia con HubSpot es que HookReply guarda el email tal como lo escribe el seguidor, con sus mayúsculas, y por eso la tabla de abajo lo pasa a minúsculas antes de mandarlo.

¿Cómo se monta el escenario de Instagram a HubSpot en Make?

En Make, el escenario tiene tres piezas: el módulo Custom webhook, que recibe el aviso de HookReply; un filtro que solo deja pasar a quien trae email, y el módulo HubSpot CRM › Create or Update a Contact. Son los nombres de la documentación de la app HubSpot CRM de Make, que avisa de un requisito previo: un Super Admin de tu cuenta de HubSpot tiene que aprobar la app de Make antes de que puedas crear la conexión.

  1. Webhooks › Custom webhook. Crea el webhook, copia su URL y pégala en el aviso del segundo paso. Después escribe la palabra clave desde otra cuenta de Instagram y completa el flujo, para que Make reciba un aviso real y conozca la forma de los datos.
  2. Filtro en la flecha que sale del webhook. Condición: contact.fields.email con el operador «Exists». Quien llega sin email no sigue por esta ruta; más abajo tienes qué hacer con él.
  3. HubSpot CRM › Create or Update a Contact. Crea la conexión con tu cuenta de HubSpot y rellena las propiedades con la columna de Make de la tabla siguiente. El email es el dato con el que HubSpot decide si actualiza una ficha existente.
  4. Repite la prueba con la misma cuenta. El contacto tiene que actualizarse, no aparecer dos veces. Si se duplica, mira en el historial del escenario si el email llegó relleno.
Propiedad de HubSpotEn MakeEn n8n
Emaillower(contact.fields.email){{ $json.body.contact.fields.email.toLowerCase() }}
Nombreifempty(contact.fields.nombre; ifempty(contact.name; contact.username)){{ $json.body.contact.fields.nombre || $json.body.contact.name || $json.body.contact.username }}
Número de teléfonocontact.fields.telefono{{ $json.body.contact.fields.telefono }}
ig_idcontact.ig_id{{ $json.body.contact.ig_id }}
usuario_instagramcontact.username{{ $json.body.contact.username }}
etiquetas_instagramjoin(contact.tags; ", "){{ $json.body.contact.tags.join(', ') }}

El nombre lleva dos alternativas porque el nombre de perfil de Instagram puede llegar vacío; si en algún flujo pediste «nombre» con «Pedir un dato», manda ese. HubSpot separa nombre y apellidos y el perfil llega entero, así que todo va a firstname. Lo que no conviene rellenar desde aquí es la etapa del ciclo de vida: la guía de la API de contactos indica que solo puede avanzar en el orden de etapas y que, para volver a una anterior, primero hay que vaciarla, de modo que un «lead» fijo no se aplicaría a quien ya es cliente.

¿Cómo se monta el flujo de Instagram a HubSpot en n8n?

En n8n el flujo es Webhook → IF → HubSpot, y la operación clave es Create or Update del recurso Contact, que la documentación del nodo HubSpot de n8n recoge como «Create/Update a contact». Esa página no dice si el email es obligatorio; en el código abierto del nodo, el campo Email de esa operación lo es y n8n lo usa para crear el contacto o actualizar el que ya tenga ese email. Encaja con la clave email y no sirve para contactos sin él.

  1. Nodo Webhook, con el método POST. Pega su URL de producción en el aviso del segundo paso y publica el flujo. El aviso llega dentro de body, por eso todas las expresiones empiezan por $json.body.
  2. Nodo IF, con una condición de texto «is not empty» sobre {{ $json.body.contact.fields.email }}. La salida true va a HubSpot; la false, a la ruta de quien no deja email o a ninguna parte.
  3. Nodo HubSpot, recurso Contact, operación Create or Update. En Email, la expresión de la tabla anterior; en «Contact Properties», First Name y Phone Number, y en «Custom Properties» tus tres propiedades, cada una con su nombre interno y su expresión.
  4. Prueba con la misma cuenta dos veces y comprueba en HubSpot que hay una sola ficha y que las etiquetas cambian si el segundo flujo añade alguna.

Si el nodo de HubSpot no tiene la operación que buscas, la propia documentación de n8n indica cómo llamar a la API con un nodo HTTP Request que reutiliza la credencial: Authentication › Predefined Credential Type y, como servicio, HubSpot. Es lo que se usa en la sección siguiente.

¿Cómo llevar a HubSpot a quien no deja su email?

Para llevar a HubSpot a quien no deja email, usa su ig_id como clave: HubSpot permite crear o actualizar contactos con una propiedad de valores únicos en lugar del email. La guía de la API de contactos lo hace con POST /crm/v3/objects/contacts/batch/upsert: en idProperty indicas qué propiedad es la clave y en id su valor; si el contacto existe, lo actualiza, y si no, lo crea. La misma guía avisa de que con el email como idProperty no se admiten las actualizaciones parciales; con una propiedad de identificador único propia, sí.

Es el caso de quien no pasa por ninguna pregunta de email, como en la plantilla de mensajes para cualificar clientes potenciales en Instagram: en el primer mensaje, «Hablar con alguien» lleva directo al último paso y marca al contacto como humano, y quien responde a las dos preguntas y elige «Más adelante» llega a otro paso con dos etiquetas, desde-cero o con-experiencia y mas-adelante. Con el aviso en cualquiera de esos pasos, la persona entra en HubSpot con su @ y sus etiquetas aunque no haya dejado email. El cuerpo de la llamada, para quien eligió «Mejorar lo que hago» y «Más adelante»:

{
  "inputs": [
    {
      "idProperty": "ig_id",
      "id": "6624519870031245",
      "properties": {
        "firstname": "sofia.ramos",
        "usuario_instagram": "sofia.ramos",
        "etiquetas_instagram": "con-experiencia, mas-adelante"
      }
    }
  ]
}

Si eliges esta clave, úsala para todos, también para quien trae email (añádelo dentro de properties): así, quien entra hoy sin email y te lo da la semana que viene sigue siendo la misma ficha. La contrapartida está en las fichas que ya tenías. Si esa persona estaba en HubSpot por un formulario, con su email y sin ig_id, la llamada trae un email que ya pertenece a otro contacto, y HubSpot no admite dos contactos con el mismo email. Revisa los errores en el historial de Make o de n8n y, en esos casos, añade el ig_id a mano en la ficha antigua.

¿Qué no hace esta conexión entre Instagram y HubSpot?

Esta conexión lleva datos de contacto de Instagram a HubSpot en un solo sentido y en el momento en que el seguidor pasa por un paso concreto; no sincroniza conversaciones ni permite escribir a Instagram desde HubSpot.

Planes de HookReply según su página de precios a 17 de octubre de 2026: el aviso a otra app está en todos, también en el Gratis, que admite 100 contactos y 3 automatizaciones. El Esencial cuesta 12 € al mes con IVA incluido, con 350 contactos y automatizaciones sin límite, y las respuestas con IA, como la del paso de la plantilla de cualificar, empiezan en el Pro, 25 € al mes con IVA incluido. Si vienes de ManyChat, su integración nativa con HubSpot va en el plan Pro, según los datos de su página de precios a 14 de septiembre de 2026; la comparativa con ManyChat repasa el resto de diferencias.

¿Qué hay que avisar al seguidor cuando sus datos pasan a HubSpot?

Cuando el email, el @ y las etiquetas de un seguidor pasan de HookReply a HubSpot, esos datos personales llegan a otra herramienta, y el seguidor tiene que saberlo antes de dárselos. El Reglamento general de protección de datos, en su texto publicado en el BOE, exige en el artículo 13.1 informar de quién trata los datos, de para qué y con qué base jurídica, y de los destinatarios o categorías de destinatarios. El artículo 6.1 enumera esas bases, como el consentimiento, y el artículo 28.3 pide un contrato con quien trate los datos por tu cuenta, algo a revisar con HubSpot y con Make o n8n.

En la práctica: dilo en el mensaje donde pides el email o en tu política de privacidad, y comprueba qué condiciones de tratamiento de datos tienes aceptadas con cada herramienta. Esto es una orientación general, no asesoramiento legal: si tienes dudas sobre tu caso, consúltalas con un profesional.

Preguntas frecuentes

¿Puedo conectar Instagram con HubSpot sin Marketing Hub Professional?

Sí, pero no con la herramienta social de HubSpot, que pide Marketing Hub Professional o Enterprise para los DMs de Instagram. Sin ese plan, los contactos llegan por una integración externa, como el aviso a otra app de HookReply con un escenario de Make o n8n que crea o actualiza la ficha en HubSpot. La app de Make pide una cuenta de usuario de HubSpot CRM y que un Super Admin la apruebe.

¿Por qué tengo contactos de Instagram repetidos en HubSpot?

Porque llegaron sin email o porque tu escenario los crea siempre en lugar de crear o actualizar. HubSpot deduplica los contactos por la propiedad Email, así que sin ella no sabe que dos fichas son la misma persona. Pon el aviso en el paso que va después de pedir el email, o usa el ig_id como clave en una propiedad de valores únicos.

¿Se ven en HubSpot los mensajes de Instagram con esta conexión?

No. El aviso de HookReply manda los datos del contacto (email, @, identificador de Instagram, nombre y etiquetas), no la conversación. Ver los DMs dentro de HubSpot exige su herramienta social, disponible con Marketing Hub Professional o Enterprise.

¿Necesito ManyChat para conectar Instagram con HubSpot?

No. ManyChat tiene integración nativa con HubSpot en su plan Pro, según su página de precios del 14-09-2026, pero cualquier herramienta que mande los datos del contacto a un webhook sirve. En HookReply, el aviso a otra app está en todos los planes, incluido el Gratis.

¿Cada cuánto se actualiza el contacto en HubSpot?

Cada vez que el seguidor llega al paso que tiene el aviso: HookReply lo envía en ese momento y tu escenario de Make o n8n lo pasa a HubSpot al recibirlo. No hay sincronización periódica ni en sentido contrario: si editas la ficha en HubSpot, HookReply no se entera.

¿Puedo enviar un DM de Instagram desde HubSpot con esta conexión?

No, va solo de Instagram a HubSpot. Desde HubSpot solo se contestan DMs con su herramienta social y Marketing Hub Professional o Enterprise; los mensajes automáticos los envía HookReply, siempre a quien te ha escrito o comentado antes.

Del DM de Instagram a una ficha de HubSpot, sin copiar a mano

Estamos abriendo plazas poco a poco. Déjanos tu email y te avisamos en cuanto puedas conectar tu Instagram.

Sigue leyendo