Comportamento padrão
Out of the box, sem configuração de retry, um nó HTTP faz uma única tentativa com estes padrões:| Setting | Default |
|---|---|
| Método | POST |
| Timeout por tentativa | 30 segundos |
| Retentativas em falha | desabilitadas (retryOnFailure: false) |
Content-Type | application/json (auto-injetado quando há body) |
Accept | application/json (auto-injetado) |
2xx ou a rede falha, a execução falha imediatamente e cai para o dead letter, a menos que você tenha habilitado retentativas.
Retentativas são opt-in a nível de flow. A maioria dos flows em produção habilita. Defina
retryOnFailure: true e ajuste retryCount por flow.Política de retentativas
Quando retentativas estão habilitadas, o nó HTTP tenta a requisição atéretryCount + 1 vezes no total, esperando entre tentativas com backoff exponencial limitado a 8 segundos.
| Setting | Range | Default | Máximo |
|---|---|---|---|
retryCount | 0–5 | 2 | 5 (até 6 tentativas total) |
| Backoff | min(1000 × 2^(attempt - 2), 8000) ms | — | — |
retryCount: 5:
timeout).
O que conta como falha
| Resultado | Retried? |
|---|---|
Resposta non-2xx | Sim |
| Timeout | Sim |
| Erro de rede / falha de DNS | Sim |
| Erro de resolução de auth (ex.: fetch de token OAuth2 falhou) | Não — falha imediatamente |
| URL bloqueada (requisição a host interno) | Não — falha com BLOCKED_URL |
Idempotência do seu lado
Como retentativas repetem o mesmo body, seu endpoint precisa ser idempotente. Useevent.id (o UUID de execução do flow, gerado uma vez por execução e estável através de retentativas) como chave de dedup.
Dead letter
Quando todas as retentativas se esgotam, a execução é movida para a tabelaflow_dead_letter. Flows falhos podem ser inspecionados e reprocessados manualmente em Settings → Integration Flows → Executions → Dead letter. Reprocessamentos produzem um novo event.id (porque são uma nova execução de flow); seu dedup de idempotência não os bloqueará, o que é o que você quer.
Garantias de ordem
- Sem garantia de ordem entre pedidos. Dois eventos
order.completedpodem chegar fora da ordem de negócio. Ordene pordata.createdAtse precisar de ordem. - Sem garantia de ordem entre tipos de evento para o mesmo pedido.
order.invoicedpode chegar antes ou depois deorder.completedpara o mesmodata.orderId. Não assuma que um precede o outro. - Dentro de uma única execução de flow, retentativas preservam identidade. O mesmo
event.idchega múltiplas vezes durante retentativas; retentativas posteriores não alteram o body.
Autenticação
Configure a auth no nó HTTP do flow. O Fire injeta a credencial na requisição antes de enviar.Bearer token
Authorization: Bearer <token>. Use para secrets estáticos ou JWTs de vida curta que você rotaciona periodicamente.
API key
OAuth2 client credentials
Authorization: Bearer <access_token>.
None
Segurança de URL
Fora de ambientes de desenvolvimento, o Fire bloqueia requisições para faixas de IP internas/privadas (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, 169.254.0.0/16, IPv6 link-local). Tentativas de chegar a esses hosts falham com BLOCKED_URL e não são retriadas.
Em ambientes dev (NEXT_PUBLIC_ENVIRONMENT=dev ou NODE_ENV=development), essa checagem é pulada para que localhost/ngrok e similares possam ser usados.
Observabilidade
Cada execução escreve uma linha visível no dashboard em Settings → Integration Flows → Executions. Cada linha inclui:- Trigger type, store, account, vendor
- Timestamps de início/fim de execução
- Quantidade de tentativas
- Status final (success / failed / dead-letter)
- Resumos por nó (URL da requisição HTTP, status de resposta, excerpt de body, mensagem de erro)
Assinatura HMAC (roadmap)
A assinatura HMAC-SHA256 de bodies de saída está no roadmap. Quando sair:- Um secret por flow será gerado no dashboard
- As requisições de saída carregarão um header
X-Fire-Signaturecom o HMAC do body - Esta página documentará o algoritmo e os passos de verificação
Padrões comuns
- Sempre habilite retentativas em flows de produção. Um único timeout não deveria derrubar um evento.
- Limite retentativas a 3 a menos que tenha um downstream flaky de cauda longa. Mais retentativas significa mais latência até dead-letter.
- Use
event.idpara idempotência, nãodata.orderId. Uma entrega retriada tem o mesmoevent.id, masdata.orderIdé o mesmo durante todo o lifecycle do pedido (completed, cancelled, fiscal authorized, fiscal cancelled todos compartilham). - Salve
_meta.executionIde_meta.attemptem eventos persistidos — são inestimáveis para debugar “por que o mesmo pedido foi processado duas vezes”. - Mantenha
timeoutcurto (5–10s) e confirme rápido no seu handler. Use uma fila para fazer trabalho real em background.
Próximo
Visão geral de eventos
O modelo de eventos em uma página.
Integration Flows
Definição do flow, body templates e regras de matching.

