Flow Studio
Retry Policy
Configuring automatic retry with exponential backoff for outbound webhook calls — max attempts, backoff strategy, and which errors trigger a retry.
Retry Configuration
{
"retry": {
"maxAttempts": 3,
"backoffType": "exponential",
"initialDelaySeconds": 2,
"maxDelaySeconds": 60,
"retryOnStatusCodes": [429, 500, 502, 503, 504],
"retryOnNetworkError": true
}
}
Backoff Types
| Type | Delay Formula | Example (initial=2s) |
|---|---|---|
fixed | Always initialDelay | 2s, 2s, 2s |
linear | attempt * initialDelay | 2s, 4s, 6s |
exponential | initialDelay * 2^(attempt-1) | 2s, 4s, 8s (capped at maxDelay) |
jitter | Exponential + random jitter | 1.8s, 3.7s, 8.2s (distributed) |
Retry Decision Logic
private bool ShouldRetry(HttpResponseMessage? response, Exception? ex, RetryConfig config)
{
if (ex is HttpRequestException or TaskCanceledException)
return config.RetryOnNetworkError;
if (response != null)
return config.RetryOnStatusCodes.Contains((int)response.StatusCode);
return false;
}
Retry Attempt Tracking in Output
After all retries, the node output includes retry metadata:
{
"statusCode": 200,
"body": { "accepted": true },
"retryAttempts": 2,
"totalElapsedMs": 6450
}
Idempotency: Only retry calls to idempotent endpoints. If the external API creates a record on each call, retrying may create duplicates. Use idempotency keys (a unique request ID in the header) to tell the receiver to deduplicate.