Core Issue:
Developers are trying to include variant-level metafields in Shopify’s products/update webhook. When configuring metafield_namespaces, these apply only to product-level metafields, not variant metafields.
Initial Workaround:
Early participants resorted to making additional API calls to fetch variant metafield data after receiving webhooks, as the metafields key in variant objects remained empty despite being present in the payload.
Proposed Solution:
One user (JohnWF) reported success by including the variant metafield namespace in the metafieldNamespaces array when creating the webhook subscription. They shared code showing a GraphQL mutation with includeFields: ['id', 'variants'] and metafieldNamespaces: ['loyalty'] to retrieve variant metafields like variant.metafields.loyalty.points.
Ongoing Problem:
A recent user reports this solution isn’t working for them—webhooks fire when updating variant properties (like SKU) but not when updating variant metafield values directly, suggesting the issue may not be fully resolved or implementation-dependent.
Status: Unresolved for some users; awaiting official Shopify team clarification.
Summarized with AI on October 26.
AI used: claude-sonnet-4-5-20250929.
I’m able to configure a webhook for the “products/update” topic that sends my app both product and variant data. Webhooks fire as expected when I update products and variants and their metafields.
The issue is when you configure “metafield_namespaces” on the webhook, they are for the products and not the variants. Is it possible to configure the webhook to return the variant metafields?
In the data Shopify sends, there is a key in each variant called
“metafields”, but it is always empty and there is absolutely nothing in the
docs about that.
Hey guys! For anyone looking at this in the present day, I figured it out for me - if you include the variant metafield namespace in your “metafieldNamespaces” array when making the webhook, those webhooks will turn up in “metafields” in “variants”. I tried subscribing with no metafieldNamespaces - nothing. I tried with the variant metafield namespace - voila.
I still did not receive webhook when the metafield value was updated, but when I update any other variant details like sku value etc then i receive the webhook.