Inicio/Blog/Crear Chatbot WhatsApp con n8n Gratis: Tutorial Completo [2026]
Volver al Blog
Automatización2 de febrero de 202618 min

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

  1. Cuenta de WhatsApp Business (gratis)
  2. Cuenta de Meta for Developers (gratis)
  3. n8n instalado (self-hosted o cloud)
  4. API key de OpenAI o Anthropic
  5. Dominio con HTTPS (para webhooks)

Paso 1: Configurar WhatsApp Business API

1.1 Crear App en Meta for Developers

  1. Ve a developers.facebook.com
  2. Crea una nueva app → "Business" → "WhatsApp"
  3. Anota tu Phone Number ID y Access 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.

code
1Phone Number ID: 1234567890
2Access 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)

bash
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

bash
1npm install -g n8n
2n8n 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

  1. Añade nodo "Webhook"
  2. Configura:

- HTTP Method: POST

- Path: /whatsapp-webhook

  1. Copia la URL del webhook

3.2 Configurar Webhook en Meta

  1. Ve a tu app en Meta for Developers
  2. WhatsApp → Configuration → Webhook
  3. Callback URL: https://tu-dominio.com/webhook/whatsapp-webhook
  4. Verify Token: Un string secreto que tú elijas
  5. Suscríbete a messages

3.3 Nodo 2: Extraer Mensaje

Añade nodo "Set" para extraer datos del mensaje:

javascript
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":

code
1Model: gpt-4o
2Messages:
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":

code
1Method: POST
2URL: https://api.anthropic.com/v1/messages
3Headers:
4 - x-api-key: tu-api-key
5 - anthropic-version: 2024-01-01
6 - content-type: application/json
7Body:
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:

code
1Method: POST
2URL: https://graph.facebook.com/v18.0/{{ $env.PHONE_NUMBER_ID }}/messages
3Headers:
4 - Authorization: Bearer {{ $env.WHATSAPP_TOKEN }}
5 - Content-Type: application/json
6Body:
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:

sql
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":

sql
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:

sql
1SELECT role, content
2FROM conversations
3WHERE phone = '{{ $json.from }}'
4ORDER BY created_at DESC
5LIMIT 10

4.4 Incluir en Prompt

Formatea el historial para el modelo:

javascript
1const history = items.map(item => ({
2 role: item.json.role === 'user' ? 'user' : 'assistant',
3 content: item.json.content
4})).reverse();
5 
6return { messages: history };

Paso 5: Añadir Funcionalidades Avanzadas

5.1 Escalado a Humanos

Detecta cuando el bot no puede ayudar:

javascript
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

javascript
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 && isWeekday
10 ? null
11 : "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:

json
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

json
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

code
1┌─────────────┐
2│ Webhook │ ← Mensaje de WhatsApp
3└─────┬───────┘
4
5┌─────────────┐
6│ Extraer │
7│ Datos │
8└─────┬───────┘
9
10┌─────────────┐
11│ Cargar │
12│ Historial │ ← PostgreSQL
13└─────┬───────┘
14
15┌─────────────┐
16│ Verificar │
17│ Escalado │ ──► [Si escalado] ──► Notificar Humano
18└─────┬───────┘
19
20┌─────────────┐
21│ Procesar │
22│ con IA │ ← OpenAI/Claude
23└─────┬───────┘
24
25┌─────────────┐
26│ Guardar │
27│ Respuesta │ → PostgreSQL
28└─────┬───────┘
29
30┌─────────────┐
31│ Enviar │
32│ WhatsApp │ → API de WhatsApp
33└─────────────┘

Costos Estimados

ComponenteCosto
WhatsApp Business API1000 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
Total para pequeño negocio: ~$15-30/mes

Troubleshooting

"Webhook verification failed"

  1. Verifica que el Verify Token coincide
  2. Asegúrate de que n8n responde con el challenge correcto
  3. Comprueba que tu URL es HTTPS

"Message not delivered"

  1. Verifica que el número está en formato correcto (con código país)
  2. Comprueba que el Access Token no ha expirado
  3. 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:

  1. Mejora el prompt del sistema para tu caso específico
  2. Añade más integraciones (CRM, calendario, etc.)
  3. Implementa análisis de sentimiento
  4. Crea flujos específicos por tipo de consulta

Recursos relacionados:

Posts Relacionados

JS

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