Início › Guias › confiabilidade-automacao
Guia

Como evitar loop infinito em automações (webhook) no n8n e no Make

Atualizado em 2026-10-23 · por Redação Automação Hoje
Como evitar loop infinito em automações webhook no n8n e no Make
Resposta rápida: Loop infinito em automações acontece quando um evento gerado pelo seu próprio fluxo volta a disparar o gatilho (ex.: webhook recebe update feito pela automação). Para evitar, combine: identificação de origem (tag/correlation id), filtros no trigger, idempotência (dedupe), e “guardrails” como limite de tentativas e circuit breaker. O conserto costuma ser simples — o difícil é perceber cedo.
· espaço publicitário ·
Em resumo
  • Loop clássico: automação atualiza um registro e o “watch/update” dispara de novo
  • Sinais: pico de execuções, mensagens duplicadas, 429 (rate limit), custo subindo
  • Prevenção: marcar eventos de saída, filtrar eventos de entrada, deduplicar e limitar reentrância
  • Em webhooks, a regra é: sempre tenha idempotência e um “reentrancy guard”
  1. 1) Confirme que é loop (não é só retry)

    Cheque o rastro: a mesma entidade (pedido/leads/ticket) reaparece com poucos segundos de diferença e sempre após uma ação do próprio fluxo. Loop é causalidade circular; retry é repetição do mesmo passo por falha. Se você vê o mesmo payload chegando com pequenas variações (ex.: updatedAt), é forte candidato a loop.

  2. 2) Ache o “ponto de reentrada” (o gatilho que você mesmo dispara)

    Mapeie qual ação do fluxo gera o evento que volta: atualizar CRM, editar planilha, enviar status para ERP, alterar tag no WhatsApp/CRM, etc. A pergunta é objetiva: “o que meu fluxo faz que faria o trigger rodar de novo?”.

  3. 3) Marque a origem do evento (tag) e filtre no início

    Quando seu fluxo fizer a alteração no sistema A, inclua um marcador de origem (por exemplo, um campo/meta/tag do tipo source=automation ou updated_by=n8n). No trigger (ou no primeiro nó/filtro), descarte eventos com esse marcador. Em muitos casos isso sozinho encerra o loop.

  4. 4) Adote idempotência (dedupe) por chave de negócio

    Mesmo com filtro de origem, ainda pode haver duplicidade (reentrega, webhook reenvia, usuário faz ações rápidas). Defina uma chave idempotente (ex.: order_id + status, ou lead_id + etapa) e guarde por um tempo (cache/DB). Se já processou, não processe de novo — responda “ok” e siga.

  5. 5) Coloque um “reentrancy guard” (TTL/lock) por entidade

    Para evitar que duas execuções concorrentes entrem em corrida e se alimentem, aplique um lock com tempo (TTL) por entidade (pedido/lead/ticket). Se o lock existe, você encerra cedo ou reprograma para depois. Não precisa ser sofisticado: o objetivo é impedir ‘pingue-pongue’.

  6. 6) Defina limites de segurança (tentativas, janelas e circuit breaker)

    Configure limites: máximo de reprocessos por entidade em X minutos e pausa automática quando a taxa de falhas/volume sai do normal. Quando não dá para “corrigir no gatilho”, o circuit breaker evita que o estrago escale (custo, bloqueio de API, queda de fila).

  7. 7) Teste o cenário de loop de propósito

    Faça um teste controlado: dispare o evento, deixe o fluxo atualizar o sistema e verifique se o trigger retorna. Se retornar, ajuste filtro/idempotência até o evento não reentrar. Esse teste vale ouro antes de publicar mudanças em produção.

Os 5 loops mais comuns (e como reconhecer rápido)

Loop infinito quase nunca parece “infinito” no começo. Ele começa como duplicidade eventual e vira tempestade quando volume cresce ou quando alguém liga um segundo gatilho.

Abaixo estão padrões que aparecem direto em n8n, Make e iPaaS em geral.

  • Atualizei um registro no CRM e o “watch updates” dispara de novo
  • Escrevi na planilha/Notion e o gatilho “row updated” volta a rodar
  • Enviei mensagem e um webhook de “message status” dispara uma nova mensagem
  • Integração bidirecional (A -> B e B -> A) sem regra de precedência
  • Tratamento de erro que reenvia o mesmo evento para o mesmo endpoint sem dedupe

Checklist de diagnóstico (o que olhar antes de sair mexendo)

Quando o time está sob pressão, a tentação é ‘desligar tudo’. Ajuda, mas você aprende pouco. Em geral, dá para diagnosticar em 10–20 minutos se você seguir uma ordem.

SinalO que costuma significarPrimeira ação recomendada
Execuções explodindo em poucos minutosReentrada (loop) ou trigger muito sensívelIdentificar entidade repetida e o ponto de reentrada
Mesma entidade processada muitas vezes (mesmo ID)Falta de idempotência/dedupeImplementar chave idempotente e janela de TTL
Muitos erros 429 / bloqueio de APILoop causando rate limit em cascataAplicar backoff + circuit breaker + limite por entidade
Mensagens duplicadas no WhatsApp/EmailEventos duplicados ou loop de status/entregaFiltrar eventos de status e marcar origem
Atualizações alternando A/B (pingue-pongue)Sincronização bidirecional sem “fonte da verdade”Definir regra de precedência e ignorar alterações ‘espelhadas’

Padrões que funcionam (independente da ferramenta)

Ferramenta muda, padrão fica. Se você aplicar estes três, você derruba a maioria dos loops do mercado:

  • Filtro de origem: todo evento gerado pela automação carrega uma marca; o trigger ignora essa marca
  • Idempotência: mesma intenção de negócio não pode ser processada duas vezes (mesmo que o evento chegue duas vezes)
  • Limites e proteção: lock/TTL por entidade + circuit breaker para segurar ondas de eventos

Armadilhas comuns (onde muita gente se engana)

Algumas correções parecem certas, mas só escondem o problema.

Se você apenas aumenta intervalo de polling, reduz frequência do loop — não elimina a causa. Se você apenas coloca um delay grande, você cria fila e o loop volta depois.

  • Resolver com delay fixo em vez de dedupe (o loop só fica mais lento)
  • Criar sincronização bidirecional sem um campo ‘last_modified_by’
  • Confiar que ‘webhook sempre chega uma vez’ (na prática, reentrega acontece)
  • Ignorar concorrência: duas execuções simultâneas podem se realimentar

Perguntas frequentes

Como diferenciar loop infinito de retries normais por falha?
Retry repete um passo porque ele falhou (timeout/429/500) e geralmente mantém o mesmo contexto. Loop tem causa circular: uma ação do fluxo gera um novo evento que reativa o trigger. O indício mais forte é a entidade reaparecer após um update feito pela própria automação.
Webhook pode chegar duplicado mesmo sem loop?
Pode. Muitos provedores reentregam webhooks em caso de timeout, resposta não-2xx ou instabilidade. Por isso idempotência é requisito, não luxo: trate evento como “pode repetir” e dedupe por chave de negócio.
Qual é a correção mais eficiente para loop em CRM/planilha?
Marcar a origem (ex.: updated_by=automation) na escrita e filtrar no início do fluxo. Em seguida, adicionar idempotência para cobrir duplicidade e concorrência. Normalmente essa dupla resolve 80% dos casos.
Como evitar pingue-pongue em integração bidirecional (A ↔ B)?
Defina uma regra de precedência (quem é a fonte da verdade por campo) e implemente “supressão de eco”: quando A atualizar B, registre um correlation id/flag e ignore o evento de volta em A dentro de uma janela de tempo.

Leia também