1. Inicio
  2. Conectar Instagram con Brevo

Cómo conectar Instagram con Brevo: del DM a tu lista, con doble opt-in

Para conectar Instagram con Brevo y que el email que alguien te deja por mensaje directo acabe en una lista, hacen falta tres piezas en cadena: HookReply pide el email por DM y avisa por webhook, un escenario de Make o n8n recibe el aviso y llama a la API de Brevo con tu clave, y Brevo crea el contacto en la lista, con doble opt-in si lo quieres. Brevo, por su cuenta, solo conecta Instagram con su bandeja Conversaciones y, según su ayuda, en esos mensajes directos no están disponibles los escenarios de chatbot ni los formularios de contacto, así que el paso de pedir el email lo tiene que hacer otra herramienta. Aquí tienes el flujo, las dos llamadas a la API (alta directa y con doble confirmación), cómo evitar que un email raro altere esa llamada, los fallos típicos y lo que pide la ley en España.

Actualizado el 18 de octubre de 2026Lectura: 19 minutos

Una aclaración

Esta página explica una integración técnica y cita la norma española que afecta a la publicidad por email, pero no sustituye a un asesor. Si tus contactos son menores, compartes datos de salud o vendes sobre todo fuera de España, revisa tu caso con un profesional antes de enviar campañas.

¿Brevo se conecta con Instagram por sí solo?

Brevo se conecta con Instagram a través de Conversaciones, la bandeja donde recibes y contestas los mensajes directos de tu cuenta profesional, pero en esos mensajes directos no están disponibles los chats y activadores dirigidos, los escenarios de chatbot ni los formularios de contacto. Lo dice la propia ayuda de Brevo sobre responder a los mensajes directos de Instagram con Conversaciones (consultada el 18-10-2026). Con esas herramientas de Brevo no puedes montar el paso de pedir un email dentro de un DM.

La misma página añade que la cuenta profesional de Instagram tiene que estar vinculada a una página de Facebook para conectarla a Conversaciones. Esta guía no toca esa conexión: trata de lo que viene después, cuando alguien deja su email y quieres que llegue a una lista.

Lo que necesitasBrevo ConversacionesHookReply con Make o n8n
Leer y contestar DMs a manoSí, con respuestas guardadas, agentes y gruposSí, en el Inbox de HookReply
Escenarios de chatbot en los mensajes directosNo disponibles en Instagram DirectSí: cada automatización es una secuencia de mensajes con botones
Formularios de contacto en los mensajes directosNo disponibles en Instagram DirectSí, con «Pedir un dato» (email, teléfono…), que comprueba que el email tiene forma de email
Crear el contacto en una lista de BrevoSí, con la API de Brevo, que es lo que llama Make o n8nNo directamente: HookReply avisa por webhook y Make o n8n hacen la llamada

¿Qué hace falta para que el email de un DM llegue a una lista de Brevo?

Para que el email de un DM llegue a una lista de Brevo hacen falta tres piezas en cadena, porque ninguna cubre el recorrido entero: HookReply conversa y avisa, Make o n8n traducen el aviso y Brevo guarda el contacto.

  1. HookReply, la conversación. Responde al comentario o al mensaje, ofrece la suscripción, pide el email, revisa el formato, marca al contacto con una etiqueta y manda sus datos a la URL que le indiques (un webhook).
  2. Make o n8n, el traductor. HookReply envía siempre el mismo JSON, sin cabeceras de autenticación. La API de Brevo, en cambio, exige la clave en una cabecera api-key y un cuerpo con sus propios nombres de campo. Por eso no sirve pegar la dirección de la API de Brevo en HookReply: alguien tiene que reordenar los datos y añadir la clave.
  3. Brevo, la lista. Crea el contacto o actualiza el que ya existía, lo mete en la lista que elijas y, si usas la doble confirmación, le envía el email para confirmar.

Antes de montar nada, dos casos en los que no te compensa. Si te escriben pocas personas a la semana, exporta los contactos a CSV desde HookReply y súbelos a Brevo cada cierto tiempo: el método, con el texto de consentimiento, está en la guía para conseguir emails de seguidores de Instagram. Y si eres desarrollador y prefieres no usar HookReply, puedes recibir los mensajes con tu propia app de Meta, como cuenta la guía de automatizar Instagram con Make; a cambio tendrás que pasar la revisión de Meta y programar tú las reglas de envío. La integración de esta página tiene sentido cuando quieres que el email de bienvenida de Brevo salga a los pocos minutos del DM, sin exportar nada.

¿Cómo se monta en HookReply el flujo que pide el email?

HookReply pide el email con una automatización de tres mensajes: el primero ofrece lo que das y un botón para suscribirse, el segundo pregunta la dirección y explica qué recibirá, y el tercero confirma y lleva el aviso a otra app. Paso a paso, en el editor:

  1. Disparador. Un comentario con tu palabra clave en una publicación o un reel, o esa palabra por mensaje directo. Las reglas del «comenta y te lo mando» están en la guía de responder comentarios de Instagram en automático.
  2. Mensaje 1, con dos botones. Uno que abre un enlace (lo que prometiste en el post) y otro, «Avisarme por email», puesto en «responde con un mensaje». Pulsar ese botón es el primer «sí» de la persona.
  3. Mensaje 2, la pregunta. En «+ Añadir…», elige «Pedir un dato (email, teléfono…)» y deja el dato en email. En el texto, di qué vas a enviar, cada cuánto, cómo darse de baja y dónde está tu política de privacidad. Si la respuesta no tiene forma de email, HookReply contesta «Ese email no parece válido, ¿lo revisas? 🙏» y sigue esperando.
  4. Mensaje 3, la confirmación. Debajo del mensaje 2, en «Cuando responda: + Mensaje», crea el tercero. En su «+ Añadir…» elige «Marcar como…» con la etiqueta newsletter y «Avisar a otra app (Make, Zapier)» con la URL de tu webhook. Puedes repetirle la dirección con {email} para que vea si se equivocó.

Si la automatización se abre en el modo sencillo, entra antes en «Más opciones (botones, esperas, etiquetas…)». Así se ve la conversación desde el lado del seguidor, con una cuenta de ejemplo:

Mensaje privado, después de comentar TALLER
¡Hola, Andrea! 🏺 Aquí tienes las fechas de los talleres de cerámica de noviembre. Si quieres, te aviso por email cuando abra plazas nuevas.Ver calendarioAvisarme por email
Avisarme por email
Perfecto. ¿A qué email te escribo? Mando uno al mes con los talleres nuevos y, a veces, un descuento para alumnos. Te das de baja desde cualquier email. Privacidad: tuweb.com/privacidad
andrea.ruiz@outlook.com
¡Gracias! En unos minutos te llega un email a andrea.ruiz@outlook.com: pulsa el botón de dentro para confirmar la suscripción 📩

El webhook va en el tercer mensaje por una razón práctica: HookReply lo llama justo al enviar el mensaje de su paso, y cuando sale la pregunta del segundo la persona todavía no ha escrito nada. En el tercero, el envío ya lleva el email en contact.fields.email y la etiqueta en contact.tags. La forma completa de ese JSON y cómo sacar la URL en cada herramienta los tienes en la guía para conectar Instagram con Make, Zapier o n8n.

Si lo que regalas se entrega por email (los días de un reto, una guía en PDF) y la newsletter va aparte, el orden cambia: primero el email para el regalo y después una pregunta con dos botones, como en la plantilla de reto gratuito en Instagram. Pon entonces un aviso a otra app en el mensaje que confirma la inscripción y otro en el del sí a las novedades, y que Make o n8n lleve cada aviso a su lista: una que solo recibe los envíos del reto y otra para las novedades.

¿Qué tienes que preparar en Brevo antes de empezar?

En Brevo necesitas tres cosas antes de tocar Make o n8n: la lista donde entrarán los contactos, un atributo para guardar su usuario de Instagram y una clave API para que el escenario pueda escribir en tu cuenta.

Si vas a usar la doble confirmación, prepara también la plantilla del email de confirmación; está en su sección, más abajo.

¿Por qué el cuerpo de la llamada no se escribe a mano con el email dentro?

El cuerpo no debe escribirse a mano con el email pegado dentro porque HookReply solo comprueba que el texto no tenga espacios y lleve una arroba seguida de un punto, y esa forma admite comillas, comas y llaves: lo que escriba la persona puede romper el JSON o añadirle campos que tú no pusiste.

Un ejemplo con esa misma comprobación: la respuesta a@b.co","emailBlacklisted":false,"x":"@y.co la da por buena, y en un cuerpo escrito como {"email": "[la respuesta]", …} la llamada a Brevo sale con una clave más, emailBlacklisted, que según la referencia de la API es el campo que bloquea al contacto para emails. Una respuesta con una comilla suelta, como x"y@z.com, rompe el JSON y el alta falla. Lo probamos con estos casos y con un email normal: en el cuerpo a mano cambia la llamada; serializado, no.

Tres reglas lo evitan, y las usan los pasos de Make y n8n de más abajo:

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

El patrón rechaza espacios, comillas, comas, llaves y barras. También rechaza direcciones con letras fuera del alfabeto inglés (una ñ o una tilde en la parte local): si quieres admitirlas, relaja el patrón, pero deja fuera esos signos.

¿Cómo se crea el contacto en Brevo desde Make?

En Make, el escenario tiene dos módulos y un filtro: Webhooks › Custom webhook, que recibe el aviso de HookReply, un filtro que solo deja pasar emails con forma válida y HTTP › Make a request, que llama a la API de Brevo con la clave en la cabecera y crea el contacto con su lista y su atributo.

  1. Custom webhook. Créalo, copia su dirección y pégala en el tercer mensaje de la automatización, en «Avisar a otra app». Después haz una prueba real desde otra cuenta de Instagram para que Make aprenda qué campos llegan.
  2. El filtro. Haz clic en la línea que une los dos módulos y pon como condición que contact.fields.email coincida con el patrón de la sección anterior, con el operador de expresión regular que ofrezca tu panel (los nombres de los operadores los define Make; están en su ayuda sobre filtros). El filtro también frena los avisos sin email, como los de un webhook puesto en el paso equivocado.
  3. HTTP › Make a request. URL https://api.brevo.com/v3/contacts, método POST, una cabecera llamada api-key con tu clave, «Body content type» en application/JSON y «Body input method» en Data structure.
  4. La estructura de datos. En «Data structure» pulsa «Add» y usa el generador: Make crea la estructura a partir de un ejemplo que pegas. Pega este:
{
  "email": "andrea.ruiz@outlook.com",
  "attributes": { "INSTAGRAM": "andrea.ceramica" },
  "listIds": [7],
  "updateEnabled": true
}

Con la estructura guardada, el módulo muestra un campo por clave: mapea email con contact.fields.email y INSTAGRAM con contact.username desde el webhook, y pon a mano el ID de tu lista en listIds (el 7 es un ejemplo) y true en updateEnabled. Ejecuta el escenario una vez y mira en el historial que el cuerpo enviado se parece al ejemplo y que Brevo responde 201.

Cada clave es un parámetro de la referencia de la API de Brevo para crear un contacto: listIds son las listas donde entra, attributes lleva los atributos en mayúsculas y updateEnabled en true actualiza el contacto en la misma petición si ese email ya estaba en tu cuenta. Cuando Brevo crea el contacto responde con el código 201 y su id.

Make también tiene una app de Brevo con el módulo «Create a Contact»; la lista de acciones que da la ayuda de Brevo «Usar Make para integrar una aplicación con Brevo» no incluye el alta con doble opt-in, pero sí «Make an API call», una llamada autorizada a medida. Esta guía usa el módulo HTTP porque sirve igual para las dos llamadas, la directa y la de doble confirmación.

¿Y si usas n8n en vez de Make?

En n8n, el flujo es un nodo Webhook, un nodo If y un nodo HTTP Request, y no el nodo de Brevo: su operación Contact › Create or Update envía el email y los atributos (y activa updateEnabled), pero no tiene ningún campo para elegir la lista, según el código del nodo de Brevo en el repositorio de n8n (archivo ContactDescription.ts, revisado el 18-10-2026). Con HTTP Request controlas el cuerpo entero.

  1. Nodo Webhook, método POST. Su Production URL va en «Avisar a otra app» y solo funciona con el flujo publicado; la de prueba, solo mientras escuchas desde el editor.
  2. Nodo If. Condición de tipo String, «matches regex», sobre {{ $json.body.contact.fields.email }} y con el patrón de la sección anterior; sigue por la rama «true». El nodo Webhook deja lo que manda HookReply dentro de body, de ahí el prefijo $json.body.
  3. Nodo HTTP Request. Method POST, URL https://api.brevo.com/v3/contacts. En «Authentication», «Generic Credential Type» y, dentro, «Header Auth», con el nombre api-key y tu clave como valor; así la clave queda guardada como credencial y no a la vista en el nodo.
  4. El cuerpo. Activa «Send Body», elige JSON en «Body Content Type» y «Using JSON» en «Specify Body». Con el campo en modo expresión, escribe:
{{ JSON.stringify({
  email: $json.body.contact.fields.email,
  attributes: { INSTAGRAM: $json.body.contact.username },
  listIds: [7],
  updateEnabled: true
}) }}

JSON.stringify escapa las comillas del email, así que lo que escriba la persona no puede añadir claves ni cambiar la lista; el nodo recibe un texto y lo interpreta como JSON. Pon el ID de tu lista en lugar del 7. Si quieres que n8n también recoja la conversación desde Instagram sin HookReply, el montaje con tu propia app está en la guía de automatizar Instagram con n8n.

¿Cómo se añade el doble opt-in a la lista de Brevo?

El doble opt-in se añade cambiando de llamada: en lugar de crear el contacto, el escenario llama a POST https://api.brevo.com/v3/contacts/doubleOptinConfirmation, y Brevo envía a esa dirección un email de confirmación hecho con una plantilla tuya. Es lo que hace el mensaje 3 del ejemplo cuando dice «pulsa el botón de dentro». Los parámetros, según la referencia de la API de Brevo para el alta con doble opt-in:

Parámetro¿Obligatorio?Qué pones
emailSíEl email del DM: contact.fields.email
includeListIdsSíLa lista o listas donde debe quedar, por ejemplo [7]
templateIdSíEl ID de tu plantilla de confirmación doble
redirectionUrlSíLa página a la que llega quien pulsa el enlace de confirmación, por ejemplo tu página de gracias
attributesNoLos mismos atributos que antes: {"INSTAGRAM": …}

La cabecera es la misma api-key y la respuesta correcta es un 201. El nodo de Brevo de n8n no tiene esta operación, así que en n8n y en Make va en el mismo módulo HTTP que la llamada anterior: cambian la URL y el cuerpo, y valen las mismas tres reglas de serializar, filtrar y no mandar campos de más. En Make, el ejemplo para el generador de la estructura es este:

{
  "email": "andrea.ruiz@outlook.com",
  "attributes": { "INSTAGRAM": "andrea.ceramica" },
  "includeListIds": [7],
  "templateId": 12,
  "redirectionUrl": "https://tuweb.com/gracias"
}

Y en n8n, el cuerpo en modo expresión:

{{ JSON.stringify({
  email: $json.body.contact.fields.email,
  attributes: { INSTAGRAM: $json.body.contact.username },
  includeListIds: [7],
  templateId: 12,
  redirectionUrl: "https://tuweb.com/gracias"
}) }}

La plantilla se crea en Brevo como un email más (Marketing › Templates). La ayuda de Brevo sobre plantillas de confirmación doble (escrita para formularios creados en Brevo) pide que no lleve publicidad, que el botón use el tipo de enlace «Double opt-in link» y que incluya el texto de consentimiento; la referencia de la API permite además insertar la dirección de confirmación con la etiqueta {{ params.DOIurl }}. Pon en ese email el mismo texto que la persona leyó en el DM («un email al mes con los talleres nuevos y, a veces, un descuento»): así el correo de confirmación recoge a qué dijo que sí.

Lo que ganas con el paso extra: una dirección mal escrita (andrea.ruiz@outlok.com) nunca recibe el correo ni lo confirma, y si alguien escribe el email de otra persona, esa otra persona no queda suscrita sin pulsar nada. HookReply solo comprueba que el texto parece un email; la confirmación comprueba que el buzón existe y que su dueño quiere tus correos. Según la ayuda de Brevo sobre la confirmación doble, cada paso del proceso queda registrado como un evento en Brevo; la misma ayuda aclara que el RGPD no exige la confirmación doble, aunque sirve como prueba de consentimiento.

Un límite: la referencia de la API no explica qué pasa con la llamada de doble opt-in si ese email ya existe en tu cuenta o estaba dado de baja, y esta guía no lo ha probado. Antes de abrir la automatización, prueba con un email tuyo que ya esté en Brevo y mira qué le ocurre.

Hay una vía alternativa que describe la propia Brevo en «Configurar un proceso de confirmación doble en un formulario de suscripción creado fuera de Brevo»: Make o n8n dan de alta al contacto con la llamada directa de arriba en una lista temporal, una automatización de Brevo con el disparador «Contacts - Contact added to list» le manda el email de confirmación, espera el clic y lo pasa a la lista final; según esa ayuda, quien no confirma en el plazo que elijas se añade a una lista bloqueada. Tiene más piezas dentro de Brevo, pero la confirmación la gestiona Brevo.

¿Qué pide la ley para escribir a esos contactos?

En España, la LSSI prohíbe enviar por email comunicaciones publicitarias o promocionales que no hayan sido «solicitadas o expresamente autorizadas» por sus destinatarios (Ley 34/2002, artículo 21), así que a tu lista de Brevo solo debería entrar quien ha dicho que sí a tus emails, no quien solo te pidió un enlace.

Si tu negocio está en otro país, rige su propia norma sobre comunicaciones comerciales; la mecánica del permiso explícito y la baja en cada envío te servirá en casi cualquier caso, pero compruébalo.

¿Qué puede fallar y qué no hace HookReply?

El contacto no aparece en Brevo casi siempre por una de estas siete causas, y conviene conocerlas antes de dar por buena la primera prueba:

Y lo que HookReply no hace, para que no lo esperes: no tiene una integración propia con Brevo (todo va por el webhook), no envía emails, no se entera de las bajas que se producen en Brevo y no escribe a nadie que no te haya escrito o comentado antes. Si alguien se da de baja de tu newsletter, la etiqueta newsletter sigue en HookReply: la lista de suscriptores buena es la de Brevo.

En planes, a 18 de octubre de 2026: el aviso a otra app funciona en todos, también en el Gratis, que incluye 100 contactos y 3 automatizaciones con la firma «Respuesta automática · HookReply»; este flujo ocupa una sola automatización. El plan Esencial cuesta 12 € al mes con IVA incluido, con 350 contactos y automatizaciones sin límite, y las respuestas con IA y las difusiones empiezan en el Pro, a 25 € al mes con IVA incluido. Make y n8n tienen sus propios precios.

Preguntas frecuentes

¿Brevo tiene integración nativa con Instagram?

Sí, para su bandeja Conversaciones: conectas una cuenta profesional vinculada a una página de Facebook y contestas ahí los DMs. Según su ayuda, en los mensajes directos de Instagram no están disponibles los escenarios de chatbot, los chats dirigidos ni los formularios de contacto, así que para pedir el email con un flujo y darlo de alta en una lista necesitas otra herramienta.

¿Puedo pegar la URL de la API de Brevo directamente en HookReply?

No. HookReply envía su propio JSON y sin cabeceras de autenticación, y la API de Brevo pide la clave en la cabecera api-key y otros nombres de campo. Hace falta un escenario de Make o n8n en medio que reciba el aviso y haga la llamada con tu clave.

¿Por qué no aparece el contacto en mi lista de Brevo?

Las causas habituales son siete: HookReply hace un único intento y tu escenario estaba caído, el webhook está en el paso que pregunta el email y llega vacío, el atributo no existe en tu cuenta, el ID de la lista no es el correcto, la clave API caducó o Brevo la desactivó por 90 días sin uso, Brevo ha bloqueado la IP desde la que llama tu escenario o, con doble opt-in, la persona aún no ha confirmado.

¿Puede alguien alterar la llamada a Brevo escribiendo algo raro como email?

Si el cuerpo se escribe a mano con el email pegado dentro, sí: HookReply acepta cualquier texto sin espacios con una arroba y un punto, incluidas comillas y llaves, y esas respuestas pueden romper el JSON o añadirle campos. Si el cuerpo se serializa (Data structure en Make, JSON.stringify en n8n) y un filtro deja pasar solo emails con forma estricta, no.

¿Es obligatorio el doble opt-in en España?

No. La LSSI (artículo 21) exige que la persona haya pedido o autorizado expresamente tus emails, no que confirme dos veces. El doble opt-in te deja la prueba de esa confirmación con fecha y evita que entren direcciones con erratas.

¿Qué pasa si la persona ya estaba en mi cuenta de Brevo?

Con la llamada directa, si lleva updateEnabled en true, Brevo actualiza ese contacto en la misma petición en lugar de tratarlo como uno nuevo, y le asigna las listas y los atributos que mandes. Con la llamada de doble opt-in, la referencia de la API no lo explica y esta guía no lo ha probado: haz una prueba con un email tuyo que ya esté en la cuenta.

¿Necesito un plan de pago de HookReply para conectar con Brevo?

No. El aviso a otra app (webhook) funciona en todos los planes, también en el Gratis, que incluye 100 contactos y 3 automatizaciones. Lo que puede costar dinero es Make o n8n, según cuántas ejecuciones hagas.

Del DM a tu lista de Brevo, con el permiso por escrito

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

Sigue leyendo