I’m running into issues trying to set read-only read-only metafields in asynchronous ProductSet calls.
For background:
- API version is 2025-10.
- ID Metafield definition exists and allows us to use ProductSet to insert/update (upsert) in a single operation.
- I’m using bulk operations on files comprised of multiple records in JSONL format.
- Files are uploaded, the mutation is run, and I’m waiting for the bulk operation to finish.
- I can’t get the “metafields” property to work.
Here’s an example record from the file:
{"identifier":{"customId":{"key":"id","value":"1632"}},"input":{"title":"Product #1632","metafields":[{"key":"brand","value":"ACME"}]}}
Here’s the mutation:
mutation call($identifier: ProductSetIdentifiers, $input: ProductSetInput!) { productSet(identifier: $identifier, input: $input) { product { id } userErrors { code message field } } }
Here’s the complete response I get:
{"data":{"productSet":{"product":null,"userErrors":[{"code":"METAFIELD_MISMATCH","message":"The input argument `metafields` (if present) must contain the `customId` value.","field":["input"]}]}},"__lineNumber":0}
I’ve tried adding a “customId” node to the metafield:
{"identifier":{"customId":{"key":"id","value":"1632"}},"input":{"title":"Product #1632","metafields":[{"customId":{"key":"brand","value":"ACME"}}]}}
And I get this error:
{"data":{"bulkOperationRunMutation":{"bulkOperation":null,"userErrors":[{"message":"Invalid Bulk Mutation Field - Variable $input of type ProductSetInput! was provided invalid value for metafields.0.customId (Field is not defined on MetafieldInput)","field":null}]}},"extensions":{"cost":{"requestedQueryCost":10,"actualQueryCost":10,"throttleStatus":{"maximumAvailable":2000.0,"currentlyAvailable":1990,"restoreRate":100.0}}}}
There is zero documentation available indicating:
- How to use a “customId” (UniqueMetafieldValueInput) node on the MetafieldInput object.
- How to resolve METAFIELD_MISMATCH errors on the ProductSet async call.
The error indicates this should be possible. I think I’m probably missing something in the mutation definition… but I’m currently at a loss.
Note: I’m not looking to just set product-level metafields. I’ve created read-only, pinned product-level metafield definitions that are visible in the admin. The “id” metafield is being set properly and I want to set the other read-only metafields, as well.
Please let me know what I’m doing wrong!
Thanks in advance.