shopify:cart:lines-update
Fires when a buyer adds, removes, or updates cart lines. One event covers all three, and the action field tells you which. The context field tells you where it came from, with product, cart, or dialog for a buyer's own interaction, and standard-action when an updateCart call emitted it.
This is the signal that a cart changed, and it replaces watching the DOM or intercepting cart requests. The event fires before the cart is updated, so listeners can show a loading or optimistic state while the operation runs.
You dispatch it from the cart element, or from the product element for adds on a product page.
Because the event fires when the operation starts, it fires whether or not the change succeeds. If the cart declines the change, the promise resolves with the cart as it stands and userErrors explaining why. If the request fails, the promise rejects and shopify:cart:error is dispatched.
Anchor to propertiesProperties
- Anchor to actionactionaction'add' | 'remove' | 'update''add' | 'remove' | 'update'requiredrequired
Whether the lines were added, updated, or removed. This value determines the shape of
lines.- Anchor to contextcontextcontext'product' | 'cart' | 'dialog' | 'standard-action''product' | 'cart' | 'dialog' | 'standard-action'requiredrequired
Where the update came from. The
standard-actionvalue is reserved for events that standard storefront actions emit automatically.- Anchor to lineslineslinesCartLinesUpdateLine[]CartLinesUpdateLine[]requiredrequired
The cart lines that changed. Contains at least one entry.
- Anchor to promisepromisepromisePromise<CartLinesUpdateResult>Promise<CartLinesUpdateResult>requiredrequired
Resolves with a
when the update finishes. It rejects if the request fails or is aborted, such as on a network error or when a newer update supersedes it.- Anchor to detaildetaildetailRecord<string, unknown>Record<string, unknown>
Optional custom data for the storefront's internal use. Listeners can read it.
CartLinesUpdateLine
A single line in a `shopify:cart:lines-update` payload. Which identifier you use depends on `action`.
- merchandiseId
The product variant to add. Required when `action` is `add`. Accepts a number, a string, or a full GID string.
string - id
The cart line to change. Required when `action` is `remove` or `update`. Accepts a number, a string, or a full GID string.
string - quantity
The quantity for the line.
number
CartLinesUpdateResult
The value that the `promise` field of a `shopify:cart:lines-update` event resolves with. Check `userErrors` and `warnings` before you read `cart`.
- cart
The cart after the mutation, or `null` if no cart exists.
StandardEventCart | null - userErrors
Validation errors returned by the cart mutation.
CartMutationUserError[] - warnings
Non-blocking warnings returned by the cart mutation.
CartMutationWarning[] - detail
Custom data from whichever code resolved the promise.
Record<string, unknown>
StandardEventCart
A subset of the [Storefront API Cart object](/docs/api/storefront/latest/objects/Cart) that cart events carry.
- id
The cart GID.
string - totalQuantity
The total number of items in the cart.
number - cost
The total cost of the cart.
StandardEventCartCost - lines
The lines in the cart.
StandardEventCartLine[] - discountCodes
The discount codes on the cart.
StandardEventCartDiscountCode[]
StandardEventCartCost
The cost of a cart or a cart line.
- totalAmount
The total amount.
MoneyV2
MoneyV2
An amount with its currency, matching the Storefront API [`MoneyV2`](/docs/api/storefront/latest/objects/MoneyV2) format.
- amount
A decimal money amount, such as `29.99`.
string - currencyCode
The three-letter currency code, such as `USD`.
string
StandardEventCartLine
A single line in the cart.
- id
The cart line ID. A storefront on the AJAX cart API passes its own line keys through, so don't assume a GID.
string - quantity
The quantity of merchandise on the line.
number - cost
The cost of the line.
StandardEventCartCost
StandardEventCartDiscountCode
A discount code on the cart.
- code
The discount code the buyer entered.
string - applicable
Whether the discount code applies to the cart.
boolean
CartMutationUserError
A validation error returned by a cart mutation.
- code
A machine-readable error code, such as `INVALID` for a malformed input or `MAXIMUM_EXCEEDED` for a quantity above the item's maximum. See [`CartErrorCode`](/docs/api/storefront/latest/enums/CartErrorCode) for the full list.
string - field
The path to the field that caused the error.
string[] - message
A human-readable message.
string
CartMutationWarning
A non-blocking warning returned by a cart mutation.
- code
A machine-readable warning code, such as `MERCHANDISE_OUT_OF_STOCK` for a line whose merchandise ran out or `MERCHANDISE_NOT_ENOUGH_STOCK` when only part of the requested quantity is available. See [`CartWarningCode`](/docs/api/storefront/latest/enums/CartWarningCode) for the full list.
string - message
A human-readable message.
string - target
The cart line or field the warning applies to.
string