.slurp file in pages/ is a route. There is no route configuration.
Route resolution
Three passes, in order. The first match wins.1
Exact
/products matches pages/products.slurp.2
Index
/foo matches pages/foo/index.slurp.3
Bracket parameters
/products/abc matches pages/products/[slug].slurp, binding slug to
abc. Segment counts must be equal./ resolves to index.
Route parameters
A parameter is available under two names:pages/products/[slug].slurp
storefront, theme or params.
A page declaring
props { slug } reads the bare ${ slug }, not
${ params.slug }. Page props are not bound from params.Special pages
None are required. A theme that omits one has no page at that route. The platform applies the following behaviour when they are present.404, login, cart, checkout and redeem are excluded from the sitemap.
The
404 page renders only for navigations that accept HTML. A missing
subresource receives a plain-text response, so one bad asset URL cannot
trigger a full page render. It shares the remaining render budget and degrades
to plain text rather than failing.Authentication
Pages underaccount require a signed-in buyer by convention. Authentication
can also be set per page in the builder.
Authentication requires a valid, signed, unexpired token. Cookie presence is not
sufficient, so the signed-in state cannot be previewed by setting one.
Reserved prefixes
The router matches these before theme pages. A page at one of these paths is unreachable.Default content
A page places{sections}. The content comes from the merchant, starting from a
matching file in templates/, keyed by the page key the router produced.
See Sections and blocks.
The head
The theme emits<title> and meta description. The platform injects
canonical, og:*, twitter:*, robots and JSON-LD after the template renders.