Skip to main content
A .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.
Ambiguous bracket routes resolve unpredictably. Where two [param] routes at the same depth can both match a URL there is no specificity rule and no tie-break, and a literal segment does not take precedence over a parameter. Do not define routes where more than one can match the same URL.

Route parameters

A parameter is available under two names:
pages/products/[slug].slurp
Both hold the same value. The bare name is injected at the top level and cannot overwrite 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 under account 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.
A theme that emits its own og:* or canonical tags produces duplicates on every page.