Nó Webhook: chamando sistemas externos
O nó Webhook faz uma requisição HTTP pra uma URL externa com dados do fluxo. É o que te deixa integrar o Rishi com qualquer sistema terceiro — ERP, CRM, planilha online, n8n, Zapier, código próprio.
Quase tudo que tem URL aceita webhook. Use pra:
- Atualizar o status do pedido no seu ERP quando o cliente avalia
- Disparar uma automação no Make/Zapier
- Notificar o time num canal de Slack/Discord
- Enviar dados pra uma planilha do Google Sheets
- Criar um chamado no Help Desk
- Qualquer coisa que aceite POST/GET HTTP
Configurando
No Inspector do nó Webhook:
| Campo | Descrição |
|---|---|
| URL | URL completa do endpoint (obrigatório) |
| Método | GET, POST, PUT, PATCH, DELETE (padrão: POST) |
| Content-Type | Padrão: application/json |
| Body | Payload a enviar. Suporta variáveis {{...}} |
Body com JSON
{
"pedido": "{{order.external_id}}",
"cliente": "{{customer.first_name}} {{customer.last_name}}",
"email": "{{customer.email}}",
"valor": "{{order.total}}",
"status": "pago"
}
As variáveis são resolvidas antes do envio — o destinatário recebe os valores reais, não os placeholders.
GET com query string
Se o método é GET, o body é parseado como query string ou JSON e enviado como parâmetros de URL:
URL: https://meu-sistema.com/webhook
Método: GET
Body: pedido={{order.external_id}}&cliente={{customer.email}}
Vai disparar:
GET https://meu-sistema.com/webhook?pedido=1234&cliente=joao@exemplo.com
Comportamento e timeout
- Timeout: 8 segundos. Se o endpoint não responder em 8s, o webhook é considerado falho.
- Sem retry de conteúdo. Se o servidor retorna
4xxou5xx, o erro é registrado mas o fluxo continua pro próximo nó. Não há nova tentativa automática. - Resposta do webhook não é salva no fluxo. O conteúdo retornado pelo endpoint não vira variável
{{}}— é apenas logado.
Webhook que falha não interrompe o fluxo. Por design, o fluxo segue mesmo quando o endpoint externo dá erro. Se você precisa que o fluxo só continue se o webhook der sucesso, fale com o suporte sobre lógicas customizadas.
Logs e diagnóstico
Cada execução do nó Webhook registra um FlowNote com:
- URL chamada
- Método e payload enviados
- Resposta recebida (status HTTP + corpo)
- Mensagem de erro, se houver (
webhook_failed)
Acesse pelo painel de execuções do fluxo. Útil pra debugar quando o sistema externo não está reagindo como esperado.
Casos de uso comuns
Notificar Slack quando alguém avalia
Gatilho: Avaliação feita
↓
Webhook:
URL: https://hooks.slack.com/services/...
Método: POST
Content-Type: application/json
Body: {
"text": "Nova avaliação no pedido #{{order.external_id}} de {{customer.first_name}}!"
}
Atualizar pedido em ERP externo quando paga
Gatilho: Pedido pago
↓
Webhook:
URL: https://meu-erp.com/api/pedidos/{{order.external_id}}/pagar
Método: PATCH
Content-Type: application/json
Body: {
"pago_em": "{{order.paid_at}}",
"valor": "{{order.total}}"
}
Disparar fluxo no n8n
Gatilho: Carrinho abandonado
↓
Webhook:
URL: https://n8n.meudominio.com/webhook/carrinho-abandonado
Método: POST
Body: {
"cart_id": "{{cart_id}}",
"url": "{{cart_url}}",
"telefone": "{{customer.phone}}",
"valor": "{{cart_total}}"
}
Casos de borda
- URL vazia → registra
FlowNotede erro mas o fluxo continua. - URL malformada → mesma coisa: erro registrado, fluxo continua.
- Timeout (8s) → registrado como
webhook_failedno log. - Endpoint retorna 5xx → erro registrado, fluxo continua.
- Variável vazia no body → o placeholder fica como string vazia (
""). - Método HTTP inválido → cai pra
POSTpor segurança.
Variáveis úteis pra webhook
Algumas variáveis são particularmente úteis em payloads:
| Variável | Quando usar |
|---|---|
{{order.external_id}} |
Pra cruzar com o pedido no sistema externo |
{{customer.email}} |
Identificador único cross-system |
{{coupon_code}} |
Pra reportar cupom gerado pelo Rishi |
{{cart_url}} |
Pra retomar carrinho do lado externo |
{{customer.phone}} |
Pra disparar SMS/WhatsApp em outro sistema |
A lista completa de variáveis disponíveis fica no painel Variáveis disponíveis aqui do Inspector.
Segurança
- HTTPS recomendado. O Rishi aceita HTTP, mas dados sensíveis devem trafegar em HTTPS.
- Sem autenticação built-in. Se o endpoint precisa de token/header de auth, inclua no Body (pra POST) ou na URL (como query param). Headers customizados não são configuráveis hoje — fale com o suporte se for um caso comum no seu cenário.
- IPs do Rishi não são fixos. Se o seu sistema valida IP de origem, configure pra aceitar qualquer IP da Cloud (AWS) ou use validação por token no payload.
Próximos passos
- Nó Cupom — gere o cupom antes do webhook e envie o código pro sistema externo.
- Visão geral do Flow Builder — entenda como variáveis são resolvidas.