Templates
Templates control what's rendered on each type of page in a theme.
Templates control what's rendered on particular types of pages in a theme. Each page type has an associated template that determines its structure and content.
The platform automatically generates pages at specific URLs and passes the relevant data objects to the template for rendering.
Location
Template files are located in the templates directory of the theme. Each template type has its own folder containing an
index.html file and an optional index.css file for template-specific styles.
templates
├── blog_overview
│ ├── index.css
│ └── index.html
├── blog_post
│ ├── index.css
│ └── index.html
├── content
│ └── index.html
├── product
│ ├── index.css
│ └── index.html
├── selections
│ └── index.html
├── recommendation
│ └── index.html
└── package_booking
├── index.css
└── index.htmlTemplate types
The following template types are available. Templates marked as optional do not need to be included in your theme — the platform will use a default page or simply not render the page type.
| Template | Required | Description | URL |
|---|---|---|---|
| Blog overview | Yes | Lists all blog posts | /blog |
| Blog post | Yes | Displays a single blog post | /blog/{post-slug} |
| Content | Yes | Displays a content biography | /contents/{content-slug} |
| Product | Yes | Displays a single product | /products/{product-slug} |
| Selections | No | Allows customers to make selections on their order | /items/{booking-id}/selections |
| Recommendation | No | Displays a personalised recommendation | /recommendations/{recommendation-slug} |
| Package booking | Yes - if using the Package product type | Renders steps in a multi-step package booking journey | Platform-managed URLs |
Template customisation
Some templates support a schema that allows creators to customise the template's appearance and behaviour through the site builder. The schema is defined as YAML front matter at the top of the index.html file, in the same way as block schemas.
Templates that support schemas: product, package booking.
Blog overview
Renders a blog index page displaying all posts.
Object: A posts array of Post objects.
The blog overview page automatically implements pagination, displaying 12 posts per page. A Paginate object can be accessed via paginate to generate links to other pages and display page counts.
Blog post
Renders a single blog post.
Object: A single Post object.
Content
Renders a single content biography page.
Object: A single Content object.
Product
Renders a single product page.
Object: A single Product object.
If the product is part of a series, the product page will also be available at /products/{series-slug}/{product-departure-date}.
This template supports a schema for creator customisation.
Selections
Optional
Allows a customer to return after booking and make selections on their order, such as choosing which workshops they'll attend.
Object: A single Modifier Selection object, combining the data for a particular line item with the guest information for the currently logged-in customer.
This page can only be accessed by the customer to whose booking the selection applies.
Recommendation
Optional
Renders a personalised recommendation page.
Object: A single Recommendation object.
This template will only render if it has been configured on the associated site — otherwise, the platform renders a default recommendation page.
Package booking
Renders each step in a multi-step package booking journey. Packages allow creators to build custom booking flows where customers select from available options at each step before proceeding to checkout.
Object: A Package Step object containing the current step's name, description, available variants, and the URL of the next step.
This template supports a schema for creator customisation.