n8n-nodes-wachat
v0.4.0
Published
Nodo de n8n para WaChat: envía mensajes de WhatsApp y gestiona conversaciones (asignar agente, fila, estado, etapa de pipeline) desde tus automatizaciones.
Maintainers
Readme
n8n-nodes-wachat
Nodo comunitario de n8n para WaChat: envía mensajes de WhatsApp (texto, archivos y botones) y publica estados desde tus automatizaciones, usando una conexión que ya tienes configurada en tu cuenta.
Todo lo que envíes con este nodo queda guardado en el chat de WaChat y es visible para tus asesores, igual que si lo hubieran escrito ellos.
Instalación
En n8n: Settings → Community nodes → Install, e ingresa:
n8n-nodes-wachatCredencial
Crea una credencial WaChat API con:
| Campo | Valor |
|---|---|
| URL de WaChat | La dirección de tu WaChat, ej. https://app.wachat.cc |
| Token API | El token de tu empresa: Configuración → API / Integración |
| ID de conexión | El ID de la conexión de WhatsApp desde la que se envían los mensajes: Configuración → Conexiones |
Usa el botón de test de la credencial para comprobar que funciona antes de armar el flujo.
La conexión queda fija en la credencial, no se elige en el nodo. Si necesitas enviar desde distintas conexiones, crea una credencial WaChat API por cada una (mismo token de empresa, distinto ID de conexión) y usa la que corresponda en cada nodo.
Operaciones
Elige la credencial (define la conexión) y la operación. El número va con código de país y sin
+, ej. 593991234567.
Enviar Texto
Un mensaje de texto simple.
Enviar Archivo
Documento, imagen, video, audio o sticker. Dos orígenes:
- URL — WaChat descarga el archivo. Debe ser una URL pública: por seguridad se rechazan
direcciones de red interna (
localhost, IPs privadas). Si no indicas nombre o tipo, se deducen de la URL. - Binario — toma el archivo de la propiedad binaria del ítem de entrada (p. ej. la salida de un nodo HTTP Request o Google Drive).
Enviar Botones
Hasta 3 botones: respuesta rápida, abrir URL, llamar o copiar.
Solo funciona en conexiones WhatsApp Plus. En una conexión WhatsApp (QR) la API responde con un error explicando esto, porque ese tipo de botones no se ve correctamente en muchos teléfonos y el cliente recibiría un mensaje roto.
Publicar Estado de WhatsApp
Publica un estado (la historia de 24 horas) en la conexión de la credencial. Lo ven los contactos que tienen guardado el número; no envía mensajes a nadie, así que no tiene el riesgo de bloqueo de una campaña. No pide número de destino.
- Texto — hasta 700 caracteres.
- Imagen o Video — con descripción opcional. El archivo puede venir de una URL (lo descarga n8n) o de la propiedad binaria del ítem de entrada. Máximo 16 MB para imágenes y 64 MB para videos. El formato ideal es vertical 9:16 (1080×1920).
Solo funciona en conexiones WhatsApp Plus. En una conexión WhatsApp (QR) la API responde con un error.
Ejemplo: un Schedule Trigger todos los lunes a las 9:00 → Google Drive (descarga la imagen de la promo) → WaChat · Publicar Estado de WhatsApp con origen Binario.
Gestión de conversaciones (Asignar, Fila, Estado, Pipeline)
Estas 4 operaciones no envían un mensaje — modifican una conversación (ticket) ya existente en WaChat: a quién está asignada, en qué fila, en qué estado, o en qué etapa de un embudo de ventas. Útil, por ejemplo, después de que tu propio flujo de n8n resolvió una solicitud (agendó una cita, generó una cotización) y quieres que el chat pase a un asesor humano, o marcarlo directamente como resuelto.
Todas piden un ID de conversación, no un número de teléfono. Si tu flujo arranca desde el
webhook de eventos de WaChat (Configuración → Conexiones → tu conexión → n8n), ese ID viene
en el payload como ticket.id — usa la expresión {{ $json.data.ticket.id }} en el campo.
Asignar a Agente
Asigna el chat a un asesor. Opcionalmente, activando También Mover a Fila, lo reubica en una fila al mismo tiempo — así el asesor destino puede verlo aunque no tuviera acceso a la fila anterior.
Asignar Fila
Mueve el chat a otra fila de atención, sin tocar a quién está asignado.
Cambiar Estado
Marca el chat como Abierto, Pendiente o Resuelto — las mismas 3 pestañas que ve un asesor en WaChat.
Cambiar Etapa De Pipeline
Mueve el chat a otra etapa de un embudo de ventas. Elige primero el Pipeline, y el desplegable de Etapa se llena con las etapas configuradas en ese embudo específico (en el orden en que están definidas, no alfabético).
Ejemplo
examples/badent-flow.json reproduce un caso real: saludo → PDF por URL → botones. Impórtalo en
n8n (Workflows → Import from File), asigna tu credencial en cada nodo y ejecútalo.
Migración desde n8n-nodes-whazing
| | whazing | wachat |
|---|---|---|
| Nodo | whazing | waChat |
| Credencial | una por conexión | una por conexión (URL + token de empresa + ID de conexión) |
| Conexión | implícita en la credencial | implícita en la credencial |
| Texto | number, body | igual |
| Archivo | sendFile con fileType: url | igual, más el campo kind (por defecto document) |
| Botones | resource: apiPlus, buttons[].title | operación sendButtons, buttons[].text (title → text) |
| Resultado | — | { id, messageId, conversationId } |
Dos diferencias que conviene tener presentes:
- Los envíos ahora abren ticket. Cada mensaje crea o reabre la conversación del contacto y la deja en Abiertos, siguiendo las reglas de asignación (fila/asesor) de esa conexión. Es intencional —así el asesor ve el historial completo—, pero cambia el volumen de tu bandeja.
- En archivos,
idviene vacío. El envío de media es asíncrono y durable: la fila se encola y se sube en segundo plano. El estado final llega al chat por sí solo; usaconversationId/messageIdsi necesitas correlacionar.
Contrato de la API
Enviar mensajes (sendText/sendFile/sendButtons) usa POST /api/sessions/{conexión}/messages.
Gestionar conversaciones usa cuatro endpoints propios bajo /api/crm/conversations/{id}/...
(assign, fila, status, stage). Ambos grupos se autentican igual, con
Authorization: Bearer <token> — el token de empresa de Configuración → API / Integración
sirve para los dos. Los endpoints de mensajería están documentados ahí mismo dentro de WaChat, con
ejemplos de cURL equivalentes a cada operación.
Licencia
MIT
