Custom pages
The fourteen contract pages cover a service business. When a merchant needs something else — a gallery, an events calendar — a theme can declare extra routes.
Declaring them
theme.json
{
"customPages": {
"gallery": "/gallery",
"event": "/events/[slug]"
}
}Export a matching component per entry. Dynamic segments work the way they do in Next.js, and the runtime routes to them alongside the contract pages.
When not to use one
If the content is a listing, model it as a listing. Custom pages do not appear in search, sitemaps or the merchant’s normal editing flows the way contract pages do, so reaching for one to avoid learning the data model usually costs the merchant later.