Rishidocs

Nó Aguardar: pausando o fluxo entre etapas

2 min de leituraAtualizado há 4 dias

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:

  1. O step é marcado como completed (não fica "rodando" indefinidamente).
  2. O sistema agenda um job (ContinueFlowAfterDelayJob) com now()->addMinutes(N) na fila flow.
  3. A execução não bloqueia — outros fluxos seguem normalmente.
  4. 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 resumeAt ainda está no futuro → reagenda o job com o tempo restante correto
  • Se o resumeAt já 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 minutes ou days) cai pra minutes por 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_at antes 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

Foi útil?