3/4/2026, 12:01:04 AM
The mutation productUpdate now supports an optional identifier argument of type ProductUpdateIdentifiers, enabling you to target a product by custom ID or other lookup fields instead of relying on the product ID. The input object ProductUpdateIdentifiers contains a customId field which wraps a UniqueMetafieldValueInput, allowing you to reference a product via a unique metafield. The InventoryShipmentCreateUserErrorCode enum received a new value, IDEMPOTENCY_RECORD_NOT_FOUND, which indicates the idempotency record for a shipment creation request could not be located. ShippingLine fields originalPrice and originalPriceSet have updated descriptions to clarify that the amounts include taxes when order.taxesIncluded is true; the fields remain deprecated in favor of originalPriceSet. Existing mutations that accept product ID may continue to function, but to use the new identifier feature you must supply the identifier argument when calling productUpdate. Error handling for inventory shipment creation should now account for the new IDEMPOTENCY_RECORD_NOT_FOUND code.
Updates a product
with attributes such as title, description, vendor, and media.
The productUpdate mutation helps you modify many products at once, avoiding the tedious or time-consuming
process of updating them one by one in the Shopify admin. Common examples including updating
product details like status or tags.
The productUpdate mutation doesn't support updating
product variants.
To update multiple product variants for a single product and manage prices, use theproductVariantsBulkUpdate
mutation.
Note:
TheproductUpdatemutation has a throttle
that takes effect when a store has 50,000 product variants. After this threshold is reached, no more than
1,000 new product variants can be updated per day.
After updating a product, you can make additional changes using one of the following mutations:
productSet:publishablePublish:Learn more about the product model
and adding product data.
The input fields required to identify a product for update.
IDEMPOTENCY_RECORD_NOT_FOUNDoriginalPriceoriginalPriceSet