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
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.

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 tothemes/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.