kb.erickguedes.com
N8N: Automação Low-Code

Triggers e Webhooks

Aula 2 de 6

Trigger Nodes

Triggers sao nodes que iniciam workflows automaticamente quando um evento ocorre.

echo "=== Tipos de Trigger ==="
echo ""
echo "Cron (Schedule): Executa em horarios definidos"
echo "  Expressao: * * * * * (minuto, hora, dia, mes, semana)"
echo "  Ex: 0 9 * * 1-5 (seg-sex as 9:00)"
echo ""
echo "Webhook: Executa quando recebe requisicao HTTP"
echo "  Metodos: GET, POST, PUT, DELETE"
echo ""
echo "Email: Executa quando chega novo email (IMAP)"
echo "  Suporta: Gmail, Outlook, IMAP generico"
echo ""
echo "RSS: Executa quando novo item no feed"
echo "  Polling: Verifica a cada X minutos"
echo ""
echo "Form Trigger: Executa quando formulario e enviado"
echo "  Gera URL unica para o formulario"
# Exemplos de expressoes cron
echo "=== Expressoes Cron ==="
echo "A cada 1 hora:    0 * * * *"
echo "A cada 6 horas:   0 */6 * * *"
echo "Todo dia 9h:      0 9 * * *"
echo "Seg-Sex 9h:       0 9 * * 1-5"
echo "Primeiro dia mes: 0 9 1 * *"
echo "A cada 30 min:    */30 * * * *"

Webhook Node

ParametroDescricao
HTTP MethodGET, POST, PUT, DELETE, PATCH
PathCaminho da URL (ex: /webhook/orders)
Response ModeLast Node, First Node, Manual
Response DataAll Entries, First Entry, JSON
OptionsRaw Body, Authorization, CORS
echo "=== Configuracao de Webhook ==="
echo ""
echo "POST /webhook/orders"
echo ""
echo "Request body (JSON):"
echo " {"
echo "   \"orderId\": \"12345\","
echo "   \"customer\": {"
echo "     \"name\": \"Joao\","
echo "     \"email\": \"[email protected]\""
echo "   },"
echo "   \"items\": ["
echo "     { \"product\": \"ABC\", \"qty\": 2 }"
echo "   ]"
echo " }"
echo ""
echo "Response: Status 200, body = output do ultimo node"

Authorization no Webhook

echo "=== Metodos de Authorization ==="
echo ""
echo "1. Header Authorization:"
echo "   Header: Authorization: Bearer <token>"
echo "   Config: Options > Add Header"
echo ""
echo "2. Query Parameter:"
echo "   URL: /webhook/orders?token=<api_key>"
echo ""
echo "3. Basic Auth:"
echo "   Header: Authorization: Basic base64(user:pass)"
echo ""
echo "4. JWT Validation:"
echo "   Validar assinatura JWT no Code node"

Polling vs Push Triggers

echo "=== Polling vs Push ==="
echo ""
echo "PUSH (Webhook):"
echo "- Tempo real"
echo "- Cliente envia dados"
echo "- Nao consome recursos sem evento"
echo "- Ideal para: webhooks de APIs externas"
echo ""
echo "POLLING (Cron, RSS, IMAP):"
echo "- Periodico (a cada X min/h)"
echo "- N8N consulta o servidor"
echo "- Consome recursos mesmo sem dados novos"
echo "- Ideal para: APIs sem webhook"
echo ""
echo "Recomendacao: Prefira Push quando possivel"

Error Workflows

echo "=== Error Workflow ==="
echo ""
echo "O Error Workflow e um workflow especial que executa"
echo "quando outro workflow falha."
echo ""
echo "Configuracao:"
echo "1. Criar workflow de erro"
echo "2. Settings > Error Workflow"
echo "3. Selecionar workflow de erro"
echo ""
echo "Dados do erro recebidos:"
echo "- executionId"
echo "- workflowId"
echo "- errorMessage"
echo "- errorDetails"
echo "- time"
echo ""
echo "Acoes comuns no Error Workflow:"
echo "- Enviar email para equipe"
echo "- Notificar no Slack"
echo "- Registrar no log"
echo "- Tentar retry"

Lab: Webhook com Resposta Customizada

cat > webhook_lab.sh << 'EOF'
echo "=== Lab: Webhook com Autenticacao ==="

echo "Passo 1: Adicionar Webhook Node"
echo "  Method: POST"
echo "  Path: /webhook/lab"
echo "  Options: Add Header 'Authorization: Bearer <token>'"
echo ""

echo "Passo 2: Adicionar Code Node"
echo "  // Validar token"
echo "  const token = $input.all()[0].json.headers.authorization;"
echo "  if (token !== 'Bearer meu-token-secreto') {"
echo "    throw new Error('Unauthorized');"
echo "  }"
echo "  const body = $input.all()[0].json.body;"
echo "  return [{"
echo "    json: {"
echo "      status: 'success',"
echo "      received: body,"
echo "      timestamp: new Date().toISOString()"
echo "    }"
echo "  }];"
echo ""

echo "Passo 3: Testar com curl"
echo "  curl -X POST http://localhost:5678/webhook/lab \\"
echo "    -H 'Authorization: Bearer meu-token-secreto' \\"
echo "    -H 'Content-Type: application/json' \\"
echo "    -d '{\"message\": \"Hello N8N\"}'"
EOF

Triggers sao o ponto de partida de todo workflow. Escolher o trigger certo define se sua automacao sera reativa (webhook) ou proativa (cron/polling).