A developer is attempting to update line item custom attributes on existing Shopify orders using Flow’s Admin API but encountering errors. They can successfully update order-level custom attributes using the orderUpdate mutation, but adding lineItemId to the input fails with “Field is not defined on OrderInput.”
Key limitation identified: Shopify’s Admin API does not support updating line item properties on existing orders—only order-level modifications are permitted.
Proposed workarounds:
Use Draft Orders for pre-checkout editing
Refund and recreate orders to modify line items
Store additional data in metafields instead
Context: The implementation involves a custom “build-a-box” subscription product built on Shopify 1.0, where customers select multiple attributes (up to 7) added as line item custom attributes. The developer needs admin-editable line items for subscription management but faces compatibility issues with the legacy custom basket implementation. Rebuilding to use metafields would require significant refactoring of the existing codebase.
Status: The discussion remains open with no clear solution for editing line items on existing subscription orders without major architectural changes.
Summarized with AI on October 29.
AI used: claude-sonnet-4-5-20250929.
1. FirstlyUse Draft Orders– Edit before checkout.
This is for Shopify subscription orders, so if they want to edit their line items for next time, by the admin able to edit the order line items I thought it’d be able to edit it for next subscription run. I really don’t fancy recreating the order as a draft, etc
2. Also Use Metafields
This would probs take a bit rebuild, it was built in Shopify 1 a few years ago and doesn’t use the standard basket. It is a custom build a box, so people can add different attributes (upto 7) to a single order and then checkout.
These are added to a Orders Line Items Custom Attributes.
eg:
if (Shopify.queue.length) {
var request = Shopify.queue.shift();
var data = {};
if (request.properties) {
data = {
id: request.variantId,
quantity: request.quantity,
selling_plan: choosenFrequency,
properties: {
Essences: essenceString,
Price: '£' + boxPrice.toFixed(2),
'Base': choosenBase
}
};