CartLine
A single line item in the cart — one variant, a quantity and the data attached to it (cost, attributes, configurator selections).
type CartLine {
attributeSelections: [AttributeSelection!]!
attributes: [Attribute!]!
cost: CartLineCost!
discountAllocations: [CartDiscountAllocation!]!
giftCardRecipient: GiftCardLineRecipient
id: ID!
productHandle: String
productId: ID
productTitle: String
productType: ProductTypeEnum
quantity: Int!
requiresShipping: Boolean!
variant: ProductVariant!
}
Fields
CartLine.attributeSelections ● [AttributeSelection!]! non-null object
Typed configurator selections filled in by the buyer (snapshot from add-to-cart). Validated server-side against the product attribute definition; carries any pricing surcharge.
CartLine.attributes ● [Attribute!]! non-null object
Free-form custom attributes (line item properties) attached to this line — engraving text, gift wrap, B2B PO line reference, etc.
CartLine.cost ● CartLineCost! non-null object
Per-line cost breakdown (unit price, subtotal, total, optional compare-at).
CartLine.discountAllocations ● [CartDiscountAllocation!]! non-null object
Discount amounts applied to this line, one entry per discount code that reduced it. Empty when no code discounts this line (the code may still apply to other lines — check cart.discountCodes). Amounts across all lines sum to cart.cost.totalDiscount. Line cost.total is not reduced by these amounts.
CartLine.giftCardRecipient ● GiftCardLineRecipient object
Recipient details captured for a GIFT_CARD line via cartUpdateGiftCardRecipient. Null for non-gift-card lines or when no recipient has been set yet — in that case the gift card is delivered to the order customerEmail on completion. Use to initialise the "gift recipient" form from cart state on SSR / page reload / deep link instead of keeping it in client-only state.
CartLine.id ● ID! non-null scalar
Stable line identifier. Use it to address the line in cartUpdateLines / cartRemoveLines.
CartLine.productHandle ● String scalar
URL handle (slug) of the parent product — link target for the cart drawer (denormalised).
CartLine.productId ● ID scalar
ID of the parent product. Denormalised so a cart drawer renders without an extra round-trip.
CartLine.productTitle ● String scalar
Display title of the parent product (denormalised).
CartLine.productType ● ProductTypeEnum enum
Type of the parent product (PHYSICAL, DIGITAL, SERVICE, SUBSCRIPTION, GIFT_CARD). Drives whether the line requires shipping and which post-purchase flow applies.
CartLine.quantity ● Int! non-null scalar
Quantity of the variant in this line (≥ 1; set to 0 with cartUpdateLines to remove).
CartLine.requiresShipping ● Boolean! non-null scalar
True when this line requires physical shipping (productType = PHYSICAL). False for digital, gift card, service and subscription items. Use together with Cart.requiresShipping to decide whether to render the shipping step.
CartLine.variant ● ProductVariant! non-null object
The variant being purchased — fresh data (current price, image, stock).
Member Of
CartLineConnection object ● CartLineEdge object