Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/using-the-api/webhooks/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ During the recovery of multiple messages, we will send all messages at once, app

### Idempotency

Whilst the Codat system's webhook functionality aims for exactly once delivery of a message, due to the fact messages can be resent, this isn't always possible to guarantee. If idempotency is important for your system, we recommend making use of the HTTP request's webhook-id header, which functions as an idempotency key for a given message, (i.e remains constant across all attempts to deliver that message), and can therefore be used by your system to ensure messages are not reprocessed.
Codat's webhook service uses an at-least-once delivery model. Every message is guaranteed to be delivered, but conditions such as high load or network instability can cause the same message to be delivered more than once.
Comment thread
mattwbeard marked this conversation as resolved.
Comment thread
mattwbeard marked this conversation as resolved.
Comment thread
mattwbeard marked this conversation as resolved.
To handle duplicates safely, make your webhook handler idempotent. Every HTTP request includes a `webhook-id` header whose value stays the same across all delivery attempts for a given message, so you can use it to detect and discard duplicates before processing.

## Endpoint failures

Expand Down
Loading