Automações

Executa consultas SQL em PostgreSQL via conexão ou proxy HTTP.

Nó Postgres

O nó de workflow Postgres (postgres_request) executa consultas SQL em um banco PostgreSQL por meio de um proxy HTTP seguro. A WhatsWave não abre conexão TCP direta com o seu banco — você expõe uma API pequena (ou usa uma existente) que aceita SQL e retorna JSON.

ID do nó no editor: postgres_request
Executor: http_request (HTTP genérico com templates específicos do Postgres)

O que faz

A cada execução, o engine:

  1. Resolve placeholders {{variable}} em URL, headers e body
  2. Envia um POST (ou método configurado) para o endpoint do proxy Postgres
  3. Faz parse da resposta JSON quando possível
  4. Retorna status, data e headers para nós downstream
PropriedadeValor
Rótulo na paletaPostgres
Método padrãoPOST
Variável de URL padrão{{postgres_api_url}}
Header de authAuthorization: Bearer {{postgres_api_token}}
Timeout da requisição30 segundos
Tamanho máximo da resposta10 MB

Pré-requisitos

  1. Um banco PostgreSQL sob seu controle
  2. Um proxy HTTP que executa SQL com segurança (microserviço próprio, edge function estilo Supabase ou API gateway interno)
  3. Chaves de integração na WhatsWave:
    • postgres_api_url — URL completa do endpoint de query (ex.: https://your-service.com/postgres/query)
    • postgres_api_token — bearer token validado pelo seu proxy

Adicione as chaves em Configurações → Chaves de APIChaves de integração.

Como configurar

Passo 1 — Adicionar o nó

  1. Abra Automações e edite seu workflow
  2. Na paleta, abra a categoria Dados
  3. Arraste Postgres para o canvas
  4. Conecte após o gatilho ou um nó que prepare parâmetros da query

Passo 2 — Escolher um template de operação

Dê duplo clique no nó e escolha um preset, ou configure os campos manualmente:

TemplateFinalidadeFormato do body
Query (SELECT)Ler linhas{"query": "SELECT * FROM table LIMIT 10"}
Inserir (Insert)Inserir linha(s){"query": "INSERT INTO table (col1, col2) VALUES ($1, $2)", "params": []}
Atualizar (Update)Atualizar linhas{"query": "UPDATE table SET col = $1 WHERE id = $2", "params": []}
Excluir (Delete)Excluir linhas{"query": "DELETE FROM table WHERE id = $1", "params": []}

Os rótulos dos templates aparecem em português no editor; a requisição HTTP é JSON padrão.

Passo 3 — Configurar campos

CampoObrigatórioDescrição
URL / EndpointSimGeralmente {{postgres_api_url}} ou override por variável
MethodSimTipicamente POST para endpoints de query
Headers (JSON)RecomendadoAuthorization, Content-Type: application/json
Body (JSON)Sim para gravaçõesString query e array opcional params para SQL parametrizado

Exemplo — SELECT parametrizado:

{
  "query": "SELECT id, name, phone FROM contacts WHERE company_id = $1 AND status = $2",
  "params": ["{{variables.company_id}}", "active"]
}

Exemplo — insert a partir de webhook:

{
  "query": "INSERT INTO leads (name, phone, source) VALUES ($1, $2, $3) RETURNING id",
  "params": [
    "{{trigger.body.name}}",
    "{{trigger.body.phone}}",
    "{{trigger.body.source}}"
  ]
}

Todos os campos suportam variáveis de workflow.

Passo 4 — Usar a saída

Referencie resultados em nós posteriores:

{{postgres_1.data}}
{{postgres_1.status}}

Se o proxy retornar { "rows": [...] }, use nós JavaScript ou Variável para extrair o array.

Saídas do nó

Campo de saídaDescrição
statusCódigo HTTP do proxy
dataBody JSON parseado (resultados da query, contagem de linhas afetadas, etc.)
headersHeaders de resposta do proxy

Contrato da API do proxy

Seu proxy deve aceitar JSON como:

{
  "query": "SELECT * FROM orders WHERE id = $1",
  "params": ["uuid-here"]
}

E retornar JSON consumível pelo workflow, por exemplo:

{
  "rows": [{ "id": "...", "total": 150.00 }],
  "rowCount": 1
}

Requisitos de segurança para o proxy:

  • Validar o bearer token em toda requisição
  • Usar apenas queries parametrizadas — nunca concatenar input do usuário em SQL no servidor
  • Restringir statements permitidos (SELECT-only para endpoints somente leitura)
  • Rate-limit e log de acesso
  • Executar em rede privada ou VPN quando possível

Se precisar de acesso PostgREST direto sem proxy customizado, considere o nó Supabase.

Dicas e boas práticas

  • Sempre use params para valores dinâmicos — mapeie {{trigger.body.id}} no array params, não na string da query
  • Limite resultados SELECT com LIMIT para evitar payloads enormes e timeouts
  • Use RETURNING em INSERT/UPDATE quando precisar do ID da nova linha no próximo passo
  • Teste com gatilho Manual e inspecione o Histórico de execuções antes de ativar
  • Separe proxies de leitura e escrita se seu modelo de segurança exigir tokens diferentes
  • Combine com Condição para ramificar em {{postgres_1.status}} ou contagem de linhas

Exemplos de casos de uso

Registrar leads do WhatsApp no Postgres

  1. Gatilho Webhook — envio de formulário ou landing page
  2. Postgres — INSERT em leads com telefone e params UTM
  3. Enviar WhatsApp — mensagem de boas-vindas usando {{postgres_1.data.rows[0].id}} (após moldar com Variável/JS)

Buscar cliente antes de atualizar CRM

  1. Gatilho WhatsWave — mensagem recebida
  2. Postgres — SELECT de cliente por telefone
  3. Condição — cliente existe vs. lead novo
  4. Ramificar para fluxos de atualização ou criação

Query de relatório noturno

  1. Gatilho Agendamento — diariamente às 8:00
  2. Postgres — query agregada dos pedidos de ontem
  3. Google Sheets ou Enviar mensagem — enviar resumo para a equipe

FAQ

Por que a WhatsWave não conecta diretamente ao host Postgres?
Conexões diretas a banco a partir de uma plataforma multi-tenant de automação são risco de segurança. O nó espera uma API HTTP controlada por você.

Recebo 401 Unauthorized.
Verifique postgres_api_token nas chaves de integração e se o header Authorization corresponde ao que o proxy espera.

Recebo 500 com erro SQL no body.
Inspecione os logs de execução. Causas comuns: nomes de tabela/coluna errados, params faltando ou erros de sintaxe. Teste o mesmo payload no proxy com curl primeiro.

Posso executar DDL (CREATE TABLE)?
Tecnicamente sim se o proxy permitir — não recomendado a partir de workflows. Use migrations fora das automações.

Postgres vs nó Supabase?
Use Supabase quando os dados estiverem no Supabase (PostgREST embutido). Use Postgres quando tiver banco customizado e proxy SQL próprio.

Referência da API

ItemValor
ID do tipo de nópostgres_request
Executorhttp_request
URL padrão{{postgres_api_url}}
AuthBearer {{postgres_api_token}}
BodyJSON com query e params opcional

Relacionados

Este artigo foi útil?

Precisa de mais ajuda? Falar com suporte

Central de Ajuda