OrderItem
OrderItem is the line-item node inside an Order. A single Order can have several OrderItems (one per product ordered), each with its own quantity, status, and parcel-delivery tracking.
Full example of schema.org/OrderItem json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Order",
"orderNumber": "XOO-1042",
"orderStatus": "https://schema.org/OrderProcessing",
"customer": { "@type": "Person", "name": "Sean Dunmore" },
"orderedItem": [
{
"@type": "OrderItem",
"orderItemNumber": "1",
"orderQuantity": { "@type": "QuantitativeValue", "value": 2, "unitText": "tees" },
"orderItemStatus": "https://schema.org/OrderDelivered",
"orderedItem": { "@type": "Product", "name": "XooTee Classic", "sku": "XT-001" },
"orderDelivery": {
"@type": "ParcelDelivery",
"trackingNumber": "1Z999AA10123456784",
"carrier": { "@type": "Organization", "name": "UPS" },
"expectedArrivalFrom": "2026-04-14T09:00-05:00",
"expectedArrivalUntil": "2026-04-14T18:00-05:00"
}
},
{
"@type": "OrderItem",
"orderItemNumber": "2",
"orderQuantity": 1,
"orderItemStatus": "https://schema.org/OrderProcessing",
"orderedItem": { "@type": "Product", "name": "XooTee Limited Hoodie", "sku": "XT-LE-044" }
}
]
}
</script>Direct properties (5)
orderedItem: the Product, Service, or nested OrderItem being purchased.orderQuantity: QuantitativeValue or Number; defaults to 1 if omitted.orderItemNumber: line-item identifier, distinct from the outer Order'sorderNumber.orderItemStatus: OrderStatus enum value (OrderProcessing, OrderInTransit, OrderDelivered, OrderReturned, OrderCancelled, OrderProblem, OrderPaymentDue, OrderPickupAvailable).orderDelivery: a ParcelDelivery node with carrier, tracking number, and delivery window.
When to nest vs flatten
Split into OrderItems when per-line data differs (one line delivered, one backordered; one line from one warehouse, another from a drop-shipper). When everything in the Order ships as one parcel with one status, a single Order node with orderedItem directly (no OrderItem wrapper) is simpler.
Minimal valid version
The smallest markup that still produces a valid OrderItem entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "OrderItem",
"orderItemNumber": "1",
"orderQuantity": 1,
"orderedItem": { "@type": "Product", "name": "XooTee Classic" }
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsOrder confirmation (Gmail / Google Now)primary
Common OrderItem mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
Order status copied onto every OrderItem
WrongAll OrderItems share the Order-level statusRightEach OrderItem can carry its own orderItemStatus (OrderProcessing vs OrderDelivered)Partial-fulfillment orders lose visibility when every line inherits the top-level state.
- 02
orderQuantity as a bare string
Wrong"orderQuantity": "two"RightNumber or QuantitativeValue with value: 2Consumers read the numeric value; strings collapse to NaN.
- 03
orderItemStatus as free text
Wrong"orderItemStatus": "Shipped"Right"orderItemStatus": "https://schema.org/OrderInTransit"OrderStatus is a closed enum; Google maps only the canonical URLs to shipping-status icons.
Schema properties in this example
Also mentioned in 1 other example
OrderItem also appears in OrderStatus. See the full OrderItem schema page for every reference.
About the example data
Order XOO-1042 from the XooTee shop: two Classic tees (delivered) and one Limited Edition hoodie (still processing), each tracked as its own OrderItem.
Comments
Loading comments...