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:
- Resolve placeholders
{{variable}}em URL, headers e body - Envia um
POST(ou método configurado) para o endpoint do proxy Postgres - Faz parse da resposta JSON quando possível
- Retorna status, data e headers para nós downstream
| Propriedade | Valor |
|---|---|
| Rótulo na paleta | Postgres |
| Método padrão | POST |
| Variável de URL padrão | {{postgres_api_url}} |
| Header de auth | Authorization: Bearer {{postgres_api_token}} |
| Timeout da requisição | 30 segundos |
| Tamanho máximo da resposta | 10 MB |
Pré-requisitos
- Um banco PostgreSQL sob seu controle
- Um proxy HTTP que executa SQL com segurança (microserviço próprio, edge function estilo Supabase ou API gateway interno)
- 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 API → Chaves de integração.
Como configurar
Passo 1 — Adicionar o nó
- Abra Automações e edite seu workflow
- Na paleta, abra a categoria Dados
- Arraste Postgres para o canvas
- 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:
| Template | Finalidade | Formato 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
| Campo | Obrigatório | Descrição |
|---|---|---|
| URL / Endpoint | Sim | Geralmente {{postgres_api_url}} ou override por variável |
| Method | Sim | Tipicamente POST para endpoints de query |
| Headers (JSON) | Recomendado | Authorization, Content-Type: application/json |
| Body (JSON) | Sim para gravações | String 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ída | Descrição |
|---|---|
status | Código HTTP do proxy |
data | Body JSON parseado (resultados da query, contagem de linhas afetadas, etc.) |
headers | Headers 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
paramspara valores dinâmicos — mapeie{{trigger.body.id}}no array params, não na string da query - Limite resultados SELECT com
LIMITpara 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
- Gatilho Webhook — envio de formulário ou landing page
- Postgres — INSERT em
leadscom telefone e params UTM - 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
- Gatilho WhatsWave — mensagem recebida
- Postgres — SELECT de cliente por telefone
- Condição — cliente existe vs. lead novo
- Ramificar para fluxos de atualização ou criação
Query de relatório noturno
- Gatilho Agendamento — diariamente às 8:00
- Postgres — query agregada dos pedidos de ontem
- 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
| Item | Valor |
|---|---|
| ID do tipo de nó | postgres_request |
| Executor | http_request |
| URL padrão | {{postgres_api_url}} |
| Auth | Bearer {{postgres_api_token}} |
| Body | JSON com query e params opcional |
Relacionados
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte