Skip to main content

Blog

Blog Builder includes a full blog management system with a draft/publish workflow, markdown editor, tag-based organization, and automatic SEO metadata.

Admin Panel

  • Location: Admin Panel > Blog (/admin/blog)
  • Required permission: manageBlogs

Creating a Post

Each blog post has the following fields:

FieldDescription
TitleThe post's display title
SlugURL path (auto-generated from the title, editable)
ContentMarkdown editor (see the Markdown guide)
ExcerptShort summary shown in post listings
Cover ImageOptional header image for the post
TagsComma-separated list of tags
Statusdraft, published, or archived
ScopeSite-wide or scoped to a custom page category
Publish DateOptional custom date (defaults to current time when published)

Post Statuses

StatusBehavior
draftNot publicly visible. Admins with manageBlogs can preview.
publishedVisible on the public blog.
archivedHidden from public listings. The URL remains accessible to admins with manageBlogs.

Blog Scopes

Posts can be published in one of two scopes:

  • Site-wide: Post appears at /blog and /blog/[slug]
  • Category (scoped): Post is assigned to a custom page's blog category. It appears at /[page-slug]/blog and /[page-slug]/blog/[post-slug]

For scoped posts, the target custom page must have the "Has Blog" option enabled. See the Pages documentation for details.

Public Routes

RouteDescription
/blogBlog listing (filterable by tag)
/blog/[slug]Individual blog post
/[page-slug]/blogScoped blog listing for a custom page
/[page-slug]/blog/[post-slug]Scoped blog post

Tag Filtering

The /blog listing page supports filtering by tag via the ?tag= query parameter (e.g. /blog?tag=news). All published tags are available from the GET /api/tags endpoint.

Post Views

Each time a published blog post is loaded, its view count is incremented. Views are tracked on the post document and also recorded as blog_view events in the analytics system.

Blog posts are included in the site-wide search. Published posts are searchable by title, excerpt, and content body via /search.

info

Admins with manageBlogs can also see draft posts in search results when logged in.

Slug Availability

Before saving a new post, slug availability is checked via GET /api/slugcheck/post?slug=[slug]. If the slug is already in use, a number is automatically appended (e.g. my-post-2).