Skip to main content
A section is a Liquid file in sections/ with an embedded {% schema %} block declaring its settings. Owners arrange sections and fill in settings from the Design editor; your Liquid renders the result.

A complete section

Inside a section, section.settings.<id> reads each value — schema defaults, overridden by whatever the owner saved.

Setting types

text, textarea, select (with options), checkbox, image, palette (theme-level colour scheme picker), and numeric text. Every setting takes label, optional default, optional note (shown as help text), optional placeholder. A text setting that lands inside an attribute (an input’s value, a URL) should declare "inline": false so the design editor doesn’t wrap it in an in-place editing marker. For a section text setting used only as a fallback to site.tagline, add "overridden_by": "tagline". When the site’s tagline is populated, Design shows the shared Tagline editor in place of the unused fallback field. Saving that shared field updates the website immediately; the section’s stored text is preserved. With an empty tagline, its normal draft/publish field returns. This optional editor hint does not change Liquid rendering. Declare it only when your template actually gives site.tagline precedence.
A section's schema rendered as a settings panel in the Design editor

The schema is the settings panel: each setting id becomes a field in Design.

Blocks: a real example

Sections can declare repeatable blocks — the owner adds, removes, and reorders them. This is the platform’s actual Testimonials section, in full — one block per quote:
block.type matters when a section declares several block kinds; the platform’s blog-posts section uses blocks to hand-pick posts by slug.

Agent homepage sections

The openings also read the shared agent profile from site. Changing the layout should not rename these fields or copy profile content into hard-coded markup. Keep the existing schemas when overriding either opening type, including the select values for show_about. Working together starts with editable buying and selling steps. An owner can replace them with their own services or process. An empty block list hides the section. Testimonials starts with no quote blocks; it does not publish invented reviews as defaults. Personal contact invitation uses data-contact-open. Its layout must provide a dialog with data-contact-modal, a close control with data-contact-close, and the platform contact form hooks. The stock layouts and starter provide this; see Layouts & templates.

Platform sections

Stock filesystem themes fall back to themes/shared/sections when they do not have a local section with the same name. The shared library includes agent-masthead, agent-letter, agent-approach, agent-invitation, proof-strip, area-around, blog-posts, team, testimonials and image. Other sections, such as featured-listings, recent-sales, listings-map, home-valuation, about-agent and text, ship with each theme. A local file with the same section name overrides the shared one. A detached/custom theme has no shared fallback: include every referenced section and snippet in its saved files. Preserve section types and setting IDs when migrating saved content. Changing a zone’s default list does not replace a site’s existing arrangement.