Skip to main content
Use an idempotency key on every Message send that may be retried.

Supply a key

Use the header:
Or set it in the Message:
When both are present, they must match.

Retry behavior

Keys can contain 1 to 255 characters.

Derive reply keys from events

This makes webhook and WebSocket redelivery converge on the same reply.

Event idempotency

Event delivery is at least once. Store event_id under a unique constraint before acknowledgement. Message idempotency and event deduplication solve different boundaries; use both.