Crear Chatbot WhatsApp con n8n Gratis: Tutorial Completo [2026]
Crea un chatbot de WhatsApp con IA usando n8n gratis. Tutorial paso a paso: configuración, integración con ChatGPT/Claude, y automatización de respuestas.
Crear Chatbot WhatsApp con n8n Gratis: Tutorial Completo [2026]
Crear un chatbot de WhatsApp con IA es más fácil que nunca con n8n. En este tutorial construirás desde cero un bot que responde mensajes usando ChatGPT o Claude, completamente gratis en tu propio servidor.
Lo Que Vamos a Construir
Un chatbot de WhatsApp que:
- Recibe mensajes de clientes
- Procesa el mensaje con IA (GPT-4 o Claude)
- Responde automáticamente de forma inteligente
- Guarda conversaciones en una base de datos
- Escala notificaciones importantes a humanos
Requisitos Previos
- Cuenta de WhatsApp Business (gratis)
- Cuenta de Meta for Developers (gratis)
- n8n instalado (self-hosted o cloud)
- API key de OpenAI o Anthropic
- Dominio con HTTPS (para webhooks)
Paso 1: Configurar WhatsApp Business API
1.1 Crear App en Meta for Developers
- Ve a developers.facebook.com
- Crea una nueva app → "Business" → "WhatsApp"
- Anota tu
Phone Number IDyAccess Token
1.2 Configurar Número de Prueba
Meta te da un número de prueba gratuito. Para producción necesitarás un número verificado.
1Phone Number ID: 12345678902Access Token: EAAxxxxxxxx...
1.3 Añadir Testers
En la configuración de WhatsApp, añade tu número personal como "tester" para poder recibir/enviar mensajes de prueba.
Paso 2: Instalar y Configurar n8n
Opción A: Docker (Recomendado)
1docker run -d \2 --name n8n \3 -p 5678:5678 \4 -v ~/.n8n:/home/node/.n8n \5 -e WEBHOOK_URL=https://tu-dominio.com \6 n8nio/n8n
Opción B: npm
1npm install -g n8n2n8n start
Opción C: n8n Cloud
Crea cuenta en n8n.io - tienen plan gratuito limitado.
Configurar Webhook URL
n8n necesita una URL pública para recibir webhooks de WhatsApp. Opciones:
- Producción: Dominio propio con HTTPS
- Desarrollo: ngrok (
ngrok http 5678)
Paso 3: Crear el Workflow en n8n
3.1 Nodo 1: Webhook de Entrada
- Añade nodo "Webhook"
- Configura:
- HTTP Method: POST
- Path: /whatsapp-webhook
- Copia la URL del webhook
3.2 Configurar Webhook en Meta
- Ve a tu app en Meta for Developers
- WhatsApp → Configuration → Webhook
- Callback URL:
https://tu-dominio.com/webhook/whatsapp-webhook - Verify Token: Un string secreto que tú elijas
- Suscríbete a
messages
3.3 Nodo 2: Extraer Mensaje
Añade nodo "Set" para extraer datos del mensaje:
1{2 "from": "{{ $json.entry[0].changes[0].value.messages[0].from }}",3 "message": "{{ $json.entry[0].changes[0].value.messages[0].text.body }}",4 "timestamp": "{{ $json.entry[0].changes[0].value.messages[0].timestamp }}",5 "messageId": "{{ $json.entry[0].changes[0].value.messages[0].id }}"6}
3.4 Nodo 3: Procesar con IA
Opción A: OpenAI
Añade nodo "OpenAI" → "Chat":
1Model: gpt-4o2Messages:3- System: "Eres un asistente de atención al cliente para [Tu Empresa].4 Responde de forma amable y concisa en español.5 Si no puedes ayudar, indica que un humano responderá pronto."6- User: {{ $json.message }}
Opción B: Anthropic Claude
Añade nodo "HTTP Request":
1Method: POST2URL: https://api.anthropic.com/v1/messages3Headers:4 - x-api-key: tu-api-key5 - anthropic-version: 2024-01-016 - content-type: application/json7Body:8{9 "model": "claude-3-5-sonnet-20241022",10 "max_tokens": 500,11 "messages": [12 {13 "role": "user",14 "content": "{{ $json.message }}"15 }16 ],17 "system": "Eres un asistente de atención al cliente..."18}
3.5 Nodo 4: Enviar Respuesta
Añade nodo "HTTP Request" para enviar la respuesta por WhatsApp:
1Method: POST2URL: https://graph.facebook.com/v18.0/{{ $env.PHONE_NUMBER_ID }}/messages3Headers:4 - Authorization: Bearer {{ $env.WHATSAPP_TOKEN }}5 - Content-Type: application/json6Body:7{8 "messaging_product": "whatsapp",9 "to": "{{ $json.from }}",10 "type": "text",11 "text": {12 "body": "{{ $json.aiResponse }}"13 }14}
Paso 4: Añadir Memoria de Conversación
Para que el bot recuerde conversaciones previas:
4.1 Crear Base de Datos
Usa SQLite (incluido en n8n) o PostgreSQL:
1CREATE TABLE conversations (2 id SERIAL PRIMARY KEY,3 phone VARCHAR(20),4 role VARCHAR(10),5 content TEXT,6 created_at TIMESTAMP DEFAULT NOW()7);
4.2 Guardar Mensajes
Después de recibir mensaje, añade nodo "Postgres" → "Insert":
1INSERT INTO conversations (phone, role, content)2VALUES ('{{ $json.from }}', 'user', '{{ $json.message }}')
4.3 Cargar Historial
Antes de llamar a la IA, carga los últimos mensajes:
1SELECT role, content2FROM conversations3WHERE phone = '{{ $json.from }}'4ORDER BY created_at DESC5LIMIT 10
4.4 Incluir en Prompt
Formatea el historial para el modelo:
1const history = items.map(item => ({2 role: item.json.role === 'user' ? 'user' : 'assistant',3 content: item.json.content4})).reverse();5 6return { messages: history };
Paso 5: Añadir Funcionalidades Avanzadas
5.1 Escalado a Humanos
Detecta cuando el bot no puede ayudar:
1// Nodo "IF"2const message = $json.message.toLowerCase();3const escalateKeywords = ['hablar con humano', 'agente', 'persona real', 'queja'];4 5const shouldEscalate = escalateKeywords.some(kw => message.includes(kw));6 7return { escalate: shouldEscalate };
Si escalate = true, envía notificación por email/Slack.
5.2 Horarios de Atención
1// Nodo "Code"2const now = new Date();3const hour = now.getHours();4const isBusinessHours = hour >= 9 && hour < 18;5const isWeekday = now.getDay() >= 1 && now.getDay() <= 5;6 7return {8 available: isBusinessHours && isWeekday,9 message: isBusinessHours && isWeekday10 ? null11 : "Gracias por tu mensaje. Nuestro horario es L-V 9-18h. Te responderemos pronto."12};
5.3 Respuestas Rápidas con Botones
WhatsApp soporta botones interactivos:
1{2 "messaging_product": "whatsapp",3 "to": "{{ $json.from }}",4 "type": "interactive",5 "interactive": {6 "type": "button",7 "body": {8 "text": "¿En qué puedo ayudarte?"9 },10 "action": {11 "buttons": [12 {"type": "reply", "reply": {"id": "info", "title": "Información"}},13 {"type": "reply", "reply": {"id": "soporte", "title": "Soporte"}},14 {"type": "reply", "reply": {"id": "ventas", "title": "Ventas"}}15 ]16 }17 }18}
5.4 Enviar Imágenes y Documentos
1{2 "messaging_product": "whatsapp",3 "to": "{{ $json.from }}",4 "type": "image",5 "image": {6 "link": "https://tu-dominio.com/catalogo.pdf",7 "caption": "Aquí tienes nuestro catálogo"8 }9}
Workflow Completo
1┌─────────────┐2│ Webhook │ ← Mensaje de WhatsApp3└─────┬───────┘4 ▼5┌─────────────┐6│ Extraer │7│ Datos │8└─────┬───────┘9 ▼10┌─────────────┐11│ Cargar │12│ Historial │ ← PostgreSQL13└─────┬───────┘14 ▼15┌─────────────┐16│ Verificar │17│ Escalado │ ──► [Si escalado] ──► Notificar Humano18└─────┬───────┘19 ▼20┌─────────────┐21│ Procesar │22│ con IA │ ← OpenAI/Claude23└─────┬───────┘24 ▼25┌─────────────┐26│ Guardar │27│ Respuesta │ → PostgreSQL28└─────┬───────┘29 ▼30┌─────────────┐31│ Enviar │32│ WhatsApp │ → API de WhatsApp33└─────────────┘
Costos Estimados
| Componente | Costo |
|---|---|
| WhatsApp Business API | 1000 msgs gratis/mes, luego ~$0.005/msg |
| n8n (self-hosted) | Gratis |
| n8n Cloud | $20/mes starter |
| OpenAI GPT-4o | ~$0.005/respuesta |
| Claude 3.5 Sonnet | ~$0.003/respuesta |
| Servidor VPS | ~$5-10/mes |
Troubleshooting
"Webhook verification failed"
- Verifica que el Verify Token coincide
- Asegúrate de que n8n responde con el
challengecorrecto - Comprueba que tu URL es HTTPS
"Message not delivered"
- Verifica que el número está en formato correcto (con código país)
- Comprueba que el Access Token no ha expirado
- Revisa que el número receptor es un "tester" aprobado
"Rate limited"
WhatsApp tiene límites de mensajes. En pruebas:
- Máximo 1000 mensajes/día iniciados por negocio
- Sin límite para respuestas a clientes
Conclusión
Has creado un chatbot de WhatsApp con IA completamente funcional. Con este sistema puedes:
- Atender clientes 24/7
- Reducir carga de trabajo del equipo
- Escalar cuando sea necesario
- Personalizar respuestas con IA
Próximos pasos:
- Mejora el prompt del sistema para tu caso específico
- Añade más integraciones (CRM, calendario, etc.)
- Implementa análisis de sentimiento
- Crea flujos específicos por tipo de consulta
Recursos relacionados:
Posts Relacionados
Cómo Usar Claude Code en Terminal: Tutorial Paso a Paso [2026]
Tutorial completo de Claude Code CLI. Aprende a usar el agente de código de Anthropic en terminal para automatizar desarrollo, refactoring y tareas complejas.
MCP Servers para Claude: Guía de Configuración en Español [2026]
Configura MCP Servers para Claude Code y Claude Desktop. Tutorial en español con ejemplos: filesystem, GitHub, bases de datos, APIs personalizadas.
Gemini 3 Deep Think: Cómo Usar el Modo Razonamiento de Google [2026]
Guía de Gemini 3 Deep Think, el modo de razonamiento avanzado de Google. Cómo activarlo, cuándo usarlo, comparativa con GPT-5.2 Thinking y casos de uso.
Javier Santos Criado
Consultor de IA y Automatización | Fundador de Javadex
Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.
¿Quieres más contenido de IA?
Explora nuestras comparativas y guías