Hi,
I’d like to regularly update product metafields. Each product will have a fixed number of metafields. Between each update, new products will be created, so the inventory will include products which have and don’t have these metafields.
Is there a possibility to create new metafields and update existing ones with a single GraphQL query? Or do I need first to find existing ones, then do one mutation for them incl. the metafield id, and another one for the new products?
Example for what I want to accomplish:
Before run
Product A, metafield-a: red
Product B, metafield-a: blue
Product C, // no metafields
After run
Product A, metafield-a: red
Product B, metafield-a: green // new value
Product C, metafield-a: yellow // new metafield
Right now I’m using following mutation to update fields:
mutation($input: ProductInput!) {
productUpdate(input: $input) {
product {
metafields(first: 100) {
edges {
node {
id
namespace
key
value
}
}
}
}
userErrors {
field,
message
}
}
}
{
"input": {
"id": "gid://shopify/Product/123",
"metafields": [
{
"id": "gid://shopify/Metafield/456",
"namespace": "product-description",
"key": "wash",
"value": "handwarm wash",
"valueType": "STRING"
}
]
}
}
and another one without the line
"id": "gid://shopify/Metafield/456",
for the new products.
So can I have a kind of conditional logic within a GraphQL mutation or do need to handle this outside of the mutation?
Thanks
Deniz