A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
Since we are forced to migrate from an easy-to-understand REST API to the new GraphQL API, I could not figure out how to achieve the same product synchronization logic from "our" system into the Shopify store.
In the REST API, we could provide `weight` & `weight_unit` in the variations array along with a product. If I try to do the same with GraphQL's `ProductSet` mutation, I get the following error:
Variable $entity11846 of type ProductSetInput! was provided invalid value for variants.0.weight (Field is not defined on ProductVariantSetInput)
(which makes sense, as the property is not available) https://shopify.dev/docs/api/admin-graphql/2024-10/mutations/productSet#argument-input => variations.
I have the following input payload:
{
"title": "Lorem Ipsum Dolor Sit",
"handle": "lorem-ipsum-dolor-sit",
"descriptionHtml": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
"productType": "Lorem, Ipsum, Dolor & Sit Amet",
"files": [
{
"originalSource": "https://example.com/lorem-image-1.jpg",
"contentType": "IMAGE"
},
{
"originalSource": "https://example.com/lorem-image-2.jpg",
"contentType": "IMAGE"
}
],
"variants": [
{
"price": 10.50,
"optionValues": [
{
"optionName": "Lorem",
"name": "Ipsum"
}
]
},
{
"price": 13.99,
"optionValues": [
{
"optionName": "Dolor",
"name": "Sit"
}
]
}
],
"productOptions": [
{
"name": "Lorem",
"position": 1,
"values": [
{
"name": "Ipsum"
}
]
}
]
}
So how to achieve to add the weight and weight unit values into the variations payload?
Do you mean variants? You should update your post since variations doesn't exists.
However I checked the documentation and the measurement field which contains the weight is associated with the InventoryItem type.
Since the InventoryItem type isn't in ProductSetInput type i don't think you can update the weight using the ProductSet mutation.
Is this a bug? Idk, lemme know if you find a solution
Thanks for the Reply. Indeed its "variants" not "variations", sadly i am unable to update the post.
This operation is no longer supported in productSet. You can use productVariantsBulkCreate to implement your business
Thanks, @Kyle_liu , for the answer. At least now I am aware that I cannot use the ProductSet.
My two cents on this (knowing this is not your fault, @Kyle_liu , of course)
We have a sync process from our system into Shopify, and now using different strategies with different endpoints is a huge mess. The ProductSet was meant for migration (as far as I know). The ProductSet option is perfect for handling all these processes in bulk with similar behavior. Now, I have to manually update all variants for each product, just because of this. On a huge dataset, this is a real mess.
So if Shopify is forcing us to use the new GraphQL endpoints (I can understand such decisions technically), it should at least provide a similarly good experience for developers and not the opposite.
Yes, I agree with your point of view. Many people have complained about it.