I was just after some guidance on updating/syncing products in one go. I have all the detail, ID, stored locally so would like to do one push to update a product (variants, metafields, files in one go). I think I should be using productSet (updateProductAsynchronous).
My question is whether anyone else has done that and what your experiences are. I have been using productSet as a create and have noticed some things aren’t possible in one go, like creating the invetoryItem (measurements)
For updating inventory, Shopify recently announced that they added support in API version 2024-10. When you’re calling productSet the variants now have an inventoryQuantities object where you can set the location and quantity. Does that help?
Generally, we’re looking at using productSet going forwards as it seems to be a better option for setting data from an external source. However right now we’re still using individual APIs like productUpdate (a legacy from how we designed the app when it was just REST APIs).
Thanks. Yes, I have added in inventoryQuantities. When looking at it, I would need to include all date, even if it hasn’t changed, for example all metafield IDs and data, even if the value hasn’t changed. This just increases the cost, so it seems to be, breaking out the calls, one for variants, one for metafields is still the way to go. This is pretty inconvenient, from what I can see, and defeats any benefit of the productSet endpoint.
So you do everything with ProductSet, but then handle those measurement infos with the inventoryItem call? Thanks for any help and examples, i am actually really upset with the “migration plan” of shopify (The exact deadline for products/variants api migration - #7 by Nadar)
Yep, I started with productSet and then added extras. For example I have other calls for media, channels and metafields. I was already using Graphql, but this update has cause more some issues, as there seem to be bits missing. Updates are more tricky as I only want to send data when it has changed, so metafields need to be treated differently from what I can see.
Some of the api seem half-backed to me (missing bits an inconsistent names)