Quick answer
A metafield showing in Shopify admin does not guarantee it will display on the storefront. Check the definition, assigned value, resource type, namespace/key, storefront access, `.value`, and whether the theme section supports dynamic sources.
Symptom
The metafield exists in admin. It may even have a value. But the product page, collection page, custom Liquid block, or theme code shows nothing.
Most likely causes
- No value on this product. The definition exists globally, but the current product may be empty.
- Wrong object. You may be reading product metafields from a variant context or vice versa.
- Missing `.value`. Liquid is returning the metafield object, not the value.
- Storefront access not enabled. The metafield exists but is not exposed where the storefront can use it.
- Wrong type. File/reference/list metafields need different rendering than plain text.
- Theme block does not support that dynamic source. Not every section/block exposes every metafield.
Quick checks
- Confirm the current product/variant/shop actually has a value saved.
- Copy the exact namespace and key from Settings → Custom data.
- Try rendering the metafield path with `.value`.
- Temporarily output the metafield with `| json` on a duplicate theme.
- Try adding the metafield through the theme editor dynamic source icon if the section supports it.
- Check custom data options/access settings.
Theme, app, or code checks
- If it works in theme editor but not custom Liquid, your Liquid path is wrong.
- If it works on one product but not another, the missing product probably has no value.
- If it prints a GID, you may be dealing with a reference metafield and need to resolve the reference.
- If API-created metafields behave oddly, confirm the `type` was created correctly and not through deprecated patterns.
When to stop guessing
Stop troubleshooting the theme until you prove the exact resource has a value. Most metafield bugs are not bugs; they are path, type, access, or empty-value problems.
Prevention checklist
- Create one test product with all expected metafields populated.
- Use standard definitions when available.
- Keep an internal map of resource → namespace → key → type → where used.
- Do not let imports create random metafield namespaces without documentation.

