Core Issue:
Developers are struggling to access metaobject values stored in product metafields using Liquid, with initial attempts returning only GID reference URLs instead of actual field values.
Working Solutions:
For metafields containing metaobject lists:
{% assign items = product.metafields.custom.namespace.value %}
{% for item in items %}
{{ item.field_name.value }}
{% endfor %}
For shop-level metaobjects (all entries):
{% assign icons = shop.metaobjects.icon.values %}
{% for icon in icons %}
{{ icon.title }}
{% endfor %}
Key Distinctions:
Use product.metafields.custom.key.value when metafield references specific metaobjects selected per product
Use shop.metaobjects.type.values to access all metaobject entries globally
Access nested fields with .field_name.value syntax
Rich Text Handling:
For rich text metaobject fields, use:
Status:
Resolved through community collaboration. Multiple users confirmed working implementations. Documentation gaps noted as a recurring frustration during the feature’s early rollout.
Summarized with AI on October 30.
AI used: claude-sonnet-4-5-20250929.
@jacopol@haddi@LloydSpencer As per the shopify update we can only access the public metafiled if some app has own meta filed that can’t access to the theme file directly but may be different way you can access.
Hi @LazaEAG
So there is no way to display values from shop.metaobjects per product and not all the values from the website content?
We have to create a product metafield that contains a list of metabobjects instead of having a product metafield per metaobject right?
Quite late to reply here but for anyone coming to this post now, the best way to convert rich text values from metaobjects and/or metafields is to simply use the metafield_text filter, like so:
I should also mention that using the metafield_text filter will wipe out any formatting you might actually want to maintain in the rich text value. The other option would be to use the metafield_tag filter which keeps formatting like hyperlinks and lists.