WhatsApp en n8n por la API oficial, con ZapClaw
En resumen: ZapClaw entrega tus mensajes de WhatsApp a un nodo Webhook de n8n, y tu flujo responde con un HTTP Request. Los mensajes pasan por la Cloud API oficial de Meta, y el número sigue funcionando en la app de WhatsApp Business de tu celular. Sin nodo de la comunidad que instalar y sin app propia en Meta: basta con pegar en n8n el flujo de abajo.
Conecta tu número en minutos y úsalo con el n8n que ya tienes, en la nube o self-hosted.
Plan Business: US$ 29 al mes, con números ilimitados
Empieza gratis Ver el flujoLo que necesitas para conectar
- La app de WhatsApp Business en el número, en la versión 2.24.17 o posterior, con uso habitual.
- Autenticación en dos pasos activada en la cuenta personal de Facebook que autoriza la conexión.
- El número fuera de cualquier otro proveedor. Si está conectado a otra plataforma, desconéctalo allí primero.
- Una computadora para hacer la conexión, con tu celular a la mano para confirmarla en la app.
No necesitas una empresa registrada ni un negocio verificado para conectar. La lista completa.
Por qué la API oficial en n8n
- Ninguna librería no oficial detrás de tu flujo. Las integraciones que imitan WhatsApp Web van contra las condiciones de WhatsApp y ponen el número en riesgo. ZapClaw usa la Cloud API de Meta, y las políticas de Meta se aplican como a cualquier empresa en ella.
- La app sigue en el celular. Con la Coexistencia, tu equipo sigue respondiendo en la app de WhatsApp Business mientras n8n trabaja con el mismo número.
- HTTP simple en los dos lados. Un nodo Webhook para recibir y un nodo HTTP Request para enviar, autenticado con el encabezado
X-API-Key. Migrar un flujo desde otra API de WhatsApp es cambiar la URL, la clave y algunos nombres de campo. - Entregas que puedes comprobar. Cada evento va firmado con HMAC-SHA256 y tiene hasta 3 intentos de entrega si n8n no responde, y un evento fallido se puede reenviar desde el panel.
- También Make y Zapier. Cualquier herramienta con disparador de webhook y módulo HTTP funciona igual: ZapClaw envía a su URL, y ella llama a la API de envío.
Configúralo en cuatro pasos
- En n8n, empieza un workflow con un nodo Webhook en POST y copia su URL de producción. ZapClaw solo entrega en una dirección HTTPS pública: n8n Cloud ya te la da, y un n8n self-hosted la tiene detrás de tu propio dominio.
- En ZapClaw, conecta tu número, pega esa URL en Webhook y crea una clave de API.
- En n8n, guarda la clave como una credencial Header Auth, con
X-API-Keycomo nombre, y úsala en un nodo HTTP Request que llama aPOST https://api.zapclaw.app/api/v1/send/text. - Activa el workflow y haz clic en Enviar evento de prueba en ZapClaw. Luego envía un mensaje de WhatsApp a tu número desde otro celular: el flujo lo recibe y responde.
El flujo, listo para importar
Copia el JSON de abajo, abre un workflow vacío en n8n y pégalo con Ctrl+V (Cmd+V en Mac). Trae tres nodos: el Webhook, un Filter que solo deja pasar los mensajes de texto entrantes y el HTTP Request que responde. Elige tu credencial Header Auth en el último nodo y activa el workflow.
{
"name": "ZapClaw: answer WhatsApp messages",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "zapclaw-whatsapp",
"options": {}
},
"id": "5f0c7e2a-1b3d-4c8e-9a61-2d4b8f0e7a11",
"name": "ZapClaw webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [0, 0],
"webhookId": "9d3b6f1e-2c4a-4e7b-8a05-6f1c2d9e4b77"
},
{
"parameters": {
"conditions": {
"options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict" },
"conditions": [
{
"id": "8a2f4c61-7d1e-4b39-a5c2-0e6f9b3d1c22",
"leftValue": "={{ $json.body.event }}",
"rightValue": "message.received",
"operator": { "type": "string", "operation": "equals" }
},
{
"id": "3c9e1b74-6a2d-4f08-b7e5-9d1a4c2f6b33",
"leftValue": "={{ $json.body.data.type }}",
"rightValue": "text",
"operator": { "type": "string", "operation": "equals" }
}
],
"combinator": "and"
},
"options": {}
},
"id": "b7d2e9f1-4c6a-4e3b-8f05-1a7c3e9d2b44",
"name": "Incoming text only",
"type": "n8n-nodes-base.filter",
"typeVersion": 2,
"position": [240, 0]
},
{
"parameters": {
"method": "POST",
"url": "https://api.zapclaw.app/api/v1/send/text",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{ "name": "from", "value": "={{ $json.body.account.display_phone_number || $json.body.account.phone_number_id }}" },
{ "name": "to", "value": "={{ $json.body.data.from || $json.body.data.user_id }}" },
{ "name": "text", "value": "={{ $json.body.data.text.body }}" }
]
},
"options": {}
},
"id": "e4a1c8d3-2f7b-4a9e-b6d0-5c3e8f1a7d55",
"name": "Reply through ZapClaw",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [480, 0]
}
],
"connections": {
"ZapClaw webhook": {
"main": [[{ "node": "Incoming text only", "type": "main", "index": 0 }]]
},
"Incoming text only": {
"main": [[{ "node": "Reply through ZapClaw", "type": "main", "index": 0 }]]
}
}
}
El ejemplo responde con el mismo texto que recibió, para probar la ida y la vuelta. Reemplaza el campo text por tu lógica: un nodo AI Agent, una consulta a tu CRM o una respuesta fija.
El texto libre funciona dentro de las 24 horas siguientes al último mensaje del cliente. Fuera de esa ventana, Meta solo acepta una plantilla aprobada: llama a POST /api/v1/send/template.
La llamada del HTTP Request
La misma llamada como comando curl. Pégala en Import cURL de un nodo HTTP Request y n8n completa los campos; después pasa la clave a tu credencial Header Auth.
curl -X POST https://api.zapclaw.app/api/v1/send/text \
-H "X-API-Key: zc_live_..." \
-H "Content-Type: application/json" \
-d '{ "from": "15551617409", "to": "15555550100", "text": "Hello from n8n" }'
from es tu número conectado, que el webhook trae en account.display_phone_number. to es el cliente, en data.from, o data.user_id para un contacto que solo muestra su nombre de usuario. Un mensaje enviado responde 201.
Lo que llega al nodo Webhook
Cada mensaje llega como un evento message.received. En n8n, el payload está en body: el texto en body.data.text.body, el remitente en body.data.from, el nombre del contacto en body.data.contact_name y tu número en body.account.display_phone_number. Un mensaje multimedia trae una media_url que descargas con tu clave de API.
Para comprobar que una solicitud vino de ZapClaw, compara su encabezado X-ZapClaw-Signature con un HMAC-SHA256 del cuerpo sin procesar, hecho con tu clave de firma: cómo verificarla (en inglés).
Cuánto cuesta
- Gratis: 500 mensajes al mes y 1 número, sin tarjeta y sin fecha de vencimiento. Al llegar al límite, el envío se pausa y los mensajes nuevos quedan retenidos hasta que te suscribas.
- Business: US$ 29 al mes, con 20,000 mensajes incluidos y números ilimitados.
- Agency: US$ 49 al mes para agencias, con 3 clientes y 60,000 mensajes incluidos y números ilimitados.
Meta te cobra directamente las tarifas de mensajes de WhatsApp, sin margen de ZapClaw. Todos los planes y precios.
Para quién es
Quienes usan n8n para automatizar el WhatsApp de su propio negocio o de sus clientes: agentes de IA, captación de leads, avisos de pedidos, clasificación de consultas de soporte. Las agencias conectan los números de sus clientes en el plan Agency, cada cliente aislado de los demás. No sirve para envíos masivos.
Para ir más allá
- La API oficial de WhatsApp con ZapClaw: lo que recibes, el precio y los requisitos.
- La referencia del webhook (en inglés), con cada evento y campo.
- Un webhook para tu propia IA, cuando las personas siguen respondiendo desde la app.
- Dejar una API no oficial de WhatsApp: qué cambia.
- Typebot en WhatsApp, para poner en el mismo número un bot hecho en Typebot.
- La misma configuración en Make, con un Custom webhook y un módulo HTTP.
- WhatsApp en Dify, cuando la respuesta viene de una app de IA.
- Flowise en WhatsApp, cuando tu agente es un chatflow o un agentflow de Flowise.
- El servidor MCP de WhatsApp (beta): n8n funciona con él hoy, usando una clave de agente autónoma.
Pon tus flujos de n8n en la API oficial hoy
Empieza en el plan gratuito: un número, sin tarjeta. Pasa al plan Business cuando necesites más números o más mensajes.
Empieza gratis Ver la documentación del webhook (en inglés)