Cron e agendamento único, fuso horário e automação recorrente.
Gatilho Schedule
O nó Schedule (schedule_trigger) inicia um workflow em um horário fixo — uma vez ou em um cronograma recorrente. Use-o para relatórios diários, lembretes de follow-up, sincronizações noturnas e qualquer automação que deva rodar sem chamadas HTTP externas.
Na paleta do editor ele aparece como Agendamento (rótulo da UI em português). Workflows legados ainda podem referenciar cron_trigger; o engine trata como o mesmo tipo de nó.
Abra Automações → paleta Triggers → Schedule / Agendamento.
Figura 1: Gatilho Schedule — cron recorrente ou data/hora única
O que ele faz
| Aspecto | Comportamento |
|---|---|
| Tipo de nó | schedule_trigger (alias: cron_trigger) |
| Executor | trigger |
| Tipos de agendamento | recurring (cron) ou once (data/hora única) |
| Fuso horário | Fuso horário da empresa em Perfil da empresa (padrão America/Sao_Paulo) |
| Campo na plataforma | next_execution_at — timestamp UTC da próxima execução |
| Saída do gatilho | timestamp — disponível como {{trigger.timestamp}} quando relevante |
| Payload interno | { "trigger": true, "scheduled": true } |
Um job cron em segundo plano (POST /workflows/cron/process-scheduled) varre workflows ativados cujo next_execution_at já passou, enfileira a execução com trigger_source: cron e recalcula o próximo slot para agendamentos recorrentes.
Configuração — passo a passo
1. Adicionar o nó Schedule
- Abra o editor do workflow.
- Arraste Schedule / Agendamento de Triggers para o canvas.
- Conecte-o ao restante do fluxo.
- Um nó de agendamento por workflow é recomendado — múltiplos nós cron não são suportados no nível do banco (
cron_expressionenext_execution_atsão campos únicos no workflow).
2. Escolher o tipo de agendamento
| Tipo | Rótulo na UI | Quando usar |
|---|---|---|
| Recurring | Recorrente | Standups diários, relatórios semanais, sincronização periódica |
| Run once | Executado única vez | Campanha pontual, migração, anúncio agendado |
3a. Recorrente — expressão cron
- Selecione Recurring.
- Use o construtor visual de cron ou informe uma expressão cron de 5 campos:
┌───────────── minute (0–59)
│ ┌─────────── hour (0–23)
│ │ ┌───────── day of month (1–31)
│ │ │ ┌─────── month (1–12)
│ │ │ │ ┌───── day of week (0–6, Sunday = 0)
│ │ │ │ │
* * * * *
Exemplos comuns (interpretados no fuso horário da empresa):
| Expressão | Significado |
|---|---|
0 9 * * * | Todos os dias às 09:00 |
0 9,18 * * * | Todos os dias às 09:00 e 18:00 |
0 9 * * 1-5 | Dias úteis às 09:00 |
0 9 * * 1 | Toda segunda-feira às 09:00 |
0 9 1 * * | Primeiro dia de cada mês às 09:00 |
*/15 * * * * | A cada 15 minutos |
0 */2 * * * | A cada 2 horas no minuto 0 |
Os modos do construtor incluem: diário, diário com múltiplos horários, dias úteis, semanal, mensal, a cada N minutos e expressão bruta personalizada.
3b. Executar uma vez — data/hora
- Selecione Run once.
- Escolha Date and time (
scheduled_at) no seletor de data/hora. - Deve ser no futuro ao salvar — horários no passado não agendam execução.
- Após a execução concluir,
next_execution_até limpo (sem repetição).
4. Salvar e ativar
- Save o workflow — ao salvar deriva:
triggers_enabled.cron: truecron_expressionouscheduled_atschedule_typenext_execution_at(calculado em UTC)
- Ative o toggle Active — workflows inativos são ignorados pelo agendador.
- Confirme
next_execution_atnas configurações do workflow ou aguarde a primeira execução.
5. Verificar a execução
- Abra Execution history após o horário agendado.
- Verifique
trigger_source=cronna linha da execução. - Inspecione a saída de cada nó se a execução falhou silenciosamente (ex.: instância ausente).
Comportamento do cron e fuso horário
- Os campos do cron são avaliados no fuso horário da empresa (
companies.timezone). next_execution_até armazenado em UTC no banco de dados.- Se o fuso horário da empresa não estiver definido, o engine usa
America/Sao_Paulopor padrão. - Mudanças de horário de verão são tratadas via cálculo com consciência de fuso ao computar a próxima ocorrência.
Após cada enfileiramento bem-sucedido:
- Recorrente:
next_execution_atavança para a próxima correspondência do cron. - Uma vez:
next_execution_attorna-senull.
Dados do gatilho nos nós seguintes
Execuções agendadas recebem um payload mínimo:
{
"trigger": true,
"scheduled": true
}
Use variáveis system para lógica sensível ao tempo:
| Variável | Caso de uso |
|---|---|
{{system.current_datetime}} | Data/hora completa no contexto do servidor/empresa |
{{system.current_date_iso}} | Data de hoje YYYY-MM-DD |
{{system.current_day_of_week}} | Ramificar pelo nome do dia da semana |
{{system.current_hour}} | Condição pela hora (0–23) |
{{date:today}} | Aritmética de datas em condições |
Para workflows disparados pelo CRM que reutilizam o mesmo fluxo, o engine pode entrar via schedule_trigger quando trigger_source é crm — projete fluxos que não dependam apenas de campos de webhook.
Workflows com múltiplos gatilhos
Você pode combinar Schedule com Webhook e Manual em um workflow:
{
"triggers_enabled": {
"webhook": true,
"manual": true,
"cron": true
}
}
- Tráfego HTTP usa
webhook_trigger. - Execuções agendadas usam
schedule_trigger/cron_trigger. - Testes manuais usam
manual_trigger.
Cada origem ativa apenas seu nó de entrada correspondente.
Dicas e boas práticas
- Um cron por workflow — agendamentos diferentes exigem workflows separados (ou lógica condicional dentro de uma única execução diária).
- Horários fora de pico — agende envios em massa e jobs de sincronização fora do horário comercial para reduzir contenção na fila.
- Evite cron abaixo de um minuto salvo necessidade — agendamentos muito frequentes aumentam contagem de execuções e custo.
- Teste com Manual primeiro — valide conteúdo de mensagens e integrações antes de esperar o cron.
- Monitore falhas — jobs recorrentes falham silenciosamente se a instância estiver desconectada; adicione notificações de erro via nós HTTP ou e-mail.
- Lógica de feriados — o cron não ignora feriados nativamente; adicione uma Condition que consulta uma API de calendário ou verifica uma lista estática.
- Prevenção de duplicatas — se uma execução sobrepõe o próximo slot, a plataforma ainda enfileira conforme o agendamento; projete etapas idempotentes.
Exemplos de casos de uso
Resumo diário de vendas para a equipe
- Schedule:
0 8 * * 1-5(dias úteis às 08:00). - HTTP request → API interna do dashboard com métricas de ontem.
- Send message para o grupo de gestores com
{{input.data.total}}.
Lembrete semanal de leads inativos
- Schedule:
0 10 * * 1(segundas às 10:00). - CRM — Get cards da coluna "Stalled".
- Loop sobre os cards → Send message com texto personalizado dos campos do card.
Broadcast pontual de lançamento de produto
- Tipo de agendamento: Run once — data/hora do lançamento.
- Send message estilo campanha ou iterar contatos de uma tag via Loop.
- O workflow permanece ativo, mas o cron não dispara novamente após a execução única.
Sincronização noturna com ERP
- Schedule:
0 2 * * *(02:00 diariamente). - HTTP request / nó ERP → buscar novos pedidos.
- Loop → CRM criar/atualizar cards; Contact upsert.
FAQ
Por que meu workflow não executou no horário agendado?
Verifique: (1) workflow está active, (2) triggers_enabled.cron é true, (3) existe um nó Schedule na definição, (4) next_execution_at está no passado, (5) o fuso horário da empresa corresponde à sua expectativa.
Posso agendar a cada 30 segundos?
O cron suporta granularidade de minuto (*/1 é o passo mínimo no cron padrão de 5 campos). Agendamento abaixo de um minuto não é suportado.
O que acontece se eu excluir o nó Schedule?
Ao salvar, a plataforma limpa cron_expression, scheduled_at e next_execution_at.
O agendamento respeita a conexão da instância?
A execução inicia de qualquer forma; nós Send message falham se a instância WhatsApp estiver offline — verifique os logs de execução.
Recorrente vs legado trigger_type: cron
Workflows antigos usavam um único campo trigger_type. Workflows modernos usam triggers_enabled derivado dos nós. Ambos os caminhos convergem no agendador.
Eventos de CRM podem usar o nó Schedule?
Eventos de board CRM (trigger_source: crm) preferem schedule_trigger como entrada se presente — em geral você usa Manual ou Webhook para fluxos ligados ao CRM; veja Automatizar o CRM com workflows.
Como pausar um agendamento sem excluir o workflow?
Desative o workflow — o agendador ignora entradas desativadas.
Referência técnica
| Campo | Localização | Descrição |
|---|---|---|
schedule_type | Dados do nó + linha do workflow | recurring |
cron_expression | Dados do nó + linha do workflow | Cron de 5 campos quando recorrente |
scheduled_at | Dados do nó + linha do workflow | Data/hora ISO quando única |
next_execution_at | Tabela workflows | Próximo horário de disparo em UTC |
triggers_enabled.cron | Tabela workflows | Derivado ao salvar pela presença do nó |
Ponto de entrada do agendador (interno): POST /workflows/cron/process-scheduled.
Payload de enfileiramento da execução:
{
"workflowId": "uuid",
"payload": { "trigger": true, "scheduled": true },
"environment": "prod",
"triggerSource": "cron"
}
Artigos relacionados
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte