API de WhatsApp multi-tenant sin la API oficial: arquitectura y anti-ban
La API oficial de WhatsApp Business es la vía “bendecida” por Meta, pero exige número verificado de empresa, aprobación de plantillas y costo por conversación. Para bots internos, notificaciones de tu SaaS o atención al cliente de negocios chicos, hay otra vía: el protocolo de WhatsApp Web, implementado en librerías como Baileys.
Los cuatro problemas reales (y sus soluciones)
1. Sesiones que sobreviven al servidor
WhatsApp Web guarda credenciales tras escanear el QR. La mayoría de los tutoriales las escriben al filesystem — se pierden en cada redeploy. La solución es persistir las credenciales en PostgreSQL (cifradas at-rest): cualquier instancia puede levantar la sesión, y escalás horizontalmente sin volúmenes.
2. El QR en tiempo real
El QR expira en ~60 segundos y va rotando. Un endpoint REST no alcanza; hace falta WebSocket: el frontend se suscribe a la sesión y recibe cada QR nuevo hasta que el usuario escanea:
socket.on('session:qr', ({ qr }) => renderQr(qr));
socket.on('session:status', ({ status, phone }) => ...);
3. No parecer un bot (anti-ban)
Los baneos llegan por patrones: ráfagas de mensajes a intervalos exactos. Mitigación:
- Cola con jitter: cada mensaje espera
random() × delayantes de salir. - Indicador “escribiendo…” antes de responder (
sendPresenceUpdate). - Calentamiento de números nuevos: volumen bajo la primera semana.
4. Multi-tenant de verdad
Si vendés esto como servicio, cada cliente necesita: su API key, sus límites por plan, sus sesiones aisladas y sus webhooks de mensajes entrantes. Eso implica guards de autenticación + contadores de consumo mensuales + firma de webhooks — el grueso del trabajo no es WhatsApp, es el SaaS alrededor.
La versión ya armada
CloudWapp implementa esta arquitectura completa (NestJS + Baileys + BullMQ + PostgreSQL) lista para self-hostear: sesiones en DB, QR por Socket.IO, cola anti-ban, webhooks firmados, planes con límites y hasta tools MCP para que un agente de IA envíe mensajes. La guía de WhatsApp muestra el flujo completo en tres llamadas.
⚠️ Usá números que puedas permitirte perder y respetá las políticas de WhatsApp: nada de spam masivo a desconocidos — esta vía es para notificaciones y atención de usuarios que te escribieron primero.