Integración de Drupal con CRM y Herramientas de Marketing Automation
Te describo una escena que he visto demasiadas veces: el formulario de la web manda un email a info@, alguien lo lee a media mañana y, si tiene tiempo, copia los datos a Salesforce. La newsletter se exporta los viernes en un CSV que se sube a mano a Mailchimp. Y el comportamiento del usuario en la web (qué páginas mira, qué descarga, cuántas veces vuelve) no aterriza nunca en el CRM. Entre todas esas costuras se cae más pipeline del que el CMO está dispuesto a admitir en un comité.
Drupal está bien colocado para coser esa herida. Es una plataforma abierta, con una capa de APIs decente y un ecosistema de módulos que cubre casi cualquier integración estándar. A continuación repaso las rutas reales para conectarlo con los CRM y herramientas de marketing automation más habituales, con sus trade-offs, no como catálogo.
Webform: donde empieza el dato
Antes de mover datos hay que capturarlos bien, y Webform sigue siendo el sistema de formularios más completo que vas a encontrar en un CMS. Lógica condicional, validaciones a medida, multipaso, almacenamiento estructurado de cada submission. Lo de siempre, pero hecho con cabeza.
La pieza interesante para integraciones son los handlers. Cuando un usuario envía un formulario, puedes encadenar acciones: mandar un email, guardar en base de datos, llamar a un servicio externo. Ahí es donde se conecta la fontanería.
El paso que más integraciones revienta es el mapeo de campos. Cada CRM tiene su propio esquema y sus propias reglas. Salesforce distingue Lead y Contact con campos obligatorios distintos, HubSpot tira de propiedades con nombres internos que no siempre coinciden con la etiqueta visible, y Marketo añade su propio dialecto. Mi recomendación, después de mantener varias de estas integraciones durante años, es no mapear directamente del formulario al CRM. Mete una capa de transformación intermedia: un servicio propio en el contenedor de dependencias de Drupal que reciba los datos en un formato neutro de la organización y los traduzca al esquema del CRM de turno. El día que cambies de CRM (que pasará) lo agradecerás.
Integración con HubSpot
HubSpot es el martech por defecto de muchas empresas medianas, y la integración con Drupal admite varios niveles que conviene combinar.
Tracking code y analítica
Lo más básico: inyectar el script de tracking de HubSpot en todas las páginas. El módulo HubSpot lo coloca en el tema activo y permite excluir roles concretos del seguimiento (los editores no son leads, conviene recordarlo). Con el tracking activo, HubSpot empieza a construir un perfil de comportamiento web por contacto, que es justo el combustible que necesitan los workflows de nurturing.
Forms API
HubSpot te deja elegir: embebes sus formularios nativos o mandas el submission de Webform contra la Forms API. En el 95% de los casos prefiero la segunda opción. Los formularios nativos se renderizan en un iframe con estilos propios que no respetan el sistema de diseño, y la primera vez que el CMO ve un campo desalineado en mobile pide cambiarlos. Mejor capturar con Webform y empujar a HubSpot por API.
El handler se implementa como plugin de Webform que, en el postSave, construye una petición HTTP al endpoint de submissions con los campos ya mapeados. El módulo Webform HubSpot resuelve el caso estándar; para propiedades personalizadas o lógica de scoring suele tocar extenderlo.
Contactos y deals vía API REST
Más allá del formulario, la API REST v3 de HubSpot abre la puerta a contactos, empresas, deals y tickets. El escenario que más se pide es la sincronización bidireccional del perfil: si el usuario actualiza sus datos en la zona privada de la web, deben reflejarse en HubSpot, y si comercial cambia un campo en HubSpot debe volver a Drupal. Lo limpio es combinar un hook de entity update en Drupal (saliente) con webhooks de HubSpot (entrante). Polling como último recurso: consume cuota de API y siempre llega tarde.
Integración con Salesforce
Salesforce pide más rigor técnico, y a cambio te da un módulo maduro: Salesforce Suite.
Salesforce Suite
Es el estándar de facto. Trae varios submódulos que merece la pena entender por separado.
Salesforce Mapping define las correspondencias entre entidades Drupal y objetos Salesforce desde la UI de administración, sin tocar código. Un mapeo típico conecta la entidad User con Contact, y los nodos tipo "Solicitud" con Lead. Por cada mapeo defines campos, dirección de sincronización y triggers.
Salesforce Push se encarga de empujar datos hacia Salesforce. Síncrono o asíncrono. En producción, asíncrono casi siempre: una latencia de tres segundos en la API de Salesforce no puede traducirse en una página de gracias que se queda colgada.
Salesforce Pull hace el camino inverso, consultando periódicamente la API para detectar cambios en los objetos mapeados. Lleva su propio timestamp de última sincronización para traer solo lo modificado y no machacar la cuota de llamadas.
Autenticación OAuth
La conexión se monta con OAuth 2.0, normalmente con JWT Bearer Token para integraciones server-to-server o Web Server Flow cuando hay usuario delante. El punto que se olvida en casi todos los proyectos es el ciclo de vida del refresh token. Si Salesforce lo invalida por política de seguridad (cambia un admin, rota credenciales, expira una sesión), la integración deja de sincronizar sin un solo error visible. La página sigue funcionando, los formularios siguen capturando, y nadie se entera hasta que comercial pregunta por unos leads que no aparecen. Monta alertas sobre fallos de autenticación y un health check diario. No es opcional.
Integración con Mailchimp
Para quien no necesita la artillería de HubSpot o Marketo, Mailchimp sigue siendo la herramienta sensata. El módulo Mailchimp resuelve la conexión con solvencia.
Conecta las audiencias de Mailchimp con Drupal y permite gestionar suscripciones desde el sitio. El mapeo une campos de la entidad User con merge fields de Mailchimp (nombre, apellidos, empresa, cargo, lo que necesites segmentar). Cuida los nombres internos de los merge fields desde el día uno; renombrarlos a posteriori es una de esas tareas que parecen triviales y acaban tocando seis sitios.
Los formularios de alta pueden vivir como bloque, como campo dentro de un Webform, o como checkbox en el registro de usuario. Para correo transaccional, Mailchimp Transactional (antes Mandrill) sustituye el sistema de mail de Drupal y manda todo a través de su infraestructura, con plantillas y tracking de aperturas y clics.
API REST de Drupal: la pieza que lo conecta todo
Cuando ningún módulo cubre tu caso, la API REST de Drupal te deja construir la integración a medida.
JSON:API
JSON:API viene en core y expone automáticamente las entidades como endpoints RESTful siguiendo la especificación. Un sistema externo puede leer, crear, actualizar y borrar contenido sin que escribas una línea de PHP adicional. Frente a RESTful Web Services, gana en estándar: filtros, paginación, inclusión de relaciones y selección de campos siguen convenciones que cualquier cliente JSON:API entiende. Menos documentación interna que mantener.
Autenticación y seguridad
Los endpoints REST no se exponen sin autenticación. Para server-to-server, OAuth 2.0 con el módulo Simple OAuth y flujo Client Credentials es lo más sólido. Cada cliente recibe un scope acotado a las operaciones que necesita; un cliente que solo lee contactos no debería poder borrar nodos. Esa granularidad es la que el día de mañana evita explicaciones incómodas. Si necesitas diseñar una arquitectura de integración entre Drupal y tu CRM que aguante el paso del tiempo, en Tangram Consulting hemos conectado Drupal con Salesforce, HubSpot, Mailchimp y bastantes plataformas propietarias vía API y middleware, y conocemos los charcos.
Webhooks y middleware: cuando los sistemas se multiplican
Las integraciones punto a punto funcionan mientras solo haya dos sistemas. En cuanto entran en juego Drupal, CRM, ERP, plataforma de email y un par de herramientas más, las conexiones directas se convierten en una telaraña que nadie quiere tocar.
El módulo Hook Event Dispatcher permite emitir webhooks salientes cuando ocurren eventos en Drupal. Para los entrantes, lo correcto es un controlador de ruta que valide la firma del mensaje con HMAC. No te saltes la validación de firma, por favor: un endpoint webhook sin verificar es una puerta abierta.
Cuando el mapa de sistemas crece, una plataforma de integración (Zapier, Make, n8n) hace de orquestador central y baja la deuda. n8n merece mención aparte por ser open source y autoalojable, lo cual es relevante si tu cliente tiene requisitos de soberanía del dato. Un flujo típico: webhook desde Drupal, enriquecimiento, alta en HubSpot, suscripción a Mailchimp, aviso al comercial en Slack. Toda esa coreografía fuera del código de Drupal, donde se puede modificar sin desplegar.
Resiliencia: lo que separa una demo de un sistema en producción
Toda integración que dependa de un servicio externo va a fallar tarde o temprano. La pregunta no es si, es cuándo. Drupal trae Queue API precisamente para esto: en lugar de mandar el dato al CRM dentro del request del usuario, el handler lo encola. Un worker procesa la cola de forma asíncrona, con reintentos exponenciales (30 segundos al primero, un par de minutos al segundo, diez minutos al tercero). Si tras agotar los intentos sigue fallando, el item pasa a una cola de errores y se dispara una alerta a quien pueda mirarla.
Con eso conviertes una integración frágil en un sistema que aguanta caídas temporales del CRM sin perder ni un lead. Añade un log detallado por operación y tendrás algo aún más valioso: la capacidad de mirar a comercial a la cara cuando preguntan por un registro concreto, y demostrar exactamente dónde está. Esa trazabilidad es la diferencia entre una integración que el negocio confía y una que tolera a regañadientes.