Overview
Calypso does not guarantee strict webhook delivery order.
Webhook events can be delivered later than newer events, retried after temporary failures, or received more than once. Build webhook processing around current object state, final statuses, and idempotency.
Integration requirements
| Requirement | Description |
|---|
| Process webhooks idempotently | Repeated delivery of the same event must not create duplicate business actions. |
| Do not rely only on delivery order | Intermediate statuses can arrive after a newer status. |
| Store event identifiers | Use event identifiers to detect already processed webhook events. |
| Request current state when uncertain | If webhook order is unclear, request the current object state through the relevant API method. |
| Prefer final statuses for business decisions | Use terminal statuses for final accounting, fulfillment, or reconciliation decisions. |
Recommended handling
| Case | Recommendation |
|---|
| Duplicate webhook is received | Return 200 OK and do not repeat the same business action. |
| Older status is received after a newer status | Keep the latest reliable object state and request current details from the API if needed. |
| Critical flow depends on exact status | Combine webhook processing with status polling or an API status check. |