Migrar de WAHA a ZapZap: guía de migración (incluye n8n)
Migrar de WAHA a ZapZap cambia un contenedor que mantienes por un servicio gestionado. En el código, cambia la dirección de envío (de /api/sendText a /api/v1/{instanceId}/send/text), la autenticación (de X-Api-Key a x-api-key y x-api-secret) y el formato del webhook. Los datos sobre WAHA vienen de su documentación oficial, leída el 27/10/2026.
Publicado el · 4 min de lectura
Este artículo también está disponible en: Português · English
Qué cambia al salir de WAHA
WAHA es una API HTTP no oficial que corres en Docker; el sitio del proyecto la describe como gratuita y de código abierto. Tú eliges el motor de conexión (WEBJS, NOWEB, GOWS), el servidor y cuándo actualizar. La documentación del propio WAHA advierte que WhatsApp no permite bots ni clientes no oficiales y que eso puede llevar a un bloqueo.
En ZapZap, alojamiento, actualización y monitoreo quedan con nosotros, el cobro es de R$15 por número activo al mes y el riesgo del número sigue existiendo, porque también es una solución no oficial. A cambio, pierdes el control del servidor y del motor.
Mapa de endpoints: WAHA a ZapZap
La columna de WAHA viene de la documentación oficial (waha.devlike.pro, 27/10/2026). WAHA usa session y un chatId con sufijo (@c.us); ZapZap usa el ID de la instancia en la URL y el número solo con dígitos.
| Acción | WAHA | ZapZap |
|---|---|---|
| Autenticación | encabezado X-Api-Key | x-api-key y x-api-secret |
| Enviar texto | POST /api/sendText con session, chatId (por ejemplo 5511999999999@c.us) y text | POST /api/v1/{instanceId}/send/text con number (5511999999999) y text |
| Enviar archivo | endpoints por tipo de multimedia | POST /api/v1/{instanceId}/send/media con type, file, text y docName |
| Sesión | session (por ejemplo default) | instancia, con ID propio |
| Recibir mensaje | evento message con payload.from, payload.body, payload.fromMe | evento messages con data.message.chatid, data.message.text, data.message.fromMe |
| Conectar | código QR de la sesión | código QR en QR de la instancia |
Cómo cambiar el nodo de WAHA en n8n
Si tu flujo usa el nodo de WAHA o un HTTP Request apuntando a WAHA, el cambio es directo. Instala el nodo de la comunidad n8n-nodes-zapzap en Settings, Community Nodes (los nodos de la comunidad no verificados solo funcionan en n8n autoalojado, según la documentación de n8n) o usa un HTTP Request con los encabezados x-api-key y x-api-secret. Paso a paso en la integración con n8n.
En el disparador de recepción, cambia el Webhook de WAHA por el Webhook de n8n con la URL de producción (no la de prueba) y configura esa URL en configurar webhook. En los nodos siguientes, ajusta las expresiones: donde había payload.from y payload.body, pasa a usar data.message.chatid y data.message.text. Las 12 plantillas de n8n ya vienen en el formato de ZapZap.
n8n: Code node para normalizar o evento
// Entrada: evento da ZapZap. Saída: o formato que seus nós já esperavam do WAHA.
const e = $input.first().json.body ?? $input.first().json;
const m = e?.data?.message;
if (e?.event !== "messages" || !m || m.fromMe) return [];
return [{
json: {
payload: {
from: String(m.chatid || "").replace(/\D/g, "") + "@c.us",
body: m.text || "",
fromMe: false,
},
},
}];Cómo cambiar el envío en el código
El envío es un cambio de URL, encabezados y campos: session y el chatId con @c.us pasan a ser el ID de la instancia en la URL y un number solo con dígitos. Aísla el envío en una función y cambia su contenido.
Node.js
// ANTES: WAHA
// POST {WAHA_URL}/api/sendText header: X-Api-Key
// body: { session: "default", chatId: "5511999999999@c.us", text: "Olá!" }
// DEPOIS: ZapZap
export async function enviarWhatsApp(numero, texto) {
const r = await fetch(
"https://api.zapzapapi.com/api/v1/" + process.env.ZAPZAP_INSTANCE_ID + "/send/text",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.ZAPZAP_API_KEY,
"x-api-secret": process.env.ZAPZAP_API_SECRET,
},
body: JSON.stringify({ number: numero.replace(/@.*/, ""), text: texto }),
signal: AbortSignal.timeout(15000),
}
);
if (!r.ok) throw new Error("ZapZap " + r.status + " " + (await r.text()));
return r.json();
}Lista de cambio y cuándo seguir en WAHA
Lista: 1) crear la cuenta y probar con un número tuyo; 2) cambiar la función de envío o el nodo de n8n; 3) apuntar el webhook y validar la firma (guía); 4) exportar lo que quieras guardar de WAHA; 5) conectar el número de producción por código QR en el momento del cambio, sin mantenerlo activo en los dos; 6) apagar el contenedor antiguo tras unos días estables.
Sigue en WAHA si tienes DevOps, quieres el código y los datos en tu entorno y prefieres elegir el motor de conexión. Mira la comparativa WAHA y ZapZap y la cuenta de costos en Evolution y WAHA alojados frente a gestionada. Si necesitas un canal homologado por Meta, la opción es la API oficial.
Resumen rápido
- En el código cambian la URL, la autenticación y el formato del webhook; session y chatId pasan a instancia y número.
- En n8n, cambia el nodo y ajusta las expresiones payload.from y payload.body a data.message.
- Los dos son no oficiales: el riesgo de bloqueo del número existe en ambos lados.
- Usa la URL de producción del webhook de n8n, no la de prueba.
Sigue leyendo
Lee también
Preguntas frecuentes
¿Mis plantillas de n8n de WAHA funcionan en ZapZap?
Con ajustes. Cambia el nodo de envío y las expresiones del evento recibido (payload.from y payload.body pasan a data.message.chatid y data.message.text). Las plantillas de ZapZap ya vienen listas.
¿WAHA Plus cambia algo?
Según la documentación de WAHA leída el 27/10/2026, funciones que eran de WAHA Plus pasaron a formar parte del Core desde la versión 2026.6.1. Revisa de nuevo la documentación, porque puede cambiar.
¿Necesito mantener el servidor de WAHA?
Solo durante la transición. Tras unos días estables en ZapZap puedes apagar el contenedor. Exporta antes lo que quieras guardar.
¿ZapZap garantiza que el número no será bloqueado?
No. Ninguna API no oficial puede garantizarlo. El retraso y el escribiendo automáticos reducen el riesgo, pero opt-in, ritmo y lista limpia siguen siendo tuyos.
Prueba ZapZap con tu flujo
Crea la cuenta, conecta un número de prueba y cambia el nodo. R$15 por número activo al mes, sin cobro por mensaje.
