AutomatizeEtapa 5 de 5

Espere uma pessoa: etapas de aprovação

Alguns passos não devem acontecer antes de uma pessoa dizer sim: um reembolso acima de um limite, um e-mail em massa, um deploy. Uma etapa de Aprovação pausa o flow ali mesmo. A execução espera — sem ocupar nenhum worker — até alguém aprovar (a mesma execução continua, com os valores que a pessoa preencheu) ou rejeitar (a execução termina Rejeitada). Nesta lição você monta um desconto que um gerente aprova e pode alterar.

O que você vai aprender
  • Adicionar uma etapa de Aprovação com mensagem e campos que quem aprova preenche
  • Escolher quem pode decidir, o prazo e o que acontece quando ele acaba
  • Decidir na visualização da execução ou em Execuções → Esperando por você
  • Usar a decisão nos passos seguintes por output.values

O que acontece numa aprovação

Quando uma execução chega a uma etapa de Aprovação, ela para e o status vira Aguardando aprovação. Nada depois da etapa roda, e nenhum worker fica ocupado enquanto ela espera — um flow pode esperar dois dias sem custo. A etapa mostra um cartão com a mensagem, os campos e quem pode decidir.

A execução para na etapa de Aprovação e espera; os passos abaixo ficam cinza até alguém decidir.
DecisãoO que a execução faz
AprovarA mesma execução continua depois da etapa. Os passos já concluídos não rodam de novo; a versão do flow com que ela começou é mantida.
RejeitarA execução termina Rejeitada. É uma decisão, não uma falha: a etapa Em caso de erro do flow não roda.
O prazo acabaO que Quando o prazo acabar define: Rejeitar (o padrão), Aprovar ou Falhar a execução. O cartão diz A aprovação expirou.

Só a primeira decisão vale: se duas pessoas clicarem no mesmo instante, a segunda vê Já decidida por ….

Adicione uma etapa de Aprovação

  1. Insira

    No canvas do flow, clique no + onde a pausa deve ficar e escolha Aprovação. Uma aprovação nova espera até 48 horas, rejeita quando o prazo acaba, deixa qualquer pessoa que pode executar o flow decidir e não envia e-mail.

  2. Escreva a mensagem

    Mensagem é o que quem aprova vai ler. É uma entrada como qualquer outra, então pode ser um texto fixo ou ligada ao resultado de um passo anterior.

  3. Adicione campos

    Em Campos que quem aprova preenche, clique em Adicionar campo: um Nome do campo, um Rótulo, o tipo — Texto, Número, Sim / não ou Opção (opções separadas por vírgula) — e Obrigatório. Sem campos, quem aprova só aprova ou rejeita.

  4. Quem, quanto tempo, avisar

    Quem pode decidir: Quem pode executar este flow, ou Pessoas escolhidas entre os membros do projeto. Prazo em horas ou dias, e Quando o prazo acabar. Avisar por e-mail envia uma mensagem a quem aprova pela conexão de e-mail do projeto; o link abre a decisão no app e pede login.

Decidindo

Quem pode decidir encontra o pedido em três lugares: a execução no canvas do flow (o cartão de aprovação na etapa), o painel da execução da etapa, e a página Execuções, onde o filtro Esperando por você mostra só as execuções que aguardam a sua decisão, cada uma com Revisar. O cartão mostra a mensagem, Quem pode decidir · …, Expira em …, os campos, um Comentário opcional e Aprovar / Rejeitar.

Aguardando aprovaçãoapproval
Rodar de novoAbrir na página do flow
Duração174 ms
Início07:14:22
Iniciado por ana@shop.dev
Aguardando aprovação Expira em 1 d 18 h
Enviar um lembrete para 3 clientes? Quem pode decidir · Quem pode executar este flow
AprovarRejeitar
DadosPassos3LogsLinha do tempo
O cartão de aprovação: mensagem, campos para preencher, quem pode decidir, o tempo restante e Aprovar ou Rejeitar.

Usando a decisão

Depois da aprovação, a saída da etapa é {approved, by, at, comment, values}. Os passos seguintes se ligam a ela como a qualquer passo: Os passos seguintes leem como output.values.<nome>.

Saída esperadaSucessoA saída de uma etapa de aprovação
{
  "approved": true,
  "by": "Ana Souza",
  "at": "2026-10-16T14:02:11Z",
  "comment": "ok, loyal customer",
  "values": {
    "discount": 15
  }
}

Ative Permitir decidir por link na seção Decisões por link da etapa, e um passo de script antes dela pode chamar waiso.resume_urls() (TypeScript/JavaScript await resumeUrls(), C waiso_resume_urls, C++ waiso::resume_urls()). Ela devolve {resume, cancel, approvalPage, approvalId, expiresAt}: um POST em resume aprova (o corpo JSON vira values), um POST em cancel rejeita, e approvalPage é uma página onde uma pessoa decide sem conta. Abrir um link no navegador só mostra uma confirmação, então um antivírus de e-mail nunca decide.

Regras e limites

  • Fora de loops: approval_in_loop — Uma aprovação não pode ficar dentro de um loop — adicione-a antes do loop.
  • Fora de ramos em paralelo: approval_in_branch — um ramo esperando uma pessoa seguraria todos os outros.
  • Um subflow que espera faz o flow pai esperar também, e o cartão do pai indica o subflow; os dois continuam juntos.
  • Uma chamada de API síncrona a um flow que chega numa aprovação responde 202 com a execução na hora, em vez de segurar a chamada.
  • Os avisos por e-mail precisam da conexão de e-mail do projeto; sem ela, quem aprova encontra o pedido só no app.
5 / 5