Update a product
Update a product's name, description, status, SKU and other fields using the GraphQL API. Only the fields you include in the input are updated; all other fields remain unchanged.
Mutation
mutation UpdateProduct($productId: Int!, $input: UpdateProductInput!) {
productUpdate(productId: $productId, input: $input) {
productId
names(language: "NL") { value }
descriptions(language: "NL") { value }
sku
status
manufacturer
manufacturerCode
supplier
supplierCode
barCode
eanCode
minimumQuantity
unit
lastModifiedAt
}
}
Variables
{
"productId": 26,
"input": {
"names": [
{ "language": "NL", "value": "Industriële Kachel HT-350" }
],
"descriptions": [
{ "language": "NL", "value": "<p>Industriële kachel met bovenuitlaat rookkanaal, geschikt voor grote ruimtes.</p>" }
],
"sku": "HT-350-V2",
"status": "A",
"manufacturer": "HeatTech",
"manufacturerCode": "HT350"
}
}
Response
{
"data": {
"productUpdate": {
"productId": 26,
"names": [{ "value": "Industriële Kachel HT-350" }],
"descriptions": [{ "value": "<p>Industriële kachel met bovenuitlaat rookkanaal, geschikt voor grote ruimtes.</p>" }],
"sku": "HT-350-V2",
"status": "A",
"manufacturer": "HeatTech",
"manufacturerCode": "HT350",
"supplier": "Ingram Micro",
"supplierCode": "IM-HT350",
"barCode": null,
"eanCode": "8710000000123",
"minimumQuantity": 1,
"unit": 1,
"lastModifiedAt": "2026-03-05T10:15:00.000Z"
}
}
}
Common update scenarios
Change product status
{
"productId": 26,
"input": {
"status": "S"
}
}
Update SEO metadata
{
"productId": 26,
"input": {
"metadataTitles": [
{ "language": "NL", "value": "Industriële Kachel HT-350 | Online bestellen" }
],
"metadataDescriptions": [
{ "language": "NL", "value": "Industriële kachel met bovenuitlaat rookkanaal, geschikt voor grote ruimtes." }
]
}
}
Set ordering constraints
{
"productId": 26,
"input": {
"minimumQuantity": 5,
"economicOrderQuantity": 10,
"orderable": "Y",
"orderableFrom": "2026-04-01T00:00:00.000Z"
}
}
Product statuses
| Status | Meaning |
|---|---|
A | Active, visible and orderable |
N | New, being set up, not yet live |
P | Pending, awaiting approval |
S | Suspended, temporarily unavailable |
R | Reserved |
T | Terminated, end of life |
How it works
The productUpdate mutation accepts a productId and an UpdateProductInput. Only fields present in the input object are updated. Localized fields (names, descriptions, shortDescriptions, etc.) accept an array of { language, value } objects. HTML is supported in descriptions and shortDescriptions. The mutation returns the full product, so you can verify the update in a single round trip.
See also
- Fetch product by ID — retrieve a product before updating
- Create a product (REST) — create new products using the REST API
- Update a product by lookup key (REST) — update products by SKU or source ID using the REST API