Ilustrativo — sucesso segue à direita; falha cai no ramo de erro que alerta e registra log.
🚨 Tratamento de erros
Em produção, tudo falha eventualmente. Quem trata erro é avisado; quem não trata descobre pelo cliente irritado. Use um error workflow global, o ramo de erro do node, ou continue on fail.
// disparado automaticamente quando QUALQUER fluxo falha Workflow: ={{ $json.workflow.name }} Node: ={{ $json.execution.lastNodeExecuted }} Erro: ={{ $json.execution.error.message }} // → manda esse resumo pro Slack
✓ Fluxo que trata erro
- ✓Error workflow global avisa toda falha.
- ✓continue on fail em node não-crítico.
- ✓Ramo de erro grava o item problemático.
✗ Fluxo que morre em silêncio
- ✗Sem error workflow — falha passa batida.
- ✗Um item ruim derruba o lote inteiro.
- ✗Ninguém é notificado; cliente descobre antes.
⏱️ Retries e timeouts
Muita falha é transitória — API instável, timeout de rede. Um retry com backoff transforma "deu erro" em "resolveu sozinho na 2ª tentativa". Mas defina um timeout: esperar infinito trava o fluxo.
Retry On Fail: true Max Tries: 3 Wait Between Tries: 2000 ms // idealmente crescente (backoff) Timeout: 30000 ms // não espere para sempre
📊 Retry com juízo
- Backoff - espere mais a cada tentativa (2s, 4s, 8s) para não martelar a API.
- Só o que é transitório - 5xx e timeout valem retry; 400/401 não (vão falhar igual).
- Teto de tentativas - 3 a 5; depois, caia no ramo de erro e alerte.
🧬 Idempotência e evitar duplicidade
Retries e webhooks reentregam. Sem idempotência, cada reenvio vira duplicata — dois registros, dois e-mails, a mesma cobrança 3x. Idempotente = rodar o mesmo input duas vezes tem o mesmo efeito que rodar uma.
// chave idempotente derivada do evento chave = ={{ $json.pedido_id + '-' + $json.tipo_evento }} // UPSERT: se a chave já existe, atualiza; senão, cria // → reenvio do mesmo evento não duplica
Defina uma chave idempotente
Um identificador estável do evento (ex.: pedido_id) que não muda entre reenvios.
Cheque antes de agir
SELECT pela chave antes de inserir, ou use UPSERT que já resolve isso no banco.
Dedupe antes de notificar
Marque "já enviado" para que um retry não dispare o mesmo e-mail de novo.
📡 Observabilidade: logs e alertas
Você não conserta o que não vê. Logs estruturados registram o que cada execução fez; alertas proativos avisam quando falha. A diferença entre 5 minutos e 5 horas de prejuízo.
POST ={{ $env.SLACK_ALERT_WEBHOOK }}
{ "text": "🚨 Falha no fluxo *={{ $json.workflow.name }}*\n
Node: ={{ $json.execution.lastNodeExecuted }}\n
Erro: ={{ $json.execution.error.message }}" }
O que rodou, quando
Slack / e-mail na falha
Taxa de sucesso
Execution history
💡 Dica prática
Alerte na falha, não no sucesso — senão vira ruído e você para de ler. E nunca logue a chave de API: mascare segredos antes de gravar qualquer linha.
🧪 Testes e ambiente de homologação
Testar direto em produção quebra o serviço do cliente ao vivo. Um ambiente de homologação (staging) com dados de teste é sua rede de segurança: valide a mudança lá antes de tocar no que está rodando.
✓ Com homologação
- ✓Credentials e dados de teste separados (ENVIRONMENT=staging).
- ✓Smoke test após cada mudança: dispara 1 caso e confere.
- ✓Pin data com casos de borda (campo nulo, valor enorme).
✗ Testando em produção
- ✗Mandar e-mail de teste para clientes reais.
- ✗Editar o fluxo ativo sem cópia de segurança.
- ✗Descobrir o bug só quando o volume real chega.
📊 O que testar antes de promover
- Caminho feliz - entrada normal produz a ação esperada.
- Casos de borda - campo faltando, lista vazia, valor inesperado.
- Falha simulada - derrube a API de propósito e veja o ramo de erro agir.
✅ Checklist de produção
O checklist transforma "acho que tá pronto" em "está pronto" — e é o que você mostra ao cliente como garantia. Antes de ligar pra valer, passe por cada item.
🚀 Go-live checklist
💡 Dica prática
Tenha sempre um plano de rollback: como desligar a automação e voltar ao processo manual em 1 clique se algo der muito errado. É isso que dá confiança para você (e para o cliente) ligar o fluxo.
📌 Resumo do Módulo
Próxima Trilha:
Trilha 5 · Comercialização - empacotar, precificar e vender sua automação como serviço.