Tutorial: Seu Primeiro Flow
Neste tutorial, você vai criar seu primeiro flow de automação do zero. Vamos construir um flow simples que recebe dados via webhook, processa e envia uma resposta.
O Que Você Vai Construir
Um flow que: 1. Recebe dados via webhook 2. Valida os dados recebidos 3. Faz uma requisição HTTP a uma API externa 4. Processa a resposta 5. Retorna um resultado
Tempo estimado: 15 minutos
Pré-requisitos
- Conta ativa no Lumina Flow Builder
- Conhecimento básico de JSON
Passo 1: Criar Novo Flow
- Acesse o Dashboard do Lumina
- No menu lateral, clique em "Flows"
- Clique no botão "+ Novo Flow"
- Preencha as informações:
- Nome: "Meu Primeiro Flow"
- Descrição: "Flow de teste para aprender o básico"
- Tags: "tutorial", "teste"
- Clique em "Criar"
Você será redirecionado para o editor visual do flow.
Passo 2: Configurar o Trigger
Todo flow precisa de um trigger (gatilho) para iniciar a execução.
2.1. Adicionar Trigger Node
- Na barra lateral esquerda, localize "Triggers"
- Arraste o nó "Webhook" para o canvas
- O nó será adicionado automaticamente
2.2. Configurar Webhook
- Clique no nó do webhook para abrir o painel de configuração
- Você verá uma URL gerada automaticamente:
https://api.lumina.app.br/v1/webhooks/wh_abc123xyz - Copie esta URL - você vai usá-la para testar
- Configure os seguintes campos:
- Nome: "Webhook de Entrada"
- Método: POST
- Autenticação: Nenhuma (para simplificar o teste)
Passo 3: Adicionar Validação
Vamos validar se os dados recebidos estão corretos.
3.1. Adicionar If/Else Node
- Na barra lateral, localize "Logic"
- Arraste o nó "If/Else" para o canvas
- Conecte a saída do webhook ao If/Else:
- Clique no ponto de conexão do webhook (círculo à direita)
- Arraste até o If/Else
- Solte para criar a conexão
3.2. Configurar Condição
- Clique no nó If/Else
- No campo "Condition", insira:
{{ $trigger.body && $trigger.body.name && $trigger.body.email }} - Esta condição verifica se
nameeemailforam enviados - Nome: "Validar Dados"
Passo 4: Adicionar HTTP Request
Vamos fazer uma requisição a uma API de teste.
4.1. Adicionar HTTP Request Node (Branch True)
- Na barra lateral, localize "Actions"
- Arraste o nó "HTTP Request" para o canvas
- Conecte a saída "true" do If/Else ao HTTP Request
4.2. Configurar Requisição
- Clique no nó HTTP Request
- Configure:
- Nome: "Buscar Dados da API"
- Método: GET
- URL:
https://jsonplaceholder.typicode.com/users/1 - Headers: (deixe vazio por enquanto)
- Esta API pública retorna dados de um usuário fictício
Passo 5: Processar Resposta
Vamos transformar os dados recebidos.
5.1. Adicionar Transform Node
- Na barra lateral, localize "Data"
- Arraste o nó "Transform" para o canvas
- Conecte a saída do HTTP Request ao Transform
5.2. Configurar Transformação
- Clique no nó Transform
- No campo "Transform Function", insira:
{{ { "success": true, "message": "Dados processados com sucesso", "userData": { "name": $trigger.body.name, "email": $trigger.body.email, "apiData": $nodes['http-request'].output.data.name }, "timestamp": new Date().toISOString() } }} - Nome: "Processar Resposta"
Passo 6: Tratamento de Erro
Vamos adicionar um caminho para quando a validação falhar.
6.1. Adicionar Response Node (Branch False)
- Arraste outro nó "Transform" para o canvas
- Conecte a saída "false" do If/Else a este Transform
- Configure:
- Nome: "Resposta de Erro"
- Transform Function:
{{ { "success": false, "error": "Dados inválidos", "message": "Os campos 'name' e 'email' são obrigatórios", "received": $trigger.body } }}
Passo 7: Salvar o Flow
- Clique no botão "Salvar" no canto superior direito
- Seu flow está pronto!
Seu flow deve ter esta estrutura:
Webhook → If/Else → HTTP Request → Transform (sucesso)
↓
Transform (erro)
Passo 8: Testar o Flow
8.1. Teste com Dados Válidos
Vamos testar usando cURL ou Postman:
curl -X POST https://api.lumina.app.br/v1/webhooks/wh_abc123xyz \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"email": "joao@example.com"
}'
Resposta esperada:
{
"success": true,
"message": "Dados processados com sucesso",
"userData": {
"name": "João Silva",
"email": "joao@example.com",
"apiData": "Leanne Graham"
},
"timestamp": "2025-01-15T18:00:00Z"
}
8.2. Teste com Dados Inválidos
curl -X POST https://api.lumina.app.br/v1/webhooks/wh_abc123xyz \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva"
}'
Resposta esperada:
{
"success": false,
"error": "Dados inválidos",
"message": "Os campos 'name' e 'email' são obrigatórios",
"received": {
"name": "João Silva"
}
}
8.3. Usar o Teste Manual
No dashboard:
- Clique em "Testar Flow"
- Insira os dados de teste:
{ "name": "Maria Santos", "email": "maria@example.com" } - Clique em "Executar"
- Veja os resultados em tempo real
Passo 9: Visualizar Logs
- Vá para "Flows" → "Meu Primeiro Flow"
- Clique na aba "Execuções"
- Selecione uma execução da lista
- Você verá:
- Status da execução
- Tempo de execução
- Dados de cada nó
- Logs detalhados
Exemplo de Log
[10:30:00.000] Execution started
[10:30:00.050] Webhook received: {"name": "João Silva", "email": "joao@example.com"}
[10:30:00.100] If/Else: Condition evaluated to true
[10:30:00.150] HTTP Request: GET https://jsonplaceholder.typicode.com/users/1
[10:30:01.200] HTTP Request: Response received (200 OK)
[10:30:01.250] Transform: Data transformed successfully
[10:30:01.300] Execution completed (1.3s)
Passo 10: Melhorar o Flow
Agora que você tem um flow básico funcionando, vamos adicionar melhorias:
10.1. Adicionar Logging
- Adicione um nó "Log" após o HTTP Request
- Configure para registrar a resposta:
{{ { "message": "API Response", "data": $node.output.data, "status": $node.output.status } }}
10.2. Adicionar Retry
- Clique no nó HTTP Request
- Na aba "Advanced", configure:
- Max Retries: 3
- Retry Delay: 1000ms
- Timeout: 5000ms
10.3. Adicionar Variáveis
- Clique em "Configurações do Flow" (ícone de engrenagem)
- Na seção "Variables", adicione:
{ "apiBaseUrl": "https://jsonplaceholder.typicode.com", "apiTimeout": 5000 } - Atualize a URL do HTTP Request:
{{ $vars.apiBaseUrl }}/users/1
Configuração Final do Flow
Estrutura Completa
{
"name": "Meu Primeiro Flow",
"description": "Flow de teste para aprender o básico",
"variables": {
"apiBaseUrl": "https://jsonplaceholder.typicode.com",
"apiTimeout": 5000
},
"trigger": {
"type": "webhook",
"config": {
"method": "POST"
}
},
"nodes": [
{
"id": "node_1",
"type": "if-else",
"name": "Validar Dados",
"config": {
"condition": "{{ $trigger.body && $trigger.body.name && $trigger.body.email }}"
}
},
{
"id": "node_2",
"type": "http-request",
"name": "Buscar Dados da API",
"config": {
"method": "GET",
"url": "{{ $vars.apiBaseUrl }}/users/1",
"timeout": "{{ $vars.apiTimeout }}",
"retry": {
"maxRetries": 3,
"retryDelay": 1000
}
}
},
{
"id": "node_3",
"type": "log",
"name": "Log API Response",
"config": {
"message": "API Response",
"data": "{{ $node.output }}"
}
},
{
"id": "node_4",
"type": "transform",
"name": "Processar Resposta",
"config": {
"transform": "{{ { success: true, message: 'Dados processados com sucesso', userData: { name: $trigger.body.name, email: $trigger.body.email, apiData: $nodes['node_2'].output.data.name }, timestamp: new Date().toISOString() } }}"
}
},
{
"id": "node_5",
"type": "transform",
"name": "Resposta de Erro",
"config": {
"transform": "{{ { success: false, error: 'Dados inválidos', message: 'Os campos name e email são obrigatórios', received: $trigger.body } }}"
}
}
]
}
Conceitos Aprendidos
Parabéns! Você aprendeu:
- ✅ Como criar um flow
- ✅ Como configurar triggers (webhook)
- ✅ Como adicionar e conectar nós
- ✅ Como usar variáveis (
$trigger,$node,$vars) - ✅ Como fazer validações com If/Else
- ✅ Como fazer requisições HTTP
- ✅ Como transformar dados
- ✅ Como testar flows
- ✅ Como visualizar logs e debugar
- ✅ Como configurar retry e error handling
Próximos Passos
Agora que você domina o básico, experimente:
- Integração com WhatsApp
-
Crie um chatbot automatizado
-
Automatize processamento de dados
-
Explore Mais Nós
- Database Query
- Send Email
- Loop/ForEach
-
Switch/Case
-
Aprenda Conceitos Avançados
- Variáveis
- Expressões
- Referência de Nós
Dicas Importantes
1. Sempre Valide Dados de Entrada
// Bom
{{ $trigger.body && $trigger.body.email && $trigger.body.email.includes('@') }}
// Ruim
{{ $trigger.body.email }} // Pode dar erro se body for undefined
2. Use Nomes Descritivos
✓ "Validar Email do Cliente"
✗ "If/Else 1"
3. Adicione Logs em Pontos Críticos
Facilita debugging quando algo der errado.
4. Configure Retry em Requisições Externas
APIs podem falhar temporariamente - retry automático resolve isso.
5. Teste com Dados Reais
Use casos de uso reais do seu negócio para testar.
Precisa de Ajuda?
- Documentação: Flow Builder
- Comunidade: Discord
- Suporte: support@lumina.app.br