Trigger.dev: jobs e automações
O piloto automático do stack. Tudo que a plataforma faz "sozinha" passa pelo Trigger.dev.
O que é
Plataforma de jobs agendados e workflows com retry, observabilidade e o código versionado junto da aplicação. No ClubPetro vive dentro do apps/web, com acesso ao mesmo Drizzle/Supabase e aos mesmos tipos.
Onde usamos
Dezenas de jobs (cron + on-demand): recálculo de health score, sincronizações (Bitbucket, GA/GSC, Kommo), resumos por IA, digests de atendimento, alertas de SLA, FinOps. O padrão se repete: acorda → lê do banco → opcionalmente chama IA → grava → o usuário vê pronto.
Conceitos-chave
schedules.task= job por cron;task= on-demand (disparado por evento/código).- Retry configurável (tentativas, intervalo, backoff).
- Idempotency key — garante que disparar o mesmo trabalho duas vezes não duplica efeito.
- Concorrência — limite de quantas execuções rodam em paralelo (protege APIs externas e o banco).
- Waits — um job pode pausar e retomar (esperar evento/tempo) sem segurar recurso.
- Observabilidade — log e status por execução no dashboard.
Boas práticas
- Escreva idempotente sempre —
upsert, checar "já feito" antes de criar. - Dispare manual e olhe o log antes de confiar no automático.
- Comece pequeno — um job que faz uma coisa bem é mais fácil de depurar que um workflow gigante.
- Promova fluxos do n8n (#13) pra cá quando virarem críticos/recorrentes.
Pegadinhas
- ⚠️ Schedules só sincronizam no deploy. Mudou o cron e não deployou? O agendamento antigo continua valendo.
- ⚠️ Pinar a CLI na versão do SDK:
npx trigger.dev@<versão> deploy— versões divergentes geram erro chato. - ⚠️ Timezone no cron vai como objeto
{ pattern, timezone }— senão roda no fuso errado (o "job das 6h" chega às 3h). - ⚠️ Retry sem idempotência multiplica efeito colateral (e-mail/cobrança duplicada).
Quando usar (e quando não)
Use pra qualquer coisa que precisa rodar no horário, em background, com retry e rastro. Não automatize um processo instável no manual — você só faz a bagunça acontecer sozinha, mais rápido.
Trigger.dev transforma "alguém precisa rodar isso toda manhã" em "já rodou, está aqui o resultado".
Próximo da série: #05 — Evolution API.