> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.rushorder.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.rushorder.com/_mcp/server.

# Event Reference

## Common fields

* `orderNumber` is the Rush Order order number, and `alternateOrderNumber` is your own.
* `refId` is the reference ID returned when an order is submitted through the
  [Orders API](/getting-started#1-submit-the-order).
* `packageId` identifies one shipment of an order: the client code, order number and
  package letter, such as `ABC98765A`.

## order.whready

Sent once per Rush Order order number, when an order enters the warehouse system.
`timestamp` is when the order entered it.

| Field                           | Type           | Description                                                                                                                       |
| ------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `refId`, `alternateOrderNumber` | string or null | See [common fields](#common-fields).                                                                                              |
| `orderNumber`                   | string         | The Rush Order order number.                                                                                                      |
| `orderDate`                     | string or null | The order date received with the order, ISO 8601 with its offset.                                                                 |
| `shipMethod`                    | string or null | The order's ship method code.                                                                                                     |
| `items[]`                       | array          | The order's lines, excluding zero quantities: `sku` (yours), `internalSku` (Rush Order's), `disposition`, `location`, `quantity`. |

**`Example`**

```json title="Example" maxLines=0
{
  "type": "order.whready",
  "timestamp": "2026-09-20T18:02:10.123+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "refId": "202620091210ABC1042",
    "alternateOrderNumber": "SHOP-1042",
    "orderNumber": "98765",
    "orderDate": "2026-09-20T17:12:45+00:00",
    "shipMethod": "UGA",
    "items": [
      {
        "sku": "WIDGET-BLU",
        "internalSku": "ABC-WIDGET-BLU",
        "disposition": "A-Stock",
        "location": "USW",
        "quantity": 2
      },
      {
        "sku": "ABC-WIDGET-RED",
        "internalSku": "DMG-ABC-WIDGET-RED-O",
        "disposition": "DMG",
        "location": "USC",
        "quantity": 1
      }
    ]
  }
}
```

## order.released

Sent once per Rush Order order number, when an order is released to the warehouse for
picking and packing. Returns are not included. `timestamp` is when the order was released.

| Field                  | Type           | Description                  |
| ---------------------- | -------------- | ---------------------------- |
| `orderNumber`          | string         | The Rush Order order number. |
| `alternateOrderNumber` | string or null | Your order number.           |

**`Example`**

```json title="Example" maxLines=0
{
  "type": "order.released",
  "timestamp": "2026-09-21T15:05:12+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "orderNumber": "98765",
    "alternateOrderNumber": "SHOP-1042"
  }
}
```

## order.shipped

Sent once per package, when its most recent label is 60 minutes old, listing only the
labels that shipped. A tracking number added later produces a new event with all of the
package's tracking numbers. A label voided after the event produces none. `timestamp` is
when the most recent label was recorded.

| Field                           | Type           | Description                                                                                                                                                                            |
| ------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `refId`, `alternateOrderNumber` | string or null | See [common fields](#common-fields).                                                                                                                                                   |
| `orderNumber`, `packageId`      | string         | See [common fields](#common-fields).                                                                                                                                                   |
| `warehouse`                     | string or null | The warehouse that shipped the package (see [codes](#warehouse-and-location)).                                                                                                         |
| `shippedAt`                     | string         | When the first label was recorded, ISO 8601 with its offset.                                                                                                                           |
| `items[]`                       | array          | The package's items: `sku`, `internalSku`, `quantity` (shipped), `disposition`, `location` and `itemDetails`.                                                                          |
| `itemDetails[]`                 | array          | One entry per scanned unit, empty when none were scanned: `serialNumber`, `serialNumber2`, `lotNumber`, `expirationDate` (as scanned, with no fixed format). Each is a string or null. |
| `packages[]`                    | array          | The labels, grouped by `carrier` (a lower-case code such as `usps`, or the carrier's name with hyphens, such as `estes-express`) and `service`, with `trackingNumbers` (one per box).  |

**`Example`**

```json title="Example" maxLines=0
{
  "type": "order.shipped",
  "timestamp": "2026-09-21T23:31:00+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "refId": "202620091210ABC1042",
    "alternateOrderNumber": "SHOP-1042",
    "orderNumber": "98765",
    "warehouse": "USW",
    "shippedAt": "2026-09-21T16:30:00-07:00",
    "packageId": "ABC98765A",
    "items": [
      {
        "sku": "WIDGET-BLU",
        "internalSku": "ABC-WIDGET-BLU",
        "quantity": 2,
        "itemDetails": [
          {
            "serialNumber": "WB-000123",
            "serialNumber2": "X1",
            "lotNumber": null,
            "expirationDate": null
          },
          {
            "serialNumber": "WB-000124",
            "serialNumber2": null,
            "lotNumber": "L2026-117",
            "expirationDate": "03/31/2027"
          }
        ],
        "disposition": "A-Stock",
        "location": "USW"
      }
    ],
    "packages": [
      {
        "carrier": "usps",
        "service": "USPS Ground Advantage",
        "trackingNumbers": ["9261290312833844954982", "9261290312833844954999"]
      }
    ]
  }
}
```

## Shipment events

Four events follow a package after it ships, from the carrier's tracking. Each is sent
per tracking number, so a package with several boxes produces an event for each box.
Return labels are not included. `timestamp` is when our tracking provider recorded the
change.

They share these fields:

| Field                      | Type           | Description                                                                             |
| -------------------------- | -------------- | --------------------------------------------------------------------------------------- |
| `packageId`, `orderNumber` | string         | See [common fields](#common-fields).                                                    |
| `trackingNumber`           | string         | The tracking number the event is about.                                                 |
| `carrier`                  | string         | The carrier, as a lower-case code such as `usps` or `fedex`.                            |
| `service`                  | string or null | The carrier's service, when it reports one.                                             |
| `deliveryType`             | string         | `shipment.delivered` only: how the package was delivered (see [codes](#delivery-type)). |
| `reason`                   | string         | Every event except `shipment.delivered`: why it happened (see [codes](#reason)).        |

### shipment.delivered

Sent once per tracking number, when the carrier reports the package delivered.

**`Example`**

```json title="Example" maxLines=0
{
  "type": "shipment.delivered",
  "timestamp": "2026-09-24T19:42:05+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "packageId": "ABC98765A",
    "orderNumber": "98765",
    "trackingNumber": "9261290312833844954982",
    "carrier": "usps",
    "service": "USPS Ground Advantage",
    "deliveryType": "left_at_door_or_with_neighbor"
  }
}
```

### shipment.delivery_failed

Sent for each failed delivery attempt, such as no one being available to receive the
package. A later attempt that also fails is a new event.

**`Example`**

```json title="Example" maxLines=0
{
  "type": "shipment.delivery_failed",
  "timestamp": "2026-09-23T21:10:44+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "packageId": "ABC98765A",
    "orderNumber": "98765",
    "trackingNumber": "9261290312833844954982",
    "carrier": "usps",
    "service": "USPS Ground Advantage",
    "reason": "recipient_unavailable"
  }
}
```

### shipment.exception

Sent when the carrier reports a problem with the package, such as a customs hold, a
refusal, or a return to sender. A later exception is a new event.

**`Example`**

```json title="Example" maxLines=0
{
  "type": "shipment.exception",
  "timestamp": "2026-09-25T08:15:30+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "packageId": "ABC98766A",
    "orderNumber": "98766",
    "trackingNumber": "1Z999AA10123456784",
    "carrier": "ups",
    "service": null,
    "reason": "customs_hold"
  }
}
```

### shipment.tracking_expired

Sent once per tracking number, when tracking stops because the carrier has had no
updates for a long time, typically about a month. The package's final status is
unknown.

**`Example`**

```json title="Example" maxLines=0
{
  "type": "shipment.tracking_expired",
  "timestamp": "2026-10-27T04:00:12+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "packageId": "ABC98767A",
    "orderNumber": "98767",
    "trackingNumber": "9261290312833844955001",
    "carrier": "usps",
    "service": "USPS Ground Advantage",
    "reason": "no_updates"
  }
}
```

## inbound.received

Sent once per receiver, when an inbound delivery, with or without a PO, has been
received into inventory. A PO delivered in several shipments produces an event for each
receiver. Only receivers completed after you subscribed are sent. `timestamp` is when the
receiver was completed.

| Field                                | Type            | Description                                                                                                                                                                                                                                                                   |
| ------------------------------------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `receiverNumber`                     | integer         | The Rush Order receiver number.                                                                                                                                                                                                                                               |
| `poReferenceNumber`                  | string or null  | The PO reference number from your [inbound PO](https://docs.rushorder.com/api-reference/inbound/submit).                                                                                                                                                                                                             |
| `completedAt`                        | string or null  | When the receiver was completed, ISO 8601 with its offset.                                                                                                                                                                                                                    |
| `warehouse`                          | string or null  | The warehouse that received it (see [codes](#warehouse-and-location)).                                                                                                                                                                                                        |
| `shipper`, `carrier`, `billOfLading` | string or null  | As recorded when the delivery arrived.                                                                                                                                                                                                                                        |
| `unitType`                           | string or null  | How the delivery arrived, such as `pallet`.                                                                                                                                                                                                                                   |
| `palletCount`                        | integer or null | The number of pallets.                                                                                                                                                                                                                                                        |
| `comment`                            | string or null  | The receiving team's notes on the delivery.                                                                                                                                                                                                                                   |
| `items[]`                            | array           | One per receiver line: `sku`, `internalSku`, `disposition`, `location`, `description`, `lineId` (from your inbound PO), `quantityExpected`, `quantityReceived`, `cartonCount`, `caseQuantity`, `partialQuantity`, `notes` and `itemDetails`.                                  |
| `itemDetails[]`                      | array           | One entry per unit scanned with a serial number, or, for items without serials, one entry per unit with a lot number or expiration date. Empty when neither was recorded. Same fields as on [`order.shipped`](#ordershipped). Large deliveries can have thousands of entries. |

**`Example`**

```json title="Example" maxLines=0
{
  "type": "inbound.received",
  "timestamp": "2026-09-22T20:45:00+00:00",
  "rushOrderMomCode": "ABC",
  "data": {
    "receiverNumber": 12345,
    "poReferenceNumber": "MYPO7656",
    "completedAt": "2026-09-22T13:45:00-07:00",
    "warehouse": "USW",
    "shipper": "Acme Products, Inc.",
    "carrier": "FEDEX",
    "billOfLading": "77719876540",
    "unitType": "pallet",
    "palletCount": 2,
    "comment": null,
    "items": [
      {
        "sku": "WIDGET-BLU",
        "internalSku": "ABC-WIDGET-BLU",
        "disposition": "A-Stock",
        "location": "USW",
        "description": "Widget, blue",
        "lineId": "1",
        "quantityExpected": 2,
        "quantityReceived": 2,
        "cartonCount": 1,
        "caseQuantity": 2,
        "partialQuantity": 0,
        "notes": null,
        "itemDetails": [
          {
            "serialNumber": "WB-000123",
            "serialNumber2": null,
            "lotNumber": null,
            "expirationDate": null
          },
          {
            "serialNumber": "WB-000124",
            "serialNumber2": null,
            "lotNumber": null,
            "expirationDate": null
          }
        ]
      }
    ]
  }
}
```

## Codes

### Disposition

`items[].disposition` is the condition of the stock, taken from the Rush Order SKU.

| Value                       | Meaning                                                                              |
| --------------------------- | ------------------------------------------------------------------------------------ |
| `A-Stock`                   | Standard stock: the Rush Order SKU has no condition prefix.                          |
| `DMG`, `RTS`, `QUAR`, `FDA` | The condition prefix on the Rush Order SKU, such as `DMG` in `DMG-ABC-WIDGET-RED-O`. |

### Delivery type

`deliveryType` on [`shipment.delivered`](#shipmentdelivered).

| Value                           | Meaning                                                  |
| ------------------------------- | -------------------------------------------------------- |
| `signed_for`                    | Received and signed for by the recipient.                |
| `left_at_door_or_with_neighbor` | Left at the door or with a neighbor.                     |
| `picked_up_by_recipient`        | Picked up by the recipient, such as from a pickup point. |
| `unspecified`                   | Delivered, but the carrier didn't say how.               |

### Reason

`reason` on the other shipment events.

| Event                                            | Value                    | Meaning                                                    |
| ------------------------------------------------ | ------------------------ | ---------------------------------------------------------- |
| `shipment.delivery_failed`                       | `address_issue`          | A problem with the address.                                |
|                                                  | `recipient_unavailable`  | No one was available to receive the package.               |
|                                                  | `recipient_not_located`  | The carrier couldn't locate the recipient.                 |
| `shipment.exception`                             | `customs_hold`           | Held by customs.                                           |
|                                                  | `refused`                | Refused by the recipient.                                  |
|                                                  | `unclaimed`              | Not collected by the recipient.                            |
|                                                  | `lost_or_damaged`        | Lost or damaged in transit.                                |
|                                                  | `canceled_before_pickup` | The shipment was canceled before the carrier picked it up. |
|                                                  | `returning_to_sender`    | On its way back to the sender.                             |
|                                                  | `returned_to_sender`     | Returned to the sender.                                    |
| `shipment.tracking_expired`                      | `no_updates`             | The carrier stopped providing updates.                     |
| `shipment.delivery_failed`, `shipment.exception` | `other`                  | Any other reason, or one the carrier didn't specify.       |

### Warehouse and location

Used by `warehouse` and `items[].location`.

| Code  | Warehouse      |
| ----- | -------------- |
| `USW` | California     |
| `USE` | New York       |
| `USC` | Ohio           |
| `USS` | Texas          |
| `CA`  | Canada         |
| `MX`  | Mexico         |
| `GB`  | United Kingdom |
| `NL`  | Netherlands    |
| `HK`  | Hong Kong      |
| `JP`  | Japan          |
| `AU`  | Australia      |
| `VN`  | Vietnam        |