Backend y base de datos
Integrar WhatsApp con Supabase
Supabase es una plataforma de backend open source construida sobre PostgreSQL. Entrega base de datos relacional, autenticación, almacenamiento de archivos, APIs REST y GraphQL automáticas, realtime y las Edge Functions, que son funciones serverless en Deno con un timeout de cerca de 60 segundos. Es la elección común de quien quiere levantar un backend completo sin administrar servidores, usando SQL de verdad y triggers en la propia base para reaccionar a eventos de datos.
Por qué conectar
Quien usa Supabase guarda todo en Postgres: registros, pedidos, citas, estado de pagos. El problema es avisar al cliente por WhatsApp cuando algo cambia. Al conectar Supabase con ZapZap API, envías el mensaje desde dentro de tu propio backend. Un ejemplo concreto: cuando una fila entra a la tabla pedidos con estado confirmado, un trigger de base de datos llama a una Edge Function que envía la confirmación al WhatsApp del cliente al instante. Nada de revisar hojas de cálculo ni pegar números a mano. Como ZapZap API usa instancias administradas con calentamiento en comunidad y una capa anti-bloqueo, reduces el riesgo de que la cuenta caiga en envíos automáticos, y además tienes IA por instancia para responder las respuestas del cliente sin salir del flujo.
Paso a paso
- 1
Obtén tus claves en ZapZap API
En el panel de ZapZap API, activa un número (R$15/mes, prepago, con crédito de bienvenida al crear la cuenta, sujeto a la campaña vigente) y copia el x-api-key y el x-api-secret de la instancia. Guarda la base de la API: https://api.zapzapapi.com. Los campos exactos de cada ruta están en la doc en https://api.zapzapapi.com/llms.txt.
- 2
Crea una Edge Function en Supabase
En el dashboard de Supabase, ve a Edge Functions y haz clic en Deploy a new function, o ejecuta en la terminal: supabase functions new enviar-whatsapp. Esto genera el archivo index.ts en supabase/functions/enviar-whatsapp/ escrito en Deno/TypeScript.
- 3
Guarda las claves como Secrets
En Edge Functions, pestaña Secrets (o por CLI: supabase secrets set ZAPZAP_KEY=... ZAPZAP_SECRET=...). Nunca dejes x-api-key y x-api-secret en el código. Dentro de la función léelas con Deno.env.get('ZAPZAP_KEY').
- 4
Haz el fetch a ZapZap API dentro de la función
En index.ts, usa el fetch nativo de Deno para llamar a https://api.zapzapapi.com con los encabezados x-api-key y x-api-secret, enviando número y texto en el cuerpo. Haz el deploy con supabase functions deploy enviar-whatsapp. Revisa la ruta y los nombres exactos de los campos en https://api.zapzapapi.com/llms.txt.
- 5
Dispáralo con un trigger de base de datos
En Database, crea una función con SQL y un trigger AFTER INSERT en tu tabla. Usa la extensión pg_net (supabase_functions.http_request) o el wrapper net.http_post para llamar a la URL de tu Edge Function cada vez que entre una fila nueva. Así WhatsApp sale automático con cada nuevo registro en Postgres.
Ejemplo
// Edge Function (Deno) en Supabase: supabase/functions/enviar-whatsapp/index.ts
// Ejemplo ILUSTRATIVO. Revisa ruta y campos exactos en https://api.zapzapapi.com/llms.txt
Deno.serve(async (req) => {
const { number, text } = await req.json();
const resp = await fetch("https://api.zapzapapi.com/api/v1/{instanceId}/send/text", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": Deno.env.get("ZAPZAP_KEY")!,
"x-api-secret": Deno.env.get("ZAPZAP_SECRET")!,
},
body: JSON.stringify({ number, text }),
});
return new Response(await resp.text(), { status: resp.status });
});Ilustrativo. Los campos y endpoints exactos están en la documentación.
Preguntas frecuentes
¿Necesito la API oficial de WhatsApp para usarla con Supabase?
No. ZapZap API funciona con instancias administradas de WhatsApp, así que no necesitas pasar por la aprobación de la API oficial ni armar plantillas. Basta con activar un número y usar tus claves x-api-key y x-api-secret dentro de la Edge Function.
¿Se puede enviar WhatsApp directo desde un trigger de Postgres?
Sí. Creas un trigger AFTER INSERT o AFTER UPDATE que llama a una Edge Function mediante pg_net (net.http_post), y esa función hace el fetch a ZapZap API. El envío ocurre en el mismo momento en que cambia el dato en la base.
¿El timeout de 60s de las Edge Functions estorba el envío?
No para un envío simple, que responde en pocos segundos. Si necesitas enviar muchos mensajes de una vez, divídelos en lotes o usa una cola con pg_cron llamando a la función a intervalos, para no superar el límite de la Edge Function.
¿Cómo recibo las respuestas del cliente en Supabase?
ZapZap API envía webhooks por evento. Apunta el webhook de mensaje recibido a otra Edge Function pública de Supabase, que guarda la respuesta en una tabla de Postgres. Los eventos y el formato del payload están documentados en https://api.zapzapapi.com/llms.txt.
¿Enviar mensajes automáticos desde Supabase puede bloquear mi número?
Todo envío automático tiene riesgo. ZapZap API usa calentamiento en comunidad y una capa anti-bloqueo para reducir el riesgo, pero evita un volumen alto de una vez, personaliza los mensajes y respeta los intervalos entre envíos.
Empieza ahora
Crea tu cuenta, conecta un número en minutos y prueba la API con calentamiento y anti-bloqueo. R$15 por número activo/mes, prepago, sin permanencia.
