Theme data formats
Two sections read a metafield the theme cannot create for you. Both formats are positional, so the order of the columns matters and the labels do not.
custom.size_guide — Size guide
#
Type: multi-line text, on the PRODUCT.
One line per size. Five cells, separated by |. Only the first is
required.
| # | Cell | Meaning | Renamed by |
|---|---|---|---|
| 1 | Name | The size's name, printed as the card's heading | — |
| 2 | Second column | Any short fact about the size | dims_label |
| 3 | Measurement range | min - max, optionally with a unit |
measure_label |
| 4 | Tags | Comma-separated; each becomes a pill | tags_label |
| 5 | Fifth column | Any second short fact | weight_label |
The column ORDER is fixed. Renaming a column is a labelling job in the section's settings; reordering one would silently reinterpret every product already written.
Column 3 must be a numeric min - max range for the slider to appear. A product whose
rows have no range still renders its cards, without a slider — which is correct, because there is
then nothing to match against.
Copy-paste sample (a shoe, sizes in EU):
EU 40 | 40 | 24.8 - 25.4 cm | Standard, Wide | 248 g
EU 41 | 41 | 25.4 - 26.0 cm | Standard | 255 g
EU 42 | 42 | 26.0 - 26.7 cm | Standard, Wide | 262 g
EU 43 | 43 | 26.7 - 27.3 cm | Standard | 270 g
With the section's column labels set to Measurement Foot length, Second column
EU size, Fourth column Width, Fifth column Weight.
custom.spec_groups — Spec groups
#
Type: list of metaobject references, on the PRODUCT.
Needs a metaobject definition first, because a group is a small record and Shopify
has no other way to store one:
| Field | Type | Holds |
|---|---|---|
title |
single line text | The group's heading, e.g. MATERIALS |
rows |
multi-line text | One Label: Value per line |
note |
single line text | Optional footnote under the group |
layout |
single line text | tiles, columns, list or benefit |
Definition handle: spec_group. Product metafield: custom.spec_groups,
type "list of metaobject references", pointing at that definition.
Row syntax inside rows:
Upper: Engineered mesh
Midsole: Supercritical EVA | 34 mm stack <- text after | is a sub-line
Outsole: Rubber, 4 mm lugs
A line with no colon renders as a value with no label, which is what a package-contents list wants. A group with no rows renders nothing at all, so the section can sit in the template permanently and appear when it is filled.
Copy-paste sample for one group:
title: MATERIALS
layout: columns
rows: Upper: Engineered mesh
Midsole: Supercritical EVA | 34 mm stack
Outsole: Rubber, 4 mm lugs
note: Measured on a size 42.
Spec table rows — Spec cells block, Rows field
#
Not a metafield: a textarea on the product page's Spec cells block. One row per line:
metafield_key | Label | icon
metafield_key is looked up on the product under custom — first as typed,
then with a spec_ prefix, then in a legacy specs namespace.
Label is what prints; leave it out and the key prints instead. icon is
optional and names one of the theme's glyphs: ruler, scale,
bolt, clock, layers, link, shield,
tag, star, check.
demo_drop | Drop | ruler
demo_stack | Stack | layers
demo_weight | Weight | scale
The theme hides a row whose key it cannot resolve rather than printing an empty one. Check the key against the product's actual metafields, watch for trailing spaces, and see the troubleshooting entry on the support page.