Lifecycle
Retry schedule
Total window before dead-lettering: ~36 minutes.
Mapping.Travel does not implement infinite retries. If your endpoint or bucket is unavailable for hours, dropping events is preferable to building an unbounded backlog.
Failure classes
Different failure types produce different audit-log reason codes:
After 4 failed attempts, the delivery is marked
DEAD and the reason code is written to the audit log.
Auto-disable
If a destination accumulates 5 dead deliveries within any 24-hour window, it is automatically set toINACTIVE. No further deliveries are attempted until you re-enable it.
To re-enable a destination:
POST /api/v1/delivery-destinations/{id}/test). A successful test auto-reactivates a disabled destination.
Response handling (webhooks)
Idempotency (webhooks)
Every event has a stableeventId field reused across every retry. The delivery id changes per attempt.
Use eventId as the dedup key:
Idempotency (S3 and SFTP)
S3 and SFTP deliveries write a file with a deterministic name. If a delivery is retried, the file is overwritten with identical content — the result is the same whether one or three attempts succeed.Debugging
List recent delivery attempts for a destination:status, attemptCount, lastError, and timestamps. In the app, open Developers → Delivery destinations → [destination name] → Deliveries.
Payload size limit (webhooks)
Webhook payloads are capped at 64 KB. If a single event’s data exceeds the cap, thedata field is replaced with { "truncated": true, "dataRef": "delivery/<id>" }. Query the API for the full state if you encounter this.
Backpressure
If an organization accumulates more than 10,000PENDING deliveries, new deliveries are dropped silently and an hourly audit-log entry records the back-pressure event. Once the queue drains below the threshold, normal delivery resumes.