Event Delivery & Retries
Outpost tracks each event, its status, and all delivery attempts. Delivery operates on an at-least-once guarantee — events may occasionally be re-delivered. Consumers should use the unique event ID to deduplicate when needed.
Automatic Retries
When a delivery attempt fails — because the destination is unavailable, misconfigured, or returns a non-2xx HTTP status — Outpost automatically retries the event.
By default, retries use an exponential backoff algorithm with a base of 2, or you can define a custom retry schedule.
You can configure retry behavior in the Hookdeck General settings or with the Config API using the MAX_RETRY_LIMIT, RETRY_INTERVAL_SECONDS, and RETRY_SCHEDULE variables.
| Variable | Default | Description |
|---|---|---|
MAX_RETRY_LIMIT | 10 | Maximum number of retry attempts before giving up |
RETRY_INTERVAL_SECONDS | 30 | Base interval in seconds for exponential backoff |
RETRY_SCHEDULE | — | Comma-separated retry delays in seconds. Overrides MAX_RETRY_LIMIT and RETRY_INTERVAL_SECONDS when set |
Example custom retry schedule:
{
"RETRY_SCHEDULE": [30, 60, 300, 900, 3600]
}
Configure retry behavior with environment variables:
| Variable | Default | Description |
|---|---|---|
MAX_RETRY_LIMIT | 10 | Maximum number of retry attempts before giving up |
RETRY_INTERVAL_SECONDS | 30 | Base interval in seconds for exponential backoff |
RETRY_SCHEDULE | — | Comma-separated retry delays in seconds. Overrides MAX_RETRY_LIMIT and RETRY_INTERVAL_SECONDS when set |
Example custom retry schedule:
RETRY_SCHEDULE=30,60,300,900,3600
Manual Retries
Any failed delivery attempt can be manually retried via the Retry API, the tenant portal or Admin UI. Manual retries are available for attempts that have exhausted automatic retries or were skipped due to the destination being disabled.
Disabled Destinations
If a destination is disabled — through the API, tenant portal, or automatically due to a failure threshold — events published to that tenant will not be delivered to it. Disabled destinations cannot be retried until re-enabled.
Delivery Attempts
Each delivery attempt records:
- The destination it was sent to
- The HTTP status code and response body (for webhook destinations)
- The timestamp and attempt number
- Whether automatic retries are exhausted
Access delivery attempts via the API Reference, the tenant portal, or Admin UI.