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)
- Servidor para tener el bot 24/7 — un mini PC como el Blackview MP50 con 32 GB consume menos de 15W y es perfecto para n8n self-hosted, o un VPS si prefieres no tener hardware en casa
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 |
| Mini PC propio | ~250 EUR (pago único) |
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:
¿Listo para poner tu proyecto en producción?
Si estás siguiendo este tutorial, necesitas un servidor donde desplegarlo. Yo uso Hostinger para mis proyectos porque el panel es intuitivo, los VPS van con SSD NVMe, y a 4,99€/mes no hay nada comparable en relación calidad-precio.
* Enlace de afiliado. Si contratas a través de este enlace, nos ayudas a mantener este contenido gratuito.
Posts Relacionados
Consultoría IA en San Sebastián (Donostia): Agentes, Automatización y Modelos Privados para Empresas [2026]
Guía completa de servicios de inteligencia artificial en San Sebastián: agentes IA, automatización, modelos privados y consultoría para empresas vascas en 2026.
Kit Digital 2026 para IA: Cómo Solicitar Hasta 12.000€ para tu PYME Paso a Paso
Tutorial paso a paso para solicitar el Kit Digital 2026 con soluciones de IA. Requisitos, cuantías por segmento (hasta 12.000€), agentes digitalizadores y errores que rechazan tu solicitud.
Formación en Claude Code para Empresas en España: Proveedores, Precios y Qué Esperar [2026]
Guía de formación en Claude Code para empresas españolas: proveedores, precios (desde 4.000€), programas in-company, duración y resultados esperados.
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.
Lleva tu proyecto a producción
Hosting web desde 2,99€/mes o VPS con SSD NVMe desde 4,99€/mes. Panel intuitivo, IP dedicada y soporte 24/7 en español.
¿Quieres más contenido de IA?
Explora nuestras comparativas y guías