Skip to main content

Lookup tables

Build XLOOKUP-style value grids in Admin — keyed by hierarchy node, tags and size — and reference them from out-price templates as lookup.<table>.<column>.

A lookup table is an XLOOKUP-style grid of values your brand maintains in Admin and references from price templates — a price matrix by product category and tag, a base value per size, a per-market figure. Templates read from it with lookup.<table>.<column>, and prices recompute automatically when the inputs change.

A lookup table's setup — name and key, season scope, key columns (hierarchy node and tags in a category), and result columns

Table setup

A table has a name, a key (the name templates use), and a season scope — all seasons, or per season.

Key columns decide what a row is looked up by: the product's hierarchy node, its tag in a category (the tags can be dragged into order), and size. Result columns hold the values, each with a name, a key and a type — a Money column is held in a single currency.

A key column can also be a single-select custom field. Pick Single-select custom field as the key column type, then the field: the column takes the field's name, its options become the row values, and a row is picked by the article's value for that field.

Key columns on a lookup table — hierarchy node, tag in category, size in size system, and a Single-select custom field key column set to a custom field, noted Keys on the article's value

The Usage panel on the page shows where the table's values can be used. Today that is out-price templates; the panel marks what is planned next. The panel now also lists seasonal article and SKU custom fields as usable, with in-prices marked as coming soon.

Rows and the closest match

Any hierarchy node can carry values, and the closest node with values applies — a row on the root node acts as the brand-wide default, and a row on a deeper node overrides it for everything beneath.

The Lookup Rows grid — one row per hierarchy node × tag combination, with a value column per result column and a Fill control

Worked example, using the grid above: an article tagged Gore Tex in the Tech category and Trend in Assortment, on a product anywhere under the root node, resolves to the Gore Tex · Trend row — and a template referencing the EU column gets that row's value. Add a row on a deeper hierarchy node and articles under that node resolve to it instead, while everything else keeps using the root row.

The rows grid works like the other spreadsheet-style tables — range selection, copy and paste, fill, undo, with values saving as you type (see Working in tables) — plus Excel export and import for maintaining large grids outside the system. Tables scoped per season get a tab per season, and each season needs its own rows — values don't fall back to another season, so a season without a row resolves to an empty value.

Referencing a table from a price template

In any out-price Liquid template, reference a result column as {{ lookup.<table key>.<column key> }} — for example lookup.prices.eu. Money columns expose .converted (in the price's currency), .unconverted (the column's own currency) and .currency (the code). The template variables panel offers the lookup columns with live previews when linking a price.

Prices recompute automatically when an article's tags change or a product moves to another hierarchy node. After editing a lookup table itself, use the Recalculate prices action on the SKU pricing table to re-bake prices that were computed from the old values.

💡 Calculated (linked) out-prices are recalculated from each SKU's own inputs when a SKU is added or an article is duplicated — they are not copied from a sibling, so they can start empty if the template cannot be resolved yet.

Did this answer your question?