Content
Content is structured. You define a content type (for example blog-post) with fields, then create entries of that type.
- Create a content type. Only Admins and Owners can create content types.
- Add fields. Types include text, textarea, rich text, number, select, media and reference.
- Create entries. New entries are drafts.
- Publish. Only published entries appear in the public API.
An entry’s slug auto-generates from its title as you type. Editing the slug directly turns auto-generation off for that entry, so your edit is never overwritten — a switch next to the Slug field turns it back on and re-syncs the slug from the current title immediately.
Featured entries
Section titled “Featured entries”Every entry has a Featured switch in the editor’s Status card, independent of any field on the content type itself. It’s for picking out a spot on your site — a featured post, a pinned product — without adding a boolean field and remembering its exact name.
Featured entries show a star next to their slug in the Entries list. Filter for them from the API with ?featured=true (GET /api/v1/public/:contentType?featured=true, or cms.entries.list({ contentType, featured: true }) from @kenresoft-cms/astro).
By default, any number of entries of a content type can be featured at once, and your site decides how many to show. For a single spot, such as a homepage hero, an Admin can turn on Only one featured entry for that content type (Content Types > the type > Edit). Featuring an entry then un-features the one featured before, and the entry editor says so before you save. If several entries are already featured when you turn it on, only the most recently updated one stays featured.
The featured list doesn’t have a guaranteed order, so with the switch off, don’t rely on which featured entry comes first.
Rich text
Section titled “Rich text”A rich text field is edited in a formatting editor with four modes, switched from the dropdown in its toolbar:
- Write: the normal editor. Headings, bold, italic, underline, strikethrough, highlight, links, lists, checklists, quotes, code blocks, tables, images from the Media Library and text alignment. Markdown shortcuts work as you type at the start of a line:
##for a heading,-for a list,[ ]or[x]for a checklist item, and```for a code block.**bold**and_italic_work anywhere. - Preview: the content as it will render.
- Markdown: view or edit the field as Markdown, for example to paste a post written elsewhere. Checklists are written
- [ ] itemand- [x] done, with or without blank lines between items, and numbered checklists (1. [ ] step) become checklists too. Underline, highlight and alignment have no Markdown syntax, so they appear as small HTML tags (<u>,<mark>,<p style="text-align: center">). Leave those in place to keep the formatting. - HTML: view or paste raw HTML. Only markup the editor supports is kept.
Edits made in Markdown or HTML mode are applied when you switch to another mode. The field is always stored as HTML, whichever mode you used.
Rich text is sanitized when an entry is saved and again when it’s read. Everything the editor produces is kept, including checklists.
A checklist is stored as plain HTML that displays correctly on any site, with no extra CSS: each item is <li data-type="taskItem" data-checked="true"><input type="checkbox" disabled checked> text</li>, inside a <ul data-type="taskList"> with its bullets turned off. The checkbox is display-only, and carries a small inline style so your site’s own input styles can’t push it onto its own line. To style checklists yourself, target ul[data-type="taskList"], li[data-type="taskItem"] and li[data-checked="true"].
Checklists saved before this format was introduced are converted when your site requests them, so they display on one line too, with no need to re-save. After you update, a published page may show the old layout for up to 5 minutes, until its cached copy expires.
Deleting a content type
Section titled “Deleting a content type”Admins can delete a content type from its Schema page. This permanently removes the content type, its fields, and every entry created under it — it can’t be undone. If another content type has a reference field pointing at the one you’re deleting, the delete is blocked until that field is repointed or removed.
Revisions
Section titled “Revisions”Every entry write (create, update, restore, scheduled publish) is snapshotted as a revision. The entry editor has a revision history panel from which you can restore an earlier version.
Scheduled publishing
Section titled “Scheduled publishing”Set Schedule publish on a draft; the editor then shows when it will go live. Due drafts (entries and pages) are published by a Cloudflare Cron Trigger every 5 minutes, and also from ordinary API traffic (checked at most every 30 seconds), so an item usually goes live within about a minute of its time whenever the site is in use, and at most five minutes after. Only drafts are published on a schedule.
Under wrangler dev the Cron Trigger never fires, so local testing relies on the traffic-driven check: any request to the public or admin API after the scheduled time publishes it. One item failing to publish never blocks the others; it stays a due draft and is retried on the next check.
Preview
Section titled “Preview”The entry editor’s Live Preview button opens your real frontend with a short-lived signed token, so you can see a draft rendered by your own templates. It needs a preview URL configured in Settings and a frontend that supports it: see Live Preview.
Import and export
Section titled “Import and export”The Entries page can export a content type’s entries to a JSON file and import them back. Import matches entries by slug: existing slugs are updated, new ones are created. Import is limited to Admins and Editors.
See also Content lifecycle.