Backend e banco de dados

Integrar WhatsApp com Supabase

O Supabase é uma plataforma de backend open source construída sobre PostgreSQL. Ele entrega banco de dados relacional, autenticação, storage de arquivos, APIs REST e GraphQL automáticas, realtime e as Edge Functions, que são funções serverless em Deno com timeout de cerca de 60 segundos. É a escolha comum de quem quer subir um backend completo sem gerenciar servidor, usando SQL de verdade e triggers no próprio banco para reagir a eventos de dados.

Por que conectar

Quem usa Supabase guarda tudo no Postgres: cadastros, pedidos, agendamentos, status de pagamento. O problema é avisar o cliente no WhatsApp quando algo muda. Conectando o Supabase à ZapZap API, você dispara a mensagem de dentro do próprio backend. Um exemplo concreto: quando uma linha entra na tabela pedidos com status confirmado, uma trigger de banco chama uma Edge Function que envia a confirmação no WhatsApp do cliente na hora. Nada de checar planilha ou colar número manualmente. Como a ZapZap API usa instâncias gerenciadas com aquecimento em comunidade e camada de anti-bloqueio, você reduz o risco de a conta ser derrubada em disparos automáticos, e ainda tem IA por instância para responder respostas do cliente sem sair do fluxo.

Passo a passo

  1. 1

    Pegue suas chaves na ZapZap API

    No painel da ZapZap API, ative um número (R$15/mês, pré-pago, com crédito grátis para testar) e copie o x-api-key e o x-api-secret da instância. Guarde a base da API: https://api.zapzapapi.com. Os campos exatos de cada rota estão na doc em https://api.zapzapapi.com/llms.txt.

  2. 2

    Crie uma Edge Function no Supabase

    No dashboard do Supabase, vá em Edge Functions e clique em Deploy a new function, ou rode no terminal: supabase functions new enviar-whatsapp. Isso gera o arquivo index.ts em supabase/functions/enviar-whatsapp/ escrito em Deno/TypeScript.

  3. 3

    Guarde as chaves como Secrets

    Em Edge Functions, aba Secrets (ou via CLI: supabase secrets set ZAPZAP_KEY=... ZAPZAP_SECRET=...). Nunca deixe x-api-key e x-api-secret no código. Dentro da function leia com Deno.env.get('ZAPZAP_KEY').

  4. 4

    Faça o fetch para a ZapZap API dentro da function

    No index.ts, use fetch nativo do Deno para chamar https://api.zapzapapi.com com os headers x-api-key e x-api-secret, mandando número e texto no corpo. Faça o deploy com supabase functions deploy enviar-whatsapp. Confira a rota e os nomes exatos dos campos em https://api.zapzapapi.com/llms.txt.

  5. 5

    Dispare por trigger de banco

    Em Database, crie uma função com SQL e uma trigger AFTER INSERT na sua tabela. Use a extensão pg_net (supabase_functions.http_request) ou o wrapper net.http_post para chamar a URL da sua Edge Function sempre que uma linha nova entrar. Assim o WhatsApp sai automático a cada novo registro no Postgres.

Exemplo

// Edge Function (Deno) no Supabase: supabase/functions/enviar-whatsapp/index.ts
// Exemplo ILUSTRATIVO. Confira rota e campos exatos em https://api.zapzapapi.com/llms.txt

Deno.serve(async (req) => {
  const { numero, texto } = 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({ numero, mensagem: texto }),
  });

  return new Response(await resp.text(), { status: resp.status });
});

Ilustrativo. Os campos e endpoints exatos estão na documentação.

Perguntas frequentes

Preciso da API oficial do WhatsApp para usar com o Supabase?

Não. A ZapZap API funciona com instâncias gerenciadas do WhatsApp, então você não precisa passar pela aprovação da API oficial nem montar templates. Basta ativar um número e usar suas chaves x-api-key e x-api-secret dentro da Edge Function.

Dá pra enviar WhatsApp direto de uma trigger do Postgres?

Sim. Você cria uma trigger AFTER INSERT ou AFTER UPDATE que chama uma Edge Function via pg_net (net.http_post), e essa function faz o fetch para a ZapZap API. O disparo acontece no mesmo momento em que o dado muda no banco.

O timeout de 60s das Edge Functions atrapalha o envio?

Não para um envio simples, que responde em poucos segundos. Se precisar disparar muitas mensagens de uma vez, quebre em lotes ou use uma fila com pg_cron chamando a function em intervalos, para não estourar o limite da Edge Function.

Como recebo as respostas do cliente no Supabase?

A ZapZap API envia webhooks por evento. Aponte o webhook de mensagem recebida para outra Edge Function pública do Supabase, que grava a resposta numa tabela do Postgres. Os eventos e o formato do payload estão documentados em https://api.zapzapapi.com/llms.txt.

Enviar mensagens automáticas pelo Supabase pode bloquear meu número?

Todo disparo automático tem risco. A ZapZap API usa aquecimento em comunidade e uma camada de anti-bloqueio para reduzir o risco, mas evite volume alto de uma vez, personalize as mensagens e respeite intervalos entre envios.

Comece com crédito grátis

Crie sua conta, conecte um número em minutos e teste a API com aquecimento e anti-bloqueio. R$15 por número ativo/mês, pré-pago, sem fidelidade.