Event envelope
Generated from COPE public event contracts. Do not edit this page by hand.Every webhook delivery is one signed JSON object. The event body is
data; the other six fields say which event it is and when.
Envelope Fields
Which time to use
- Freshness:
occurred_at. It is when COPE recorded the event, to the millisecond, and every retry and replay of the event repeats it. Use it to tell how old the information in a delivery is, and to put events in their approximate order. - It is not a strict order. Two events about the same resource can carry the same
occurred_at, and deliveries can arrive in any order. Where a body states the state it describes — for exampleapproval_statusandprevious_approval_statusincart.product.approval_status.changed— compare that state rather than times. No event body carries a sequence number. created_atis this attempt. It changes on every retry and replay. Use it to see how long an event waited to reach you, not to order events.- A body’s own
occurred_at(for example incart.order.completedorpayment.*) is the business time of that fact, such as when a payment failed. It can be earlier than the envelope’soccurred_at, which is when COPE recorded the event.
occurred_at (October 2026) carry, in occurred_at, the time COPE first queued or attempted that delivery — a queue time, not when the event happened — and every later retry and replay of it repeats that value.