> ## Documentation Index
> Fetch the complete documentation index at: https://developers.insuranceboosters.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Reintentos e idempotencia

> Evita efectos duplicados cuando una ejecución llama servicios externos.

Una automatización puede recibir el mismo evento o repetir un paso después de un error. Si el paso crea pagos, mensajes o registros en otro sistema, diseña esa operación para que repetirla no duplique el resultado.

## Qué garantiza cada trigger

| Trigger | Identificador del evento | Comportamiento ante el mismo evento |
| - | - | - |
| `webhook` | No agrega `eventId`. | Cada solicitud HTTP aceptada crea una ejecución nueva, aunque el body sea idéntico. |
| `cron` | No agrega `eventId`. | Cada horario procesado crea una ejecución. Dos ejecuciones del mismo workflow pueden solaparse. |
| Registro creado/actualizado | `trigger.body.eventId` | La misma automatización no crea otra ejecución con ese ID mientras se conserve el registro de deduplicación. |
| Contacto creado/actualizado | `trigger.body.eventId` | La misma automatización no crea otra ejecución con ese ID mientras se conserve el registro de deduplicación. |
| Respuesta de WhatsApp Flow | `trigger.body.eventId` | Los reintentos del mismo mensaje conservan el ID y no crean otra ejecución de la misma automatización. |

Para los triggers con `eventId`, la plataforma conserva la deduplicación durante al menos 30 días. No uses ese periodo como almacenamiento permanente de IDs.

Si la entrega interna de un evento de registro, contacto o WhatsApp falla, la plataforma la conserva y realiza hasta ocho intentos con esperas crecientes.

## Las llamadas externas deben aceptar reintentos

La plataforma intenta recuperar pasos que fallan antes de terminar. Una solicitud externa puede completarse y repetirse si después ocurre un error al guardar el resultado.

Para operaciones con efectos, envía una clave de idempotencia que el sistema receptor guarde y rechace si ya fue procesada.

### Trigger con `eventId`

```json theme={null}
{
  "method": "POST",
  "url": "https://api.example.com/payments",
  "headers": {
    "Content-Type": "application/json",
    "X-Idempotency-Key": "create-payment:{{trigger.body.eventId}}"
  },
  "body": {
    "record": "{{trigger.body.record}}"
  }
}
```

Usa un prefijo distinto por operación. Así dos pasos que procesan el mismo evento no comparten accidentalmente la misma clave.

### Webhook

El trigger webhook no genera `eventId`. Incluye tu propio identificador en el body:

```json theme={null}
{
  "requestId": "PAY-1001",
  "amount": 1250
}
```

y úsalo en el paso:

```json theme={null}
{
  "headers": {
    "X-Idempotency-Key": "create-payment:{{trigger.body.requestId}}"
  }
}
```

Si reintentas el webhook, conserva el mismo `requestId`. La plataforma creará otra ejecución, pero el sistema receptor podrá reconocer la operación.

## Respuestas HTTP y reintentos

El paso `http.request` guarda respuestas HTTP, incluso `4xx` y `5xx`, como resultado del paso. Esos status no se reintentan automáticamente por sí solos.

Los errores de conexión o ejecución sí pueden reintentarse. La configuración predeterminada permite hasta cinco intentos del paso. Por eso la idempotencia sigue siendo necesaria.

## Relacionado

* [Webhook](https://developers.insuranceboosters.com/automatizaciones/triggers/webhook.md)
* [Respuesta de WhatsApp Flow](https://developers.insuranceboosters.com/automatizaciones/triggers/respuesta-whatsapp-flow.md)
* [Paso HTTP](https://developers.insuranceboosters.com/automatizaciones/paso-http.md)
* [Consultar ejecución](https://developers.insuranceboosters.com/automatizaciones/consultar-ejecucion.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.