outpost-manifest.yaml file. For a quick introduction, see Getting Started.
File Location
The manifest file must be namedoutpost-manifest.yaml and placed in your theme’s root directory, alongside package.json.
Schema Overview
Top-Level Fields
manifest_version
Required. Must be1. This enables future schema evolution without breaking existing manifests.
events
Required. Contains all event-related configuration.Events Section
events.default_tags
Optional. Array of Ghost tag names applied to ALL event types when published.events.types
Required. Object where each key is an event type identifier and the value is that type’s configuration.in_person, virtual_workshop). These keys are stored on event records and used for identification.
Event Type Configuration
Each event type supports the following fields:post_template
Required. The Ghost custom template filename (without.hbs extension) used for this event type’s posts.
label
Optional. Human-readable name shown in the Outpost UI. Defaults to the type key with underscores replaced by spaces and title-cased.tags
Optional. Array of Ghost tags specific to this event type. Merged withdefault_tags when publishing.
supported_fields
Optional. Array of standard field keys to show for this event type. If omitted, all standard fields are shown.required_fields
Optional. Array of field keys that must be filled before publishing. Must be a subset ofsupported_fields (or standard fields if supported_fields is omitted).
field_constraints
Optional. Object defining validation constraints for specific fields.custom_fields
Optional. Array of custom field definitions for theme-specific data.messaging_states
Optional. Array of messaging states to show in the event settings. If omitted, all seven states are shown.Standard Field Keys
These are the built-in fields available forsupported_fields and required_fields:
Field Constraints
Available constraints vary by field type:Text/Textarea Fields
Image Fields
Number Fields
Custom Field Types
Custom fields support these types:text
Single-line text input.textarea
Multi-line text input.number
Numeric input with optional range constraints.select
Dropdown with predefined options.url
URL input with validation.date
Date picker input.toggle
Boolean switch input.image
Image upload with optional constraints.Custom Field Properties
All custom field types support these properties:Messaging States
Control which messaging states appear in the event settings editor:Homepage Curation Section
Optional. Declares curated homepage regions that a publisher can fill from the Outpost UI. When a theme’s manifest includes a top-levelhomepage_curation key, Outpost shows a Homepage Curation screen (under Posts) where editors pick which post occupies each slot — without hand-editing tags in Ghost.
homepage_curation and events are independent top-level keys in the same outpost-manifest.yaml; a theme can declare either, both, or neither.
How slots work
Each slot binds one Ghost tag to one post. The theme renders whichever single post currently carries that tag; the curation UI simply swaps which post wears it. Slot tags are ordinary Ghost internal tags — ahash- prefix maps to a # internal tag.
Homepage Curation is an early Labs feature and currently ships in the single-file manifest format. A complete worked example is bundled with the docs as
cascade-homepage-curation.yaml.Error Handling
Outpost validates manifests during theme upload and stores errors in the manifest data. Invalid parts are stripped while valid parts are kept.Error Categories
Viewing Errors
Errors are visible in:- Theme settings table (warning count with info button)
- Event editor (banner at top of form)
- Theme upload/refresh API response

