Pages

Create, organize, and publish content on your site.

Create

Build pages with the admin dashboard, AI assistant, or REST API.

Organize

Nest pages under parents to create site hierarchy and URL structure.

Publish

Toggle visibility and preview drafts before going live.

Tip

You can also create pages through the AI assistant or the REST API. The AI can generate full pages with content, layout, and styling from a single prompt.

Creating pages

Every page has a title, a slug (the URL path), and HTML content. You can create pages through the admin dashboard or by asking the AI assistant.

Title

The display name of the page

Example: "About Us"

Slug

The URL path for the page

Auto-generated from title: "about-us". Your page lives at /about-us

HTML

The page content

Full HTML with support for template functions

Published

Whether the page is visible to visitors

Unpublished pages are only visible to admins

Page hierarchy

Pages can be nested under parent pages to create a site structure. Child pages inherit the parent's URL path.

/
/about
/about/team
/about/careers
/blog
/blog/first-post
/blog/second-post
/contact

Drag and drop pages in the admin sidebar to reorder them or change their parent.

Publishing

Pages have a published/unpublished toggle. Unpublished pages are only visible when you're signed in as an admin, so you can preview content before making it live.

Published

Visible to everyone. Shows up in navigation and search.

Unpublished

Admin-only preview. Perfect for drafts and work in progress.

Version history

Every change to a page is saved as a version. You can view the history of changes and restore any previous version from the admin dashboard.

Current version 2 minutes ago
Previous version 1 hour ago
Original version Yesterday

AI changes are also versioned. If the AI makes a change you don't like, you can restore the previous version.

Template functions in pages

Page content supports Go template syntax. Use template functions to display dynamic data from your collections.

Display blog posts on a page
<div class="blog">
  {{range $post := documents "blog-posts"}}
    <article>
      <h2>{{$post.GetString "title"}}</h2>
      <p>{{$post.GetString "excerpt"}}</p>
    </article>
  {{end}}</div>

See the full Template Reference for all available functions.

What's next?