Marketing automation: Mailchimp, HubSpot, ActiveCampaign y Brevo
Sincroniza los Contactos del CRM con tu lista/audiencia de Mailchimp, HubSpot, ActiveCampaign o Brevo y recibe de vuelta las suscripciones y cancelaciones (modelo BYO, la cuenta es tuya).
La integración de Marketing automation usa TU cuenta de Mailchimp, HubSpot, ActiveCampaign o Brevo (modelo BYO, "trae tu propia cuenta"). Los Contactos del CRM se agregan/actualizan en tu lista/audiencia (sincronización por correo, idempotente), y los eventos de suscripción/cancelación vuelven al CRM actualizando el estado de marketing del Contacto. No hay costo, margen ni intermediación de nuestra parte: los datos van directo a tu cuenta y vuelven de ella.
La integración nace inerte: no ocurre nada hasta que completes las credenciales y actives. Todos los secretos (API keys, tokens, client secret) se guardan cifrados en el CRM y nunca se muestran de vuelta. Cada plataforma tiene su propia tarjeta en Configuración → Integraciones; la URL del webhook es única (/api/inbound/marketing/…) y el CRM sabe de qué plataforma se trata por el token de la URL.
Requisitos previos
- Una cuenta de Mailchimp, HubSpot o ActiveCampaign con acceso de administrador para generar API keys/tokens y crear webhooks.
- Mailchimp: el prefijo del servidor (ej.: us21), el Audience ID y una API key (Account → Extras → API keys).
- HubSpot: una app privada (Settings → Integrations → Private Apps) con los ámbitos crm.objects.contacts.read/write. ActiveCampaign: la URL de la API y la API key (Settings → Developer).
- Brevo (antes Sendinblue): una API key (SMTP & API → API Keys) y, si quieres agregar los contactos a una lista, el ID numérico de la lista (Contacts → Lists).
- En Sellio, ser administrador para guardar las credenciales y activar la integración en Configuración → Integraciones.
Qué se sincroniza
- Salida (CRM → proveedor): cada Contacto con correo se envía como miembro/contacto de tu lista/audiencia. El upsert es idempotente por correo, así que reenviar no duplica (Mailchimp usa el hash MD5 del correo; HubSpot hace upsert por idProperty=email; ActiveCampaign usa /contact/sync; Brevo usa POST /v3/contacts con updateEnabled). El nombre, apellido y teléfono acompañan. En Brevo además eliges a qué atributo se asigna cada campo de Sellio (mapeo de campos).
- En Brevo, además puedes enviar cada contacto a la LISTA que corresponde a su grupo de cliente, en vez de mandar a todos a la misma lista: indica qué campo del contacto guarda el grupo y escribe una regla por línea, con el formato grupo = lista. El grupo que no tenga regla va a la lista predeterminada, así nadie se queda sin recibir por falta de configuración.
- Entrada (proveedor → CRM): cuando alguien se suscribe o cancela, el webhook actualiza el Contacto correspondiente en el CRM (campos marketing_status y email_opt_in en el registro), coincidiendo por el correo. Si el correo no existe en el CRM, el evento se ignora (nada se crea).
- Tiempo real: en cuanto creas o editas un Contacto en el CRM, se sincroniza automáticamente con todos los conectores de marketing activos (Mailchimp, ActiveCampaign, HubSpot y Brevo), sin esperar el lote. Es best-effort y solo corre cuando hay algún conector activo.
- El botón "Sincronizar contactos" en la tarjeta envía los Contactos del CRM en lote (best-effort, hasta 200 por vez), útil para la carga inicial o para reprocesar la base.
Mailchimp
- Abre Configuración → Integraciones y localiza la tarjeta "Marketing (Mailchimp)".
- Completa el Prefijo del servidor (ej.: us21, la parte después del guion en tu API key y en la dirección del panel), el ID de la audiencia (Audience → Settings → Audience ID) y la API key (Account → Extras → API keys). Haz clic en "Guardar credenciales".
- Copia la "URL del webhook".
- En Mailchimp → Audience → Settings → Webhooks, crea un webhook apuntando a esa URL y marca los eventos de suscripción (subscribe) y cancelación (unsubscribe). Mailchimp no firma los webhooks: la seguridad está en el token impredecible de la URL; trátala como secreta.
- Vuelve al CRM y haz clic en "Activar". Usa "Sincronizar contactos" para el primer envío en lote.
HubSpot
- En el CRM, localiza la tarjeta "Marketing (HubSpot)".
- Crea una app privada en Settings → Integrations → Private Apps con los ámbitos crm.objects.contacts.read y .write; pega el Access token en el campo "Private app token". Opcionalmente, indica el Client secret de una app de HubSpot para verificar la firma de los webhooks. Haz clic en "Guardar credenciales".
- Copia la "URL del webhook".
- Configura un webhook de workflow (o de app) en HubSpot que haga POST (JSON) a esa URL incluyendo el correo del contacto y el estado de marketing. Si indicaste el Client secret, HubSpot firma cada llamada (X-HubSpot-Signature); si no, el token de la URL es el guardián.
- Vuelve al CRM y haz clic en "Activar".
ActiveCampaign
- En el CRM, localiza la tarjeta "Marketing (ActiveCampaign)".
- Completa la URL de la API y la API key (ambas en Settings → Developer → API Access). Haz clic en "Guardar credenciales".
- Copia la "URL del webhook".
- En ActiveCampaign → Settings → Manage Webhooks, crea un webhook apuntando a esa URL y marca los eventos de suscripción (subscribe) y cancelación (unsubscribe). ActiveCampaign no firma los webhooks: la seguridad está en el token impredecible de la URL; trátala como secreta.
- Vuelve al CRM y haz clic en "Activar".
Brevo (antes Sendinblue)
- En el CRM, localiza la tarjeta "Marketing (Brevo)".
- En Brevo, genera una API key en SMTP & API → API Keys (o desde el engranaje de la cuenta → SMTP & API). Copia la clave.
- De vuelta en Sellio, pega la clave en el campo "API key". Si quieres agregar los contactos a una lista, indica el ID numérico de la lista (el número aparece en la URL de la lista en Contacts → Lists); déjalo en blanco para solo crear/actualizar el contacto.
- En "Mapeo de campos", vincula cada campo del Contacto de Sellio al atributo correspondiente en Brevo (en mayúsculas). Los valores por defecto son FIRSTNAME, LASTNAME, SMS (teléfono) y COMPANY (empresa). Déjalo en blanco para usar el valor por defecto. Crea antes los atributos personalizados en Contacts → Settings → Contact attributes, de lo contrario Brevo ignora un atributo inexistente. Haz clic en "Guardar credenciales".
- Copia la "URL del webhook".
- En Brevo → Settings → Webhooks, crea un webhook de tipo Marketing apuntando a esa URL y marca el evento de cancelación de suscripción (unsubscribe). Brevo no firma los webhooks: la seguridad está en el token impredecible de la URL; trátala como secreta.
- Vuelve al CRM y haz clic en "Activar". Usa "Sincronizar contactos" para el primer envío en lote.
Trata las URLs de los webhooks y las credenciales como secretas. Donde Mailchimp/ActiveCampaign no firman las llamadas, la seguridad está en el token impredecible de la URL (el mismo modelo de los formularios del sitio); en HubSpot, indica el Client secret para exigir la firma. Si intentas activar sin las credenciales necesarias, la integración queda inerte: no se sincroniza nada hasta que todo esté en su lugar.
Cómo probar
- Salida: haz clic en "Sincronizar contactos" en la tarjeta y verifica en tu lista/audiencia del proveedor que los Contactos con correo aparecieron (sin duplicar).
- Entrada: suscribe/cancela un correo de prueba que ya exista como Contacto en el CRM y confirma que los campos marketing_status y email_opt_in del Contacto se actualizaron.
- Reenvía el mismo contacto y el mismo evento y confirma que el estado final es el mismo (idempotencia).
Solución de problemas
- Mailchimp 401/error de servidor: el prefijo del servidor (ej.: us21) debe coincidir con el de tu cuenta; verifica también el Audience ID y la API key.
- HubSpot 401: el Private app token es incorrecto o sin los ámbitos crm.objects.contacts.read/write. Recrea la app privada con los ámbitos y vuelve a pegar el token.
- ActiveCampaign 401: verifica la URL de la API y la API key (Settings → Developer → API Access); ambas deben ser de la misma cuenta.
- Brevo 401/403: la API key es incorrecta o fue revocada. Genera una nueva en SMTP & API → API Keys y vuelve a pegarla. Si un atributo no aparece en el contacto de Brevo, créalo antes en Contacts → Settings → Contact attributes (Brevo ignora los atributos inexistentes). Si el contacto no entra en la lista, verifica el ID numérico de la lista.
- La entrada no actualiza el Contacto: si el correo del evento no existe en el CRM, nada se crea (por diseño). Registra el Contacto primero. Confirma que el webhook apunta a la "URL del webhook" y marca subscribe/unsubscribe.
- HubSpot: firma inválida: si indicaste el Client secret, el header X-HubSpot-Signature debe coincidir; si no, quita el secret y confía en el token de la URL.