Início › Guias › operacao-e-confiabilidade
Guia

Timezone em automações (n8n, Make, Zapier): como parar de enviar mensagem no horário errado

Atualizado em 2026-10-12 · por Redação Automação Hoje
Como evitar erro de fuso horário em automações no n8n, Make e Zapier
Resposta rápida: Para não errar horário em automações, padronize tudo em UTC, converta para o fuso do usuário só na “borda” (envio/agenda), e nunca misture data sem timezone com data com timezone. Valide o que cada app entrega (ISO 8601, timestamp), registre o timezone no payload e teste com casos de virada de dia e mudança de fuso.
· espaço publicitário ·
Em resumo
  • Defina um padrão: UTC para armazenamento e processamento; local apenas para exibição/entrega
  • Evite datas “soltas” (ex.: 2026-10-12 09:00) sem offset; prefira ISO 8601 com timezone
  • Guarde o timezone do usuário (ex.: America/Sao_Paulo) junto com a data original
  • Em webhooks/APIs, trate timestamps em milissegundos vs segundos e offsets (+00:00, -03:00)
  • Teste sempre com meia-noite, fim de mês e agendamentos próximos ao limite do dia
  1. 1) Escolha uma regra única de fuso para o “core”

    A regra mais segura é: processar e armazenar em UTC. Isso reduz surpresa quando dados passam por vários sistemas (CRM, planilha, gateway de pagamento, WhatsApp, e-mail). Se alguém no time insistir em “sempre -03:00”, ainda assim documente e aplique como padrão — o problema é ter mais de um padrão ao mesmo tempo.

  2. 2) Descubra de onde vem a data e em qual formato

    Antes de “corrigir no feeling”, confirme o formato real que chega: ISO 8601 com offset (ex.: 2026-10-12T14:00:00-03:00), ISO em UTC (Z), Unix timestamp (segundos ou milissegundos) ou string local (pior caso). O erro clássico é tratar milissegundos como segundos (ou vice-versa) e pular horas/dias.

  3. 3) Normalize para UTC imediatamente

    Assim que a data entrar no workflow (gatilho, webhook, leitura de planilha, resposta de API), converta para UTC e trabalhe só com esse valor. Em ferramentas visuais, isso normalmente é uma etapa de “Date/Time parse + convert timezone”. Em código, use bibliotecas de data com timezone (evite manipulação manual de horas).

  4. 4) Carregue o timezone do usuário/conta no payload

    Quando o dado é “agendar para o cliente”, não basta guardar a data: guarde também o timezone do cliente (idealmente IANA, tipo America/Sao_Paulo). Se você só guarda “-03:00”, pode dar certo em parte dos casos, mas perde contexto para regiões/contas com fusos diferentes.

  5. 5) Converta para horário local apenas no momento de enviar/agendar

    Faça a conversão na borda: ao criar um evento no calendário, disparar uma mensagem, ou renderizar um relatório. O core fica em UTC; a saída respeita o timezone do destinatário. Isso também facilita auditoria: você consegue logar ‘UTC do sistema’ e ‘local do usuário’ no mesmo registro.

  6. 6) Crie testes de calendário (os casos que quebram de verdade)

    Monte um conjunto mínimo de testes com datas críticas: 23:30–00:30, último dia do mês, e agendamentos para “amanhã 09:00” em diferentes fusos. Mesmo sem números exatos de volume, esses testes pegam a maioria dos bugs antes de virar incidente em produção.

O que normalmente causa erro de fuso em automação

Não é “bug do n8n/Make/Zapier” na maioria das vezes. É mistura de formatos e suposições: um app manda UTC, outro assume local; uma planilha guarda texto sem timezone; o webhook chega como timestamp em milissegundos e alguém interpreta como segundos.

Outro padrão recorrente: o time testa tudo com o próprio fuso. A automação parece correta… até entrar um lead de outro estado/país, ou até alguém mudar configuração regional em um app.

Checklist rápido: como eu sei se meu fluxo está certo?

Se você consegue responder “sim” para quase tudo abaixo, a chance de mensagem fora de hora cai muito.

PerguntaResposta idealSe não, o que acontece
Eu armazeno data/hora em UTC?Sim, sempreRelatórios e reprocessamentos mudam a hora sem explicação
Eu guardo o timezone do usuário/conta?Sim (IANA: America/Sao_Paulo, etc.)Agendamentos “9h” viram “8h/10h” dependendo do sistema
Eu sei se o timestamp é em ms ou s?Sim, e valido no parseEventos aparecem em 1970 ou anos distantes, ou pulam horas/dias
Eu converto para local só na borda?SimDuplicidade de conversão e horários “andando” a cada etapa
Meus logs mostram UTC e local (quando aplicável)?SimDepuração vira tentativa e erro

Padrões de formato que reduzem dor de cabeça

Se você precisa escolher um formato para trafegar datas entre automações e sistemas, priorize padrões explícitos. O que você quer evitar é “2026-10-12 09:00” sem contexto.

Boas opções: ISO 8601 com offset (ex.: 2026-10-12T09:00:00-03:00) ou ISO em UTC (ex.: 2026-10-12T12:00:00Z). Para alta interoperabilidade, ISO 8601 costuma ser mais simples de auditar em logs.

Como lidar com agenda recorrente (ex.: “todo dia às 9h do cliente”)

Aqui é onde mais gente se perde: recorrência é “horário local do usuário”, não um instante fixo em UTC. A estratégia mais robusta é guardar: (a) a regra de recorrência (ex.: daily 09:00), (b) o timezone do usuário, e (c) o próximo disparo calculado.

Se você salvar apenas o próximo disparo em UTC e recalcular no fuso errado, em algum momento vai mandar fora do combinado. Mesmo que você não tenha mudança de horário de verão hoje na sua região, usuários e integrações podem estar em fusos diferentes.

Perguntas frequentes

Se minha operação é toda no Brasil, posso ignorar timezone e usar -03:00 fixo?
Dá para funcionar em cenários simples, mas ainda é um risco: integrações podem entregar UTC, pessoas podem viajar, contas podem estar configuradas em outra localidade e alguns sistemas tratam “-03:00” diferente de “America/Sao_Paulo”. Se você quer previsibilidade, UTC no core + timezone explícito do usuário é o caminho mais estável.
Por que minha automação “adianta/atrasa” exatamente 3 horas?
Quase sempre é conversão dupla (UTC→local e depois local→UTC de novo), ou um sistema assumindo que uma string sem timezone está em UTC quando na verdade era local (ou vice-versa). Verifique o formato original e se existe ‘Z’/offset no timestamp.
Como eu testo isso sem ter usuários em vários países?
Crie casos artificiais no payload: simule timezone diferente (ex.: America/Manaus, America/New_York), rode o mesmo fluxo e compare: valor original, valor normalizado em UTC e valor convertido para a saída. O teste que mais pega bug é agendar algo próximo da meia-noite.
Planilhas (tipo Google Sheets) são vilãs de timezone?
Com frequência, sim. Planilhas costumam armazenar data de forma que depende de configurações regionais e da própria planilha. Se a automação lê como texto, você perde timezone. A saída é padronizar: salvar ISO 8601 (com timezone) como string, ou salvar timestamp e documentar unidade (s/ms).

Leia também