HOOK order.dispatch_overdue

Snapcaster sends this event once per order, when the order has not shipped by its ship-by deadline, dispatch.deadline_at: the end of the third Toronto business day after it was placed. Snapcaster pauses the seller payout for the order at the same moment. The order stays open, and marking it shipped does not lift the pause: dispatch.payout_paused stays true until Snapcaster reviews the order and releases the payout. Ship it, report its tracking, and have the seller contact Snapcaster support. Snapcaster marks orders overdue only in production, so in the sandbox you can read dispatch.overdue_at and dispatch.payout_paused but never receive order.dispatch_overdue. If you miss the event, the order comes back in your next syncToken poll, and GET /orders/{orderId} shows dispatch.overdue_at and dispatch.payout_paused. The envelope, signing and retries match order.created; see https://developers.snapcaster.ca/guide/webhook-signing and https://developers.snapcaster.ca/guide/path-b#delivery-semantics. Subscriptions orders and both receive it; an inventory subscription never does. Deduplicate by event_id. Events can arrive out of order, so compare created_at.

Example

Delivery payload: Signed order dispatch overdue payload
{
  "event_id": "evt_sandbox_01K4B2M7Q9T3V6X8Z1C4E7G0JN",
  "type": "order.dispatch_overdue",
  "created_at": "2026-09-11T05:00:00.000Z",
  "data": {
    "order_id": "ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW",
    "seller_id": 42,
    "deadline_at": "2026-09-11T03:59:59.999Z",
    "overdue_at": "2026-09-11T05:00:00.000Z",
    "payout_paused": true
  },
  "api_version": "2026-10"
}

Signature headers

Snapcaster sends a POST to your webhook endpoint with these headers. Webhook signing shows how to verify them.

X-Snapcaster-Timestamp string required

Unix seconds when the request was signed; reject if outside a ±5 minute window.

X-Snapcaster-Signature string required

sha256= + lowercase hex of HMAC_SHA256(signingSecret, timestamp ‖ raw request body).

Delivery payload

The signed order.dispatch_overdue event.

Payload type: OrderDispatchOverdueEvent

Envelope fields

event_id string required

A globally unique event id that stays the same across retries. Use it to deduplicate deliveries (STABLE).

Example evt_sandbox_01K4B2M7Q9T3V6X8Z1C4E7G0JN

type string required

The event type (STABLE).

Constraints: allowed values: order.dispatch_overdue Example order.dispatch_overdue

created_at string required

ISO-8601 UTC instant of the change the event reports; unchanged across retries (STABLE).

Example 2026-09-11T05:00:00.000Z

data DispatchOverdueEventData required

The operation or event payload.

api_version string required

The dated API version used for this payload, frozen when Snapcaster queued the delivery. Changing the platform pin does not change queued events or retries; they keep the same version. See https://developers.snapcaster.ca/guide/api-versioning (STABLE).

Constraints: allowed values: 2026-10 Example 2026-10

Payload fields

data.order_id string required

The order that missed its ship-by deadline (STABLE).

Example ord_sandbox_01K4A8Y6D4QJH2N3P5R7S9T0VW

data.seller_id integer required

The seller that owns the order. Use this id to route the event to the right store (STABLE).

Example 42

data.deadline_at string required

The ship-by deadline the order missed, the order read’s dispatch.deadline_at (STABLE).

Constraints: format: date-time Example 2026-09-11T03:59:59.999Z

data.overdue_at string required

When Snapcaster marked the order overdue (STABLE).

Constraints: format: date-time Example 2026-09-11T05:00:00.000Z

data.payout_paused boolean required

True while the seller payout for this order is paused. An overdue dispatch pauses it, and so can a Snapcaster review of the order; shipping does not lift it, only Snapcaster releasing the payout does (STABLE).

Constraints: allowed values: true Example true

Receiver response

200 - Return any 2xx after verifying the event and durably accepting it. This event moves no stock, so its 2xx acknowledges no sale and leaves every stock hold as it was.