ChatCieloDocs

Crear un Proyecto en N8N

Tutorial paso a paso para crear un workflow en N8N con Webhook POST, procesar mensajes y responder a ChatCielo

Crear un Proyecto en N8N

Tutorial paso a paso:

Cómo crear un workflow en N8N y obtener un Webhook POST con integración a ChatCielo (WhatsApp).

Al finalizar este tutorial tendrás un workflow funcional en N8N que recibe mensajes de ChatCielo, los procesa y responde de vuelta al cliente en WhatsApp. Tiempo estimado: 15–20 minutos.

Requisitos previos

  • Cuenta en N8N (n8n.cloud o instancia propia). Si no tienes una, crea una en n8n.io.
  • Un canal activo en ChatCielo (WhatsApp QR u oficial WABA) con permisos para configurar automatizaciones.
  • Un número de WhatsApp externo para pruebas (tu propio celular).

Paso 1 — Crear el workflow en N8N

Crea un nuevo workflow

  1. Entra a tu instancia de N8N y haz clic en + Create Workflow o Add Workflow.
  2. Asigna un nombre descriptivo, por ejemplo ChatCielo - Atención WhatsApp.
  3. Haz clic en + Add first step para agregar el primer nodo.
Crear nuevo workflow en N8N

Paso 2 — Agregar el nodo Webhook (POST)

Configura el nodo Webhook como disparador

  1. Busca y selecciona el nodo Webhook.
  2. Configura los siguientes campos:
CampoValorNotas
HTTP MethodPOSTChatCielo siempre envía POST
Pathchatcielo-entradaPuedes usar el nombre que prefieras; será parte de la URL
Response ModeResponse Node o Respond to WebhookTe permite controlar la respuesta manualmente
AuthenticationNone para pruebas; Header Auth para producciónEn producción, protege con header secreto
  1. Haz clic en Execute Node o guarda el workflow para que N8N genere la Webhook URL.

La URL se verá así:

https://tu-instancia.n8n.cloud/webhook/chatcielo-entrada

o en versión de prueba:

https://tu-instancia.n8n.cloud/webhook-test/chatcielo-entrada

Importante: la URL con /webhook-test/ solo funciona mientras el workflow está en modo Test / Execute. Para producción, usa la URL con /webhook/ y activa el workflow (toggle Active en N8N).

Configuración del nodo Webhook en N8N

Paso 3 — Agregar nodo Set / Code para procesar el mensaje

Extrae y transforma los datos del mensaje

Agrega un nodo Set (o Code si necesitas lógica avanzada) después del Webhook.

Opción A — Nodo Set (simple, sin código):

Configura los campos a extraer del payload de ChatCielo:

Campo en N8NValor (expresión)Descripción
phoneNumber={{ $json.phoneNumber }}Número del cliente
name={{ $json.name }}Nombre del contacto
protocol={{ $json.protocol }}Protocolo de la atención
messageText={{ $json.message.text }}Texto del mensaje
channelId={{ $json.channelId }}Canal de origen

Opción B — Nodo Code (lógica avanzada):

// Nodo Code en N8N — extrae datos y genera respuesta personalizada
const body = $input.first().json;
 
const name = body.name || body.pushName || 'amigo';
const phoneNumber = body.phoneNumber;
const protocol = body.protocol;
const text = (body.message?.text || '').toLowerCase();
 
let reply = '';
 
if (text.includes('precio') || text.includes('cotización') || text.includes('cuánto cuesta')) {
  reply = `¡Hola ${name}! 👋 Te preparo la cotización en un momento. Tu protocolo es ${protocol} — un asesor te contactará con los detalles.`;
} else if (text.includes('pedido') || text.includes('estado') || text.includes('envío')) {
  reply = `Hola ${name}, consulto el estado de tu pedido. Protocolo ${protocol} — dame un momento y te confirmo. 📦`;
} else if (text.includes('hablar con asesor') || text.includes('asesor humano')) {
  reply = `Perfecto ${name}, te derivo con un asesor humano ahora. Protocolo ${protocol}.`;
} else {
  reply = `¡Hola ${name}! Gracias por escribirnos. ¿En qué puedo ayudarte hoy? (Protocolo ${protocol})`;
}
 
return [{ reply, phoneNumber, protocol, name }];

Usa Set para flujos simples (extraer y reenviar) y Code cuando necesites condiciones, consultas a APIs o lógica de negocio.

Paso 4 — Responder a ChatCielo

Tienes dos opciones para devolver la respuesta al cliente. Elige una:

Ideal para respuestas inmediatas dentro del ciclo del webhook.

  1. Agrega un nodo Respond to Webhook al final del workflow.
  2. Configura:
CampoValor
Respond WithJSON
Response Body={{ JSON.stringify({ reply: $json.reply }) }}
Response Code200

O con JSON estático:

{
  "reply": "¡Hola {{name}}! Tu pedido está en camino. 🚚"
}

ChatCielo recibirá este JSON y enviará el campo reply al cliente en WhatsApp automáticamente.

El nodo Respond to Webhook debe responder en menos de 10 segundos. Si tu flujo consulta un ERP lento, usa la Opción B para responder de forma asíncrona.

Paso 5 — Probar con cURL

Antes de vincular en ChatCielo, prueba tu workflow directamente con cURL para asegurarte de que responde correctamente.

Activa el modo de prueba en N8N

En N8N, haz clic en Execute Workflow (o Listen for Test Event si usas /webhook-test/). El workflow quedará esperando un POST.

Envía un POST de prueba con cURL

Abre tu terminal y ejecuta:

curl -X POST https://tu-instancia.n8n.cloud/webhook-test/chatcielo-entrada \
  -H "Content-Type: application/json" \
  -d '{
    "event": "message.received",
    "channelId": "12",
    "protocol": "48291",
    "phoneNumber": "+54 11 1234 5678",
    "name": "María González",
    "email": "maria@ejemplo.com",
    "pushName": "María",
    "message": {
      "id": "wamid.test123",
      "type": "text",
      "text": "Hola, quiero saber el precio del producto",
      "timestamp": "2026-05-13T14:30:00Z"
    }
  }'

Respuesta esperada (Opción A):

{
  "reply": "¡Hola María González! 👋 Te preparo la cotización en un momento. Tu protocolo es 48291 — un asesor te contactará con los detalles."
}

Si recibes el reply correctamente, tu workflow está listo.

Prueba con distintos mensajes para validar cada rama de tu lógica: "precio", "pedido", "hablar con asesor" y un mensaje genérico.

Activa el workflow para producción

En N8N, cambia la URL de /webhook-test/ a /webhook/ y activa el toggle Active (arriba a la derecha). El workflow quedará escuchando permanentemente.

Paso 6 — Vincular en ChatCielo

Pega la Webhook URL en ChatCielo

  1. Ve a Canales > Tu canal > Integración / Automatización > N8N (Webhook).
  2. Pega la Webhook URL de producción (con /webhook/, no /webhook-test/):
https://tu-instancia.n8n.cloud/webhook/chatcielo-entrada
  1. Selecciona Método: POST y Evento: Mensaje entrante.
  2. Si protegiste el webhook con Header Auth, agrega el header correspondiente.
  3. Haz clic en Guardar.

Prueba de punta a punta

  1. Desde tu celular personal, envía un mensaje de WhatsApp al número conectado al canal.
  2. Verifica que N8N registre la ejecución en Executions (panel lateral de N8N).
  3. Confirma que el cliente reciba la respuesta en WhatsApp.
  4. Revisa en ChatCielo Atenciones > Panel de Chats que la conversación y el protocolo {{protocol}} se hayan registrado correctamente.

Monitorea y ajusta

  • En N8N ve a Executions para ver cada ejecución, payload recibido y respuesta enviada.
  • Si algo falla, revisa el Error Workflow en N8N y los logs de ejecución.
  • Ajusta tu lógica (nodos Code, condiciones, integraciones CRM) y vuelve a probar con cURL antes de actualizar en producción.

Ejemplo completo — Workflow mínimo funcional

[Webhook POST /chatcielo-entrada]

[Set] Extrae: phoneNumber, name, protocol, messageText

[Code] Lógica: if/else según messageText → genera reply

[Respond to Webhook] → { "reply": "Hola {{name}}, ..." }

Para flujos avanzados, inserta entre Set y Respond nodos como:

  • HTTP Request → consulta tu ERP, CRM o API interna
  • OpenAI / Claude → clasifica intención o genera respuesta con IA
  • Google Sheets → registra el contacto
  • IF / Switch → deriva según condiciones
  • Wait → programa follow-up

¿Necesitas inspiración para tu caso? Revisa la visión general de N8N con ejemplos de CRM, cotización automática y lead scoring.

Solución de problemas

ProblemaCausaSolución
404 Not Found al hacer POSTURL con /webhook-test/ sin estar en modo TestUsa /webhook/ y activa el workflow (toggle Active).
No llega respuesta al clienteNodo Respond to Webhook mal configuradoVerifica que el nodo devuelva 200 con JSON { "reply": "..." }.
Timeout / sin respuestaFlujo tarda más de 10 sResponde inmediato con "Un momento..." y usa HTTP Request asíncrono (Opción B).
Variables {{name}} vacíasContacto sin nombreUsa fallback: body.name || body.pushName || 'amigo'.
Webhook recibe pero no ejecutaWorkflow inactivoActiva el toggle Active en N8N.
Error de autenticaciónHeader Auth incorrectoVerifica que el header en ChatCielo coincida con el configurado en el nodo Webhook.