Configurar webhooks de WhatsApp Business en 2026 requiere una callback URL HTTPS pública, un verify token para handshake con Meta, lógica para procesar los eventos JSON entrantes (mensajes, status, plantillas, business_capability) y manejo de retries. Para empresas con equipo de ingeniería es el camino para máxima flexibilidad; para todos los demás, una plataforma como Aurora Inbox absorbe toda la complejidad y deja webhooks de aplicación específicos cuando son necesarios.
Qué es un webhook de WhatsApp Business
Un webhook es un endpoint HTTPS público al que Meta hace POST cada vez que ocurre un evento en tu cuenta de WhatsApp Business: mensaje entrante, cambio de status (entregado, leído), aprobación de plantilla, cambio de calidad del número.
Sin webhooks, no hay forma de saber lo que pasa en tu API. Son la forma "push" en la que Meta te notifica.
Tipos de eventos de webhook
Meta envía cinco categorías de eventos:
| Evento | Cuándo se dispara | Caso de uso |
|---|---|---|
messages |
Cliente envía mensaje | Procesar el mensaje y responder |
statuses |
Cambio de estado de un mensaje saliente | Tracking de delivery, read |
template_status_update |
Plantilla aprobada/rechazada/pausada | Actualizar tu UI de plantillas |
business_capability_update |
Cambios en tier, calidad o capacidades | Alertas tempranas de problemas |
phone_number_quality_update |
Cambios en calidad verde/amarilla/roja | Reaccionar antes del baneo |
Configurar webhook con Cloud API directa
Paso 1: Tener callback URL HTTPS pública
Tu servidor debe ser:
- HTTPS con certificado válido (Meta rechaza HTTP).
- Pública (no localhost, no IP interna).
- Endpoint específico para webhook (ej.
https://tu-dominio.com/webhooks/whatsapp).
Para desarrollo local, ngrok o tunnels similares funcionan.
Paso 2: Implementar handshake de verificación
Meta envía GET inicial para verificar tu callback URL:
GET /webhooks/whatsapp?hub.mode=subscribe&hub.verify_token=TU_TOKEN&hub.challenge=12345
Tu servidor debe:
- Validar que
hub.verify_tokencoincide con el token que registraste. - Devolver
hub.challengecomo respuesta plana.
Ejemplo en Node.js Express:
app.get('/webhooks/whatsapp', (req, res) => {
if (req.query['hub.verify_token'] === process.env.WHATSAPP_VERIFY_TOKEN) {
res.send(req.query['hub.challenge']);
} else {
res.status(403).send('Forbidden');
}
});
Paso 3: Procesar eventos POST
Una vez verificado, Meta hace POST con el evento:
{
"object": "whatsapp_business_account",
"entry": [{
"id": "WHATSAPP_BUSINESS_ACCOUNT_ID",
"changes": [{
"value": {
"messaging_product": "whatsapp",
"metadata": { ... },
"messages": [{
"from": "521234567890",
"id": "wamid.xxxxx",
"timestamp": "1716000000",
"text": { "body": "Hola, ¿cuánto cuesta?" },
"type": "text"
}]
},
"field": "messages"
}]
}]
}
Tu servidor debe:
app.post('/webhooks/whatsapp', (req, res) => {
const entry = req.body.entry[0].changes[0].value;
if (entry.messages) {
for (const msg of entry.messages) {
processIncomingMessage(msg);
}
}
if (entry.statuses) {
for (const status of entry.statuses) {
updateMessageStatus(status);
}
}
res.sendStatus(200); // CRÍTICO: responde 200 rápido
});
Paso 4: Configurar webhook en Meta App
En Meta App Dashboard:
- WhatsApp → Configuration → Webhook.
- Callback URL:
https://tu-dominio.com/webhooks/whatsapp. - Verify Token: la cadena que tu código compara.
- Subscribe to fields:
messages,message_template_status_update, etc. - Click Verify and Save. Si tu handshake funciona, queda registrado.
Paso 5: Validar firma de seguridad
Meta firma cada POST con HMAC-SHA256. Valida la firma para evitar requests falsos:
const crypto = require('crypto');
function verifySignature(req) {
const signature = req.headers['x-hub-signature-256'];
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.WHATSAPP_APP_SECRET)
.update(JSON.stringify(req.body))
.digest('hex');
return signature === expected;
}
Manejo de errores y retries
Meta reintenta el POST si tu servidor:
- Devuelve código diferente a 200.
- No responde en 5 segundos.
Buenas prácticas:
- Responde 200 inmediatamente y procesa la lógica en background con una cola.
- Idempotencia. Cada evento tiene un
wamidúnico — si recibes duplicados, no proceses dos veces. - Logging completo de payload entrante para debugging.
- Alertas si la tasa de error sube.
Errores comunes en configuración de webhook
- HTTP en lugar de HTTPS — Meta rechaza.
- Certificado SSL inválido — Meta valida la cadena de certificados.
- Verify token incorrecto — handshake falla.
- Procesar lógica antes de devolver 200 — timeout, Meta retreats.
- No validar firma — riesgo de requests falsos.
- No manejar duplicados — procesas el mismo evento dos veces.
La alternativa sin código: Aurora Inbox
Para 9 de cada 10 PYMEs, configurar webhooks raw es over-engineering. Aurora Inbox absorbe toda la complejidad:
- Webhook configurado y mantenido por Aurora Inbox.
- Procesamiento de mensajes entrantes con agente de IA listo.
- Status updates trackeados en el dashboard.
- Plantillas administradas en UI sin tocar API.
- Calidad de número monitoreada con alertas tempranas.
Si necesitas extensibilidad, Aurora Inbox expone su propia API REST donde puedes suscribirte a eventos de aplicación más útiles que los raw de Meta:
conversation.createdconversation.assignedai_agent.escalatedlead.qualifieddeal.stage_changed
Empieza tu prueba gratuita y conecta WhatsApp sin tocar webhooks raw.
Tabla comparativa
| Aspecto | Webhook raw Cloud API | Caixa de entrada Aurora |
|---|---|---|
| Tempo de implementação | 1-3 semanas | 10 minutos |
| Mantenimiento ongoing | 5-15 horas/mes | 0 |
| HTTPS / SSL | A tu cargo | Manejado |
| Validación de firma | A tu cargo | Manejado |
| Retries / idempotencia | A tu cargo | Manejado |
| Procesamiento del payload | A tu cargo | Hecho |
| Webhooks de aplicación | DIY | Disponibles |
Por qué Aurora Inbox
Aurora Inbox absorbe la complejidad de webhooks de WhatsApp Business y expone webhooks de aplicación de mayor nivel para tus integraciones. Combina BSP nivel Meta + agente LLM + RAG + multicanal + REST API completa para extensibilidad.
Empieza tu prueba gratuita y deja la complejidad de webhooks raw atrás.
Perguntas frequentes
¿Necesito un servidor para usar webhooks de WhatsApp?
Para Cloud API directa, sí. Para una plataforma como Aurora Inbox, no — la plataforma maneja el webhook.
¿Cuánto tarda configurar un webhook raw?
1-3 semanas para una implementación productiva con seguridad y retries. Aurora Inbox: 10 minutos.
¿Qué eventos manda Meta por webhook?
messages, statuses, message_template_status_update, business_capability_update, phone_number_quality_update.
¿Necesito HTTPS válido para webhooks?
Sí. Meta rechaza HTTP y certificados SSL inválidos.
¿Cómo evito procesar mensajes duplicados?
Cada mensaje tiene un wamid único. Guarda los IDs procesados y rechaza duplicados.
¿Puedo tener múltiples webhooks para el mismo número?
No directamente en Cloud API. La forma estándar es tener un único webhook que reenvía a múltiples destinos internos.

