Reference · Shopify sections

Shopify section schema —
a complete reference

The {% schema %} block is what turns a Liquid file into a Theme Editor-configurable section. Here's everything that goes in it — setting types, block definitions, presets, limits, and the parts the official docs underexplain.

Schema structure

01

name

The section's display name in the Theme Editor sidebar. "name": "Featured collection". Keep it short — it appears in the section list and in breadcrumbs. Use sentence case, not title case.

02

settings

An array of setting objects. Each has an id (how you reference it in Liquid as section.settings.id), a type, and a label. Optional: default, info (help text below the field), placeholder.

03

blocks

An array of block type definitions. Each block type has a type (your internal identifier), a name (shown in the editor), and its own settings array. In Liquid, iterate with {% for block in section.blocks %} and filter by block.type if you have multiple types.

04

presets

The default state of the section when added from the "Add section" panel. Define a preset with a name and optional settings and blocks arrays. Without a preset, the section won't appear in the panel. Most sections should ship with at least one preset.

05

max_blocks

Sets the maximum number of blocks the merchant can add. Default is 16. For a section that renders a 3-column grid, setting "max_blocks": 12 prevents the merchant from adding more than the layout handles gracefully.

06

enabled_on / disabled_on

Control which template types can use the section. "enabled_on": { "templates": ["product"] } restricts the section to product pages only. Use this for sections that only make sense in a specific context — a "Frequently bought together" section shouldn't be addable to the homepage.

Setting types

Text and content

text — single-line input. textarea — multi-line plain text. richtext — block-level editor (bold, italic, links, lists). html — raw HTML input, merchant-editable. Use with caution. liquid — Liquid markup. Powerful but hard to validate — restrict to advanced users.

Media

image_picker — selects from the store's Files. Returns an image object; use | image_url and | image_tag filters. video — selects a Shopify-hosted video. video_url — a text field that accepts YouTube or Vimeo URLs.

Store data

product, collection, blog, page, link_list — pickers that return the corresponding Shopify object. Access properties directly: a product setting returns a full product object with .title, .variants, .featured_image and so on.

UI controls

range — slider with min, max, step, and unit. Good for padding, font size, or column count. select — dropdown with explicit options. checkbox — boolean toggle. radio — radio group. color — color picker. color_scheme — picks from the theme's defined color schemes. font_picker — selects from Shopify's font library. header and paragraph — informational UI elements, not saved as settings.

Related