ShipMonk Webhooks

The ShipMonk event surface: four HTTP callback events (order shipment notification, order status change, return status change, receiving status change) declared in the OpenAPI 3.1 webhooks block. Deliveries authenticate with HTTP Basic and carry an X-Sm-Signature HMAC-SHA512 integrity header, with exponential-backoff retries.

AsyncAPI Specification

shipmonk-webhooks-asyncapi.yml Raw ↑
asyncapi: 3.0.0
info:
  title: ShipMonk Webhooks
  version: v1.024
  description: 'AsyncAPI 3.0 model of the ShipMonk webhook event surface, derived from the `webhooks` block of

    ShipMonk''s own OpenAPI 3.1 document (https://apidocs.shipmonk.com/openapi/public_api.json) plus the

    published webhook reference at https://apidocs.shipmonk.com/reference/webhooks.


    ShipMonk delivers events as HTTP POST callbacks to a subscriber URL configured per store in the

    ShipMonk app (Account Settings > Integrations > new "Webhooks" integration, or per-store in the

    store detail of ShipMonk OMS). A subscription delivers events for every store on the account by

    default and can optionally be restricted to one or more specific stores (documented in v1.022).


    Security: HTTP Basic authentication (username + password) is the only supported subscriber

    authentication scheme. Integrity is additionally verifiable through the `X-Sm-Signature` header,

    an HMAC-SHA512 of the delivered payload.


    Delivery semantics: receivers must return a 2xx (the reference names 200 explicitly). Failed

    deliveries are retried with exponential backoff — up to 8 retries starting at 30s and doubling

    (30s, 1m, 2m, 4m, 8m, 16m, 32m, 60m, capped at 60 minutes), spanning roughly two hours

    (changelog v1.021). Older documentation described a fixed 5-minute cadence retried across three

    days; the exponential-backoff schedule is the current published policy.


    Shipment notifications are sent after a per-store configurable delay (default 20 minutes).'
  contact:
    name: ShipMonk API Support
    email: api@shipmonk.com
    url: https://apidocs.shipmonk.com/
  externalDocs:
    url: https://apidocs.shipmonk.com/reference/webhooks
defaultContentType: application/json
servers:
  subscriberEndpoint:
    host: '{subscriber_host}'
    protocol: https
    title: Subscriber webhook endpoint
    description: ShipMonk POSTs to a subscriber-owned HTTPS endpoint configured per store in the ShipMonk app.
    variables:
      subscriber_host:
        description: The host of the endpoint you register with ShipMonk.
        default: example.com
    security:
    - $ref: '#/components/securitySchemes/basicAuth'
channels:
  orderShipmentNotification:
    address: order/shipment-notification
    title: Shipment Notification
    description: 'Once the order is fulfilled, ShipMonk can notify the 3rd party software of such event via webhook
      or Marketplace via direct integration. The payload consists of tracking and packing information.


      Triggers for sending notification are:

      - once regular order is packed

      - batch is completed

      - wholesale order is picked up


      Notification is sent with delay which can be set per each store in ShipMonk OMS.


      Your endpoint URL can be set up in the store detail in ShipMonk OMS. Please note that Basic Auth (username
      and password) is supported only.


      We expect the status code 200 in response. When we receive another status call, we will be re-trying it for
      the next 3 days.


      To test it, place the order and submit it for fulfilment. You have to make sure the inventory is available
      and order is all right first (it has set the shipping service and the address is valid). In production the
      order is shipped by our warehouse employees, while for testing you will have to call our `complete-order`
      endpoint.


      Edge cases:

      - If the order is big and cannot fit into a single packaging, we will send out multiple packages. Each package
      has its own tracking number inside of packages array.

      - If the inventory of any SKU is not available, it is possible to manually split the order in the ShipMonk
      app and then we send Shipment Notification per each shipment.

      - If the order is split and send out within multiple days, we send the Shipment Notification just once (when
      the first package is sent out)


      `fulfilled_quantity` vs `ordered_quantity`: The value of these two fields might differ in case of partially
      fulfilled Orders. If a Product consists of `1x Item A` and `1x Item B`, when the customer orders 2 Products
      and the Shipment contains 1 piece of Item A and 2 pieces of Item B, then `ordered_quantity = 2` but `fulfilled_quantity
      = 1`.'
    messages:
      orderShipmentNotificationMessage:
        $ref: '#/components/messages/orderShipmentNotificationMessage'
  orderStatusChange:
    address: order/status-change
    title: Order status change
    description: 'As an order progresses from initial import to full fulfillment, it transitions through multiple
      statuses. ShipMonk can notify external systems of these status changes via webhooks.


      ## Supported Order Webhooks

      Currently ShipMonk supports these order-related webhooks.


      - Order being back-ordered (`processing_status`: `back-order`)

      - Order is unable to submit (`processing_status`: `unable_to_submit`)

      - Order is queued to submit (`processing_status`: `queued_to_submit`)

      - Order is subscription - Order (`processing_status`: `subscription`)

      - Order is package-forwarding - Order (`processing_status`: `package_forwarding`)

      - Order is put to on hold (`processing_status`: `on_hold`)

      - Order is submitted (`processing_status`: `submitted`)

      - Order is being picked (`processing_status`: `pick_in_progress`)

      - Order is being packed (`processing_status`: `pack_in_progress`)

      - Order is packed (`processing_status`: `packed`)

      - Order is awaiting pickup (`processing_status`: `awaiting_pick_up`)

      - Order is awaiting carrier processing (`processing_status`: `awaiting_carrier_processing`)

      - Order is en route (`processing_status`: `en_route`)

      - Order is delivered (`processing_status`: `delivered`)

      - Order is undeliverable (`processing_status`: `undeliverable`)

      - Order is shipped, but it’s untrackable (`processing_status`: `shipped_untrackable`)

      - Order cancellation requested (`processing_status`: `cancellation_requested`)

      - Order is cancelled (`processing_status`: `cancelled`)


      All order-related webhooks are closely tied to the order’s processing-status. Each webhook is triggered by
      a change in the processing-status, reflecting key moments in the order lifecycle.


      ## Payload Structure (JSON Schema)

      All order-related webhooks share the same JSON schema, which matches the response of our GET endpoint for
      retrieving a single order.'
    messages:
      orderStatusChangeMessage:
        $ref: '#/components/messages/orderStatusChangeMessage'
  returnStatusChange:
    address: return/status-change
    title: Return status change
    description: '## Supported Return Webhooks

      All return-related webhooks are closely tied to the status of the return. Each webhook is triggered by a specific
      status transition, marking important stages in the return process.


      - Return created (`status`: `status_created`)

      - Return in progress (`status`: `in_progress`)

      - Return en route (`status`: `en_route`)

      - Return returned (`status`: `returned`)


      ## Payload Structure (JSON Schema)

      The payload of each return-related webhook matches the structure of a single return object as returned by
      the `GET /v1/integrations/returns-list` endpoint. While the `GET /v1/integrations/returns-list` endpoint responds
      with an array of return objects (`returns-list` field), each webhook delivers the full data of one return
      in the same format. This allows for easy reuse of the return model across both API responses and webhook events.'
    messages:
      returnStatusChangeMessage:
        $ref: '#/components/messages/returnStatusChangeMessage'
  receivingStatusChange:
    address: receiving/status-change
    title: Receiving status change
    description: '## Supported Receiving Webhooks

      All receiving-related webhooks are closely tied to the status of the receiving. Each webhook is triggered
      when the receiving transitions to a specific `status`, reflecting key milestones in the receiving process.


      - Receiving awaiting (`status`: `awaiting`)

      - Receiving in progress (`status`: `in_progress`)

      - Receiving arrived (`status`: `arrived`)

      - Receiving received (`status`: `received`)'
    messages:
      receivingStatusChangeMessage:
        $ref: '#/components/messages/receivingStatusChangeMessage'
operations:
  receiveOrderShipmentNotification:
    action: receive
    channel:
      $ref: '#/channels/orderShipmentNotification'
    title: Shipment Notification
    summary: Emitted once an order is packed, a batch is completed, or a wholesale order is picked up. Payload carries
      tracking and packing information.
    bindings:
      http:
        method: POST
        bindingVersion: 0.3.0
    messages:
    - $ref: '#/channels/orderShipmentNotification/messages/orderShipmentNotificationMessage'
    x-source-operation: openapi/_original/shipmonk-openapi.json#/webhooks/orderShipmentNotification
  receiveOrderStatusChange:
    action: receive
    channel:
      $ref: '#/channels/orderStatusChange'
    title: Order status change
    summary: Emitted on every change of an order `processing_status` (back-order, on_hold, submitted, pick_in_progress,
      pack_in_progress, packed, awaiting_pick_up, en_route, delivered, undeliverable, shipped_untrackable, cancellation_requested,
      cancelled, subscription, package_forwarding, queued_to_submit, unable_to_submit).
    bindings:
      http:
        method: POST
        bindingVersion: 0.3.0
    messages:
    - $ref: '#/channels/orderStatusChange/messages/orderStatusChangeMessage'
    x-source-operation: openapi/_original/shipmonk-openapi.json#/webhooks/orderStatusChange
  receiveReturnStatusChange:
    action: receive
    channel:
      $ref: '#/channels/returnStatusChange'
    title: Return status change
    summary: Emitted on every change of a return `status` (status_created, in_progress, en_route, returned).
    bindings:
      http:
        method: POST
        bindingVersion: 0.3.0
    messages:
    - $ref: '#/channels/returnStatusChange/messages/returnStatusChangeMessage'
    x-source-operation: openapi/_original/shipmonk-openapi.json#/webhooks/returnStatusChange
  receiveReceivingStatusChange:
    action: receive
    channel:
      $ref: '#/channels/receivingStatusChange'
    title: Receiving status change
    summary: Emitted on every change of a receiving `status` (awaiting, in_progress, arrived, received).
    bindings:
      http:
        method: POST
        bindingVersion: 0.3.0
    messages:
    - $ref: '#/channels/receivingStatusChange/messages/receivingStatusChangeMessage'
    x-source-operation: openapi/_original/shipmonk-openapi.json#/webhooks/receivingStatusChange
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: ShipMonk authenticates to the subscriber endpoint with HTTP Basic auth. Basic auth is the only
        supported scheme.
  messages:
    orderShipmentNotificationMessage:
      name: orderShipmentNotification
      title: Shipment Notification
      summary: Emitted once an order is packed, a batch is completed, or a wholesale order is picked up. Payload
        carries tracking and packing information.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ShipMonk_OMS_Notification_ApiResource_ShipmentNotificationOutput'
    orderStatusChangeMessage:
      name: orderStatusChange
      title: Order status change
      summary: Emitted on every change of an order `processing_status` (back-order, on_hold, submitted, pick_in_progress,
        pack_in_progress, packed, awaiting_pick_up, en_route, delivered, undeliverable, shipped_untrackable, cancellation_requested,
        cancelled, subscription, package_forwarding, queued_to_submit, unable_to_submit).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderDetailOutput'
    returnStatusChangeMessage:
      name: returnStatusChange
      title: Return status change
      summary: Emitted on every change of a return `status` (status_created, in_progress, en_route, returned).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_ReturnOutput'
    receivingStatusChangeMessage:
      name: receivingStatusChange
      title: Receiving status change
      summary: Emitted on every change of a receiving `status` (awaiting, in_progress, arrived, received).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ShipMonk_OMS_Receiving_ApiResource_PublicApiReceivingOutput'
  schemas:
    Fulfillment_CommonBundle_ApiResource_IntegrationDataOutput:
      type: object
      properties:
        name:
          description: Key of the custom data entry.
          type: string
        value:
          description: Value of the custom data entry; may be any JSON-serializable structure.
          type: object
      required:
      - name
      - value
      title: Integration Data Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_Enum_PublicApiOrderStatus:
      type:
      - string
      enum:
      - unfulfilled
      - fulfilled
      - onHold
      - cancelled
      title: Order Status
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_OrderPackedItemOutput:
      type: object
      properties:
        sku:
          description: Stock-keeping unit (SKU) of the order item that was packed.
          type: string
        line_key:
          description: Identifier of the order line this packed item refers to; null when the packed item is not
            tied to a specific line.
          type:
          - string
          - 'null'
        quantity:
          description: Number of units of this SKU packed in this package.
          type: integer
      required:
      - sku
      - line_key
      - quantity
      title: Order Packed Item Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PackingGroupOutput:
      type: object
      properties:
        key:
          description: Stable identifier of the packing group, unique within the order.
          type: string
        name:
          description: Human-readable name of the packing group; null if unnamed.
          type:
          - string
          - 'null'
      required:
      - key
      - name
      title: Packing Group Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiAccountForTradingPartnerOutput:
      type: object
      properties:
        id:
          description: Internal numeric identifier of the merchant account.
          type: integer
        name:
          description: Display name of the merchant account.
          type: string
      required:
      - id
      - name
      title: Account For Trading Partner Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiAccountTradingPartnerOutput:
      type: object
      properties:
        id:
          description: Internal numeric identifier of the trading partner.
          type: integer
        identifier:
          description: Short human-readable code identifying the trading partner.
          type: string
        name:
          description: Display name of the trading partner.
          type: string
        account:
          description: Merchant account that owns this trading partner relationship.
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiAccountForTradingPartnerOutput'
      required:
      - id
      - identifier
      - name
      - account
      title: Account Trading Partner Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiCountryDetailOutput:
      type: object
      properties:
        code:
          description: ISO 3166-1 alpha-2 country code; null if unknown.
          type:
          - string
          - 'null'
        name:
          description: Country name in English; null if unknown.
          type:
          - string
          - 'null'
      required:
      - code
      - name
      title: Country Detail Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiExtraDataOutput:
      type: object
      properties:
        label:
          description: 'Identifier of the extra data type. Currently supported: carrierShippingMethod.'
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_Enum_ShipmentNotificationExtraDataType'
        value:
          description: Value corresponding to the label of the extra data entry.
          type: string
      required:
      - label
      - value
      title: Extra Data Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderActionsRequiredOutput:
      type: object
      properties:
        item_mapping:
          description: True if one or more order items could not be mapped to a known product and require manual
            mapping.
          type: boolean
        address:
          description: True if the shipping address could not be validated and requires correction.
          type: boolean
        shipping_mapping:
          description: True if the requested shipping service could not be mapped to an available carrier service
            and requires manual mapping.
          type: boolean
        customs:
          description: True if customs information (e.g. declared value, HS codes) is missing or incomplete for
            an international shipment.
          type: boolean
        at_risk:
          description: True if the order is at risk of missing its required ship-by date.
          type: boolean
        routing:
          description: True if a B2B routing instruction is missing and must be supplied before shipping.
          type: boolean
        freight_quote:
          description: True if a freight quote must be selected before the order can ship.
          type: boolean
        freight_info:
          description: True if additional freight details (e.g. dimensions, pallet count) are required to obtain
            a freight quote.
          type: boolean
        ship_short:
          description: True if the order is flagged as a short ship, meaning one or more items could not be fulfilled
            in the requested quantity.
          type: boolean
        hs_code:
          description: True if Harmonized System (HS) tariff codes are missing for one or more items on a customs-bound
            shipment.
          type: boolean
        global_e_label:
          description: True if a Global-e label (cross-border shipping label provided by the Global-e service) is
            still required for the order.
          type: boolean
        ship_monk_hazmat_carrier_service_not_available:
          description: 'Deprecated: Will always be false, kept for backwards compatibility True if the order contains
            hazardous materials but no carrier service is available to ship them from the assigned warehouse.'
          deprecated: true
          type: boolean
        automation_rule:
          description: True if an automation rule has flagged the order for manual review or action.
          type: boolean
        pending_b2b_routing:
          description: True if the order is awaiting B2B retailer routing instructions before fulfillment can proceed.
          type: boolean
        value_added_service_problem:
          description: True if one of the order's value-added services (e.g. kitting, custom packaging) cannot be
            performed and needs attention.
          type: boolean
      required:
      - item_mapping
      - address
      - shipping_mapping
      - customs
      - at_risk
      - routing
      - freight_quote
      - freight_info
      - ship_short
      - hs_code
      - global_e_label
      - ship_monk_hazmat_carrier_service_not_available
      - automation_rule
      - pending_b2b_routing
      - value_added_service_problem
      title: Order Actions Required Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderAttributeOutput:
      type: object
      properties:
        name:
          description: Key of the custom attribute.
          type: string
        value:
          description: Value of the custom attribute.
          type: string
      required:
      - name
      - value
      title: Order Attribute Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderCostsOutput:
      type: object
      properties:
        estimated_shipping_related_charges:
          description: Estimated shipping-related charges for the order. Null when no estimate is available.
          anyOf:
          - $ref: '#/components/schemas/ShipMonk_Money_Output_MoneyOutput'
          - type: 'null'
        estimated_packaging_material_charges:
          description: Estimated charges for packaging materials used in the order. Null when no estimate is available.
          anyOf:
          - $ref: '#/components/schemas/ShipMonk_Money_Output_MoneyOutput'
          - type: 'null'
        estimated_pick_and_pack_charges:
          description: Estimated charges for picking and packing labor for the order. Null when no estimate is available.
          anyOf:
          - $ref: '#/components/schemas/ShipMonk_Money_Output_MoneyOutput'
          - type: 'null'
      required:
      - estimated_shipping_related_charges
      - estimated_packaging_material_charges
      - estimated_pick_and_pack_charges
      title: Order Costs Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderDetailCustomDataOutput:
      type: object
      properties:
        name:
          description: Key name of the custom data entry.
          type: string
        value:
          description: Value of the custom data entry.
          type: string
      required:
      - name
      - value
      title: Order Detail Custom Data Output
    Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderDetailOutput:
      type: object
      properties:
        order_key:
          description: Unique identifier from an external system used to associate an order. Must be unique per
            order and store.
          type: string
        order_number:
          description: Customer-facing identifier for an order. Uniqueness is recommended but not strictly enforced.
          type: string
        order_type:
          description: Order classification (e.g. standard, wholesale, return). Null when not categorized.
          anyOf:
          - $ref: '#/components/schemas/ShipMonk_OMS_Order_Enum_OrderType'
          - type: 'null'
        store:
          description: Sales channel or storefront the order originated from.
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiStoreNameOutput'
        warehouse:
          description: Warehouse where the order is processed. Null if a warehouse has not yet been assigned.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiWarehouseDetailOutput'
          - type: 'null'
        trading_partner:
          description: B2B trading partner (e.g. retailer or distributor) the order is destined for. Null for direct-to-consumer
            orders.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiAccountTradingPartnerOutput'
          - type: 'null'
        ordered_at:
          description: ISO 8601 timestamp indicating when the order was originally placed.
          type: string
          format: date-time
        customer_email:
          description: Customer's email address. Null when not provided by the source system.
          anyOf:
          - type: string
          - type: 'null'
        shipping_method:
          description: Carrier and service selected to ship the order. Null if no method has been resolved yet.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_PublicApiBundle_ApiResource_ShippingMethod_PublicApiShippingMethodDetailOutput'
          - type: 'null'
        requested_shipping_service:
          description: Free-text shipping service originally requested by the customer or source system; null if
            none was specified.
          type:
          - string
          - 'null'
        shipping_paid:
          description: Amount the customer paid for shipping, expressed in the order's currency_code.
          type: number
          format: double
        tax_paid:
          description: Amount the customer paid in taxes, expressed in the order's currency_code.
          type: number
          format: double
        order_costs:
          description: Estimated fulfillment-service charges (shipping, packaging, pick & pack) for the order. These
            are estimates and may differ from final billed amounts.
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderCostsOutput'
        ship_from:
          description: Origin address from which the order will ship. Null when not yet determined.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiShippingOrderDetailAddressOutput'
          - type: 'null'
        ship_to:
          description: Destination address the order will be shipped to. Null when not yet specified.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiShippingOrderDetailAddressOutput'
          - type: 'null'
        order_status:
          description: 'High-level order state: unfulfilled (not yet shipped), fulfilled (shipped), onHold (paused),
            cancelled.'
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_Enum_PublicApiOrderStatus'
        processing_status:
          description: 'Fine-grained processing stage of the order. Values: backorder, unable_to_submit, queued_to_submit,
            subscription, package_forwarding, awaiting_label_request_from_merchant_facility, on_hold, submitted,
            pick_in_progress, pack_in_progress, packed, awaiting_pick_up, awaiting_carrier_processing, en_route,
            delivered, undeliverable, shipped_untrackable, fulfilled_by_3rd, cancellation_requested, cancelled,
            updating.'
          $ref: '#/components/schemas/Fulfillment_OrderBundle_Enum_OrderListStatus'
        items:
          description: Line items (SKUs and quantities) included in the order.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderItemOutput'
        attributes:
          description: Custom key/value attributes attached to the order by the merchant or source system.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderAttributeOutput'
        currency_code:
          description: ISO 4217 currency code used for all monetary values on the order.
          type: string
        references:
          description: Additional external reference identifiers attached to the order (e.g. PO number, marketplace
            reference).
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderReferenceOutput'
        custom_data:
          description: Custom key-value data associated with the order.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderDetailCustomDataOutput'
        special_requirements:
          description: Special handling requirements for the order, such as required documents, label dates, and
            pack list rules. Null when none apply.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiSpecialRequirementsOutput'
          - type: 'null'
        actions_required:
          description: Boolean flags indicating issues that must be resolved before the order can be fulfilled.
          $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderActionsRequiredOutput'
        master_tracking_number:
          description: Master tracking number that groups all packages of a multi-piece shipment; null when not
            applicable.
          type:
          - string
          - 'null'
        tracking_url:
          description: Carrier URL where the customer can track the shipment; null if not yet available.
          type:
          - string
          - 'null'
        returns:
          description: Return Merchandise Authorizations (RMAs) created for this order.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderReturnDataOutput'
        packages:
          description: Per-package fulfillment data, including tracking numbers, weights, and packed contents.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderPackageDataOutput'
        tax_id:
          description: 'Deprecated: Use recipientTaxId Deprecated; use recipient_tax_id instead. Tax identifier
            associated with the recipient.'
          deprecated: true
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_PublicApiBundle_ApiResource_Order_PublicApiOrderTaxIdOutput'
          - type: 'null'
        recipient_tax_id:
          description: Recipient tax identification (e.g. VAT or EIN); null when not provided. Used for customs
            clearance on international shipments.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_PublicApiBundle_ApiResource_Order_PublicApiOrderTaxIdOutput'
          - type: 'null'
        shipment_data:
          description: Carrier and tracking details once the order has shipped; null until shipment data is available.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiShipmentDataOutput'
          - type: 'null'
        order_parts:
          description: Information about related orders when an order has been split into multiple parts; null if
            the order was not split.
          anyOf:
          - $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiOrderPartOutput'
          - type: 'null'
        shipped_at:
          description: ISO 8601 timestamp of when the order was shipped; null if not yet shipped.
          type:
          - string
          - 'null'
          format: date-time
        updated_at:
          description: ISO 8601 timestamp of when the order was last updated; null if never updated since creation.
          type:
          - string
          - 'null'
          format: date-time
        order_size:
          description: 'Size classification of the order based on item dimensions: unknown, regular, oversized_item,
            large, or extra_large.'
          $ref: '#/components/schemas/Fulfillment_OrderBundle_Enum_OrderSize'
        extra_data:
          description: Additional key/value attributes attached to the shipment notification (e.g. carrier shipping
            method).
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiExtraDataOutput'
        serial_numbers:
          description: Serial numbers of items fulfilled in the order, grouped by order line.
          type: array
          items:
            $ref: '#/components/schemas/Fulfillment_IntegrationsBundle_ApiResource_Output_Order_PublicApiSerialNumberOutput'
        gift_message:
          description: Gift message to include with the order; null if the order is not a gift.
          type:
          - string
          - 'null'
        gift_from:
          description: Name of the gift sender; null if the order is not a gift.
          type:
          - string
          - 'null'
        customer_notes:
          description: Customer-provided note

# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shipmonk/refs/heads/main/asyncapi/shipmonk-webhooks-asyncapi.yml