Comportamiento por defecto
Out of the box, sin configuración de retry, un nodo HTTP hace un solo intento con estos defaults:| Setting | Default |
|---|---|
| Método | POST |
| Timeout por intento | 30 segundos |
| Reintentos en falla | deshabilitados (retryOnFailure: false) |
Content-Type | application/json (auto-inyectado cuando hay body) |
Accept | application/json (auto-inyectado) |
2xx o la red falla, la ejecución falla inmediatamente y cae al dead letter a menos que hayas habilitado reintentos.
Los reintentos son opt-in a nivel de flow. La mayoría de flows en producción los habilitan. Setea
retryOnFailure: true y ajusta retryCount por flow.Política de reintentos
Cuando los reintentos están habilitados, el nodo HTTP intenta la petición hastaretryCount + 1 veces en total, esperando entre intentos con backoff exponencial cap a 8 segundos.
| Setting | Rango | Default | Máximo |
|---|---|---|---|
retryCount | 0–5 | 2 | 5 (hasta 6 intentos total) |
| Backoff | min(1000 × 2^(attempt - 2), 8000) ms | — | — |
retryCount: 5:
timeout).
Qué cuenta como falla
| Resultado | ¿Reintentado? |
|---|---|
Respuesta non-2xx | Sí |
| Timeout | Sí |
| Error de red / fallo de DNS | Sí |
| Error de resolución de auth (p. ej. fetch de token OAuth2 falló) | No — falla inmediatamente |
| URL bloqueada (petición a host interno) | No — falla con BLOCKED_URL |
Idempotencia de tu lado
Como los reintentos repiten el mismo body, tu endpoint debe ser idempotente. Usaevent.id (el UUID de ejecución del flow, generado una vez por ejecución y estable a través de reintentos) como llave de dedup.
Dead letter
Cuando se agotan los reintentos, la ejecución se mueve a la tablaflow_dead_letter. Los flows fallidos se inspeccionan y reproducen manualmente desde Settings → Integration Flows → Executions → Dead letter. Las repeticiones producen un nuevo event.id (porque son una nueva ejecución de flow); tu dedup de idempotencia no las bloqueará, lo cual es lo que quieres.
Garantías de orden
- Sin garantía de orden entre órdenes. Dos eventos
order.completedpueden llegar fuera de orden de negocio. Ordena pordata.createdAtsi necesitas orden. - Sin garantía de orden entre tipos de evento para la misma orden.
order.invoicedpuede llegar antes o después deorder.completedpara el mismodata.orderId. No asumas que uno precede al otro. - Dentro de una sola ejecución de flow, los reintentos preservan identidad. El mismo
event.idllega múltiples veces durante reintentos; reintentos posteriores no cambian el body.
Autenticación
Configura la auth en el nodo HTTP del flow. Fire inyecta la credencial en la petición antes de enviarla.Bearer token
Authorization: Bearer <token>. Úsalo para secrets estáticos o JWTs de vida corta que rotas periódicamente.
API key
OAuth2 client credentials
Authorization: Bearer <access_token>.
None
Seguridad de URL
Fuera de entornos de desarrollo, Fire bloquea peticiones a rangos de IP internos/privados (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). Los intentos de llegar a esos hosts fallan con BLOCKED_URL y no se reintentan.
En entornos dev (NEXT_PUBLIC_ENVIRONMENT=dev o NODE_ENV=development), este check se salta para que localhost/ngrok y similares puedan usarse.
Observabilidad
Cada ejecución escribe una fila visible en el dashboard en Settings → Integration Flows → Executions. Cada fila incluye:- Trigger type, store, account, vendor
- Timestamps de inicio/fin de ejecución
- Cantidad de intentos
- Status final (success / failed / dead-letter)
- Resúmenes por nodo (URL de petición HTTP, status de respuesta, excerpt de body, mensaje de error)
Firma HMAC (roadmap)
La firma HMAC-SHA256 de bodies salientes está en el roadmap. Cuando salga:- Se generará un secret por flow en el dashboard
- Las peticiones salientes llevarán un header
X-Fire-Signaturecon el HMAC del body - Esta página documentará el algoritmo y los pasos de verificación
Patrones comunes
- Habilita siempre los reintentos en flows de producción. Un solo timeout no debería tirar un evento.
- Cap de reintentos en 3 a menos que tengas un downstream flaky de cola larga. Más reintentos significa más latencia hasta dead-letter.
- Usa
event.idpara idempotencia, nodata.orderId. Una entrega reintentada tiene el mismoevent.id, perodata.orderIdes el mismo a lo largo de todo el lifecycle de la orden (completed, cancelled, fiscal authorized, fiscal cancelled todos lo comparten). - Guarda
_meta.executionIdy_meta.attempten eventos persistidos — son invaluables para debuggear “por qué se procesó dos veces la misma orden”. - Mantén
timeoutcorto (5–10s) y confirma rápido en tu handler. Usa una cola para hacer el trabajo real en background.
Próximo
Resumen de eventos
El modelo de eventos en una página.
Integration Flows
Definición del flow, body templates y reglas de matching.

