Storefront zones — extension blocks in any theme

A CLOSED enum of places on the storefront where an extension's block (a kit-tree) can appear. Zones are rendered by the platform's sections and page renderer, so every zone exists in every theme; the block is drawn through the ACTIVE theme's element kit, never with its own CSS or JS. Placement is owner-driven: installing an extension never injects anything; the owner (or an agent via design.zone.place) places a block, and it lives in the store bundle (layout.zones). Nothing renders inside the checkout enclave or on /siparis (ADR 0021).

zonewhere
header.utilityheader actions row, before the cart button
header.belowunder the header row (above the page)
home.tophome page, above the first section
home.bottomhome page, after the last section
product.gallery.afterproduct page, under the gallery
product.below-buyboxproduct page, under the add-to-cart box
product.after-descriptionproduct page, after the description
product.bottomproduct page, after the last section
collection.before-gridcollection page, above the product grid
collection.after-gridcollection page, under the product grid
cart.topcart page, above the lines
cart.bottomcart page, after the summary
footer.abovefooter, above the columns
page.topstatic + extension pages, above the first section
page.bottomstatic + extension pages, after the last section

Limits: ≤ 4 fills per zone, fill config ≤ 4096 bytes. A fill of a disabled or uninstalled extension is simply absent (never broken). Commands: design.zone.place, design.zone.remove, design.extpage.add, design.extpage.remove (all proposal-able for Ajan tokens).

Generated from the live platform registries at build time — reference pages cannot go stale. Markdown variant: /reference/storefront-zones.md