Liquid blocks, presets and locks
The schema separates what a merchant may build from the starting tree a preset initially creates.
Block definitions
block_types defines the available types. Each definition needs a safe unique type, visible name, settings, optional allowed_blocks, optional max_blocks and optional presets.
The section's top-level allowed_blocks lists which defined block types may be placed directly inside it. A block definition's own allowed_blocks controls its children.
Presets
A preset supplies starting settings and a starting nested block tree. It does not become another rendering system. After insertion, the merchant owns that installed tree and values.
Preset children must use a type allowed by their parent and respect every maximum. A block may provide at most 30 named presets. One schema may describe at most 500 preset nodes.
Local blocks
local_blocks defines section-only block types. Their type begins with an underscore. They remain implemented inside the main section Liquid file and do not receive separate Agency Mode editors.
Static locks
static_blocks fixes required local blocks in important positions. Each entry must preserve its ID and type and declare:
{
"id": "summary",
"type": "_summary",
"static": true,
"removable": false,
"reorderable": false,
"duplicatable": false
}
Do not rename or loosen an installed static block merely to make a schema edit pass. Its identity and locks are part of the section contract.