Nó Aguardar: pausando o fluxo entre etapas
O nó Aguardar pausa o fluxo por um tempo determinado antes de continuar. É o que te deixa montar sequências espaçadas — "manda mensagem agora, espera 30 minutos, manda outra".
Sem ele, todo nó executaria em sequência imediata. Com ele, você consegue desenhar a cadência real do diálogo com o cliente.
Quando usar
- Recuperação de carrinho — espere 30 minutos antes do primeiro toque, mais 3 horas pro segundo, 24 horas pro último.
- Pós-venda — peça avaliação 7 dias após a entrega, não no instante em que o pedido sai.
- Reativação — espere 30 dias sem compra antes de mandar o cupom de win-back.
Configurando
O nó Aguardar tem dois campos no Inspector:
| Campo | Descrição |
|---|---|
| Quantidade | Número inteiro (ex: 30, 2, 7) |
| Unidade | Minutos ou Dias |
Se você escolhe Dias, o sistema converte internamente para minutos (dias × 24 × 60). O resultado é o mesmo, mas em "Dias" fica mais legível na tela pra esperas longas.
Para esperas de horas, use minutos. Não há unidade "horas" — use 120 minutos pra 2 horas.
Como funciona por dentro
Quando o fluxo chega no nó Aguardar:
- O step é marcado como
completed(não fica "rodando" indefinidamente). - O sistema agenda um job (
ContinueFlowAfterDelayJob) comnow()->addMinutes(N)na filaflow. - A execução não bloqueia — outros fluxos seguem normalmente.
- Quando o tempo passa, o job é processado e o fluxo avança pro próximo nó.
Cada Aguardar é um job independente. Você pode ter milhares de fluxos esperando ao mesmo tempo sem impactar o sistema.
Pausando um fluxo durante uma espera
Se você desativar (mudar pra Rascunho) um fluxo que tem execuções em Aguardar, o sistema marca essas execuções como Pausadas e cancela os jobs agendados.
Quando você reativa o fluxo, o sistema verifica:
- Se o
resumeAtainda está no futuro → reagenda o job com o tempo restante correto - Se o
resumeAtjá passou → executa imediatamente
Você não perde execuções nem dispara fora de hora.
Casos de borda
- Quantidade = 0 resulta em delay imediato (zero minutos). O próximo nó executa sem espera.
- Unidade inválida (qualquer coisa que não seja
minutesoudays) cai praminutespor segurança. - Não dá pra pausar manualmente uma execução individual — só pausando o fluxo todo.
- Fluxos parados (execução stuck, ex: filas paradas) têm um buffer de tolerância de 3h após o
expected_completion_atantes de serem marcados como falhos.
Exemplo: 3 toques de carrinho abandonado
[Início: Carrinho abandonado]
↓
[Aguardar: 30 minutos]
↓
[Mensagem: "Vi que você esqueceu o carrinho..."]
↓
[Aguardar: 3 horas e meia (210 minutos)]
↓
[Condição: Cliente fez pedido recente?]
|Sim| → [Fim]
|Não| → [Mensagem: "Ainda dá tempo..."]
↓
[Aguardar: 20 horas (1200 minutos)]
↓
[Cupom: 10% off]
↓
[Mensagem: "Cupom: {{coupon_code}}"]
Próximos passos
- Nó Condições — como bifurcar o fluxo entre toques.
- Nó Mensagem — como mandar WhatsApp em cada etapa.