Fulfillment orders
Use fulfillment orders when an integration needs to know, per location, what is still to be shipped for an order and what has already been shipped — for example a logistics provider, a warehouse control system, or a storefront showing the order status.
An order has one or more fulfillment orders, each assigned to the location it is fulfilled from. One location can have several fulfillment orders of the same order. A fulfillment order is either fulfilled in Pickware (type: WarehouseLocationToOrder) or is to be fulfilled externally, from a location Pickware does not manage (type: ExternalToOrder). A fulfillment order fulfilled in Pickware names its location in sourceWarehouseLocation; an external one has no sourceWarehouseLocation, and externalLocationName carries the name of its Shopify location, or null when no Shopify location is known. Every executed shipment is recorded as a fulfillment.
Available operations
- List fulfillment orders with fulfillmentOrders, filterable by
state,type,sourceWarehouseLocationId,destinationOrderIdandupdatedAt, or load one by global ID with fulfillmentOrder. - List fulfillment order line items with fulfillmentOrderLineItems, or load one by global ID with fulfillmentOrderLineItem.
- Read the fulfillment orders of an order through
Order.fulfillmentOrders. - List fulfillments with fulfillments, or load one by global ID with fulfillment.
- List fulfillment line items with fulfillmentLineItems, or load one by global ID with fulfillmentLineItem.
- List locations with locations.
- Read the shipping labels of a fulfillment order, with their tracking codes, through
FulfillmentOrder.shippingLabels. Return labels are not listed there. - List shipping labels with shippingLabels, or load one by global ID with shippingLabel.
Example: fulfillment orders of an order
query FulfillmentOrders($orderId: ID!) {
fulfillmentOrders(filter: { destinationOrderId: { equals: $orderId } }) {
edges {
node {
number
state
type
isPartiallyFulfilled
sourceWarehouseLocation {
code
name
}
externalLocationName
lineItems {
edges {
node {
quantity
product {
productNumber
}
}
}
}
shippingLabels {
edges {
node {
carrier
cancelled
trackingCodes
}
}
}
fulfillments {
edges {
node {
number
state
lineItems {
edges {
node {
quantity
fulfillmentOrderLineItem {
id
}
}
}
}
}
}
}
}
}
}
}
Notes
Reading the fulfillment orders of an order through Order.fulfillmentOrders, or the sourceWarehouseLocation and shippingLabels of a fulfillment order, also needs the read scopes of those types, see Token scopes. A fulfillment order's line item quantity is the quantity assigned to it; the quantity already shipped is the sum of the line items that reference it across its fulfillments in the state Fulfilled.