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
Optional. Contains all event-related configuration. Include it when your theme supports Outpost events; a manifest can declareevents, homepage_curation, or both.
Events Section
events.default_tags
Optional. Array of Ghost tag names applied to ALL event types when published.events.types
Required whenevents is present. 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 the first letter capitalized.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 holding constraint hints for standard fields. Outpost surfacesfeature_image constraints as recommended image dimensions in the event editor; constraints on other standard fields are stored with the manifest but are not enforced when publishing.
feature_image constraint reaches the publisher as a comma-joined phrase built from min_width (“1200px wide”), min_height (“630px tall”), and aspect_ratio (“16:9 aspect ratio”). The phrase shows under the Featured Image field and again inside the Crop Image dialog. Only aspect_ratio shapes the crop stencil. min_width and min_height set the smallest image the editor will produce: a crop smaller than those values is scaled up to meet them after the crop is applied.
If an event type sets no feature_image constraint, the editor falls back to the site’s Event Settings, under Default Featured Image Size. If neither is set, it shows a built-in recommendation of 1200 x 630px, so publishers always see a recommended size.
See Field Constraints for available constraint options.
custom_fields
Optional. Array of custom field definitions for theme-specific data.messaging_states
Optional. Array of messaging state names. Outpost validates the names in this key but does not act on it. Event Settings offers all seven messaging states no matter what an event type declares here.default
Optional. Boolean. Mark one event type withdefault: true and Outpost preselects it in the Event Type dropdown when a publisher creates a new event.
Standard Field Keys
These are the built-in fields available forsupported_fields and required_fields:
Field Constraints
Available constraints vary by field type:Constraints on standard fields are guidance for editors, not publish-time validation. Outpost currently reads
feature_image constraints to show recommended image dimensions in the event editor; the rest are stored with the manifest for future use. With no feature_image constraint, the editor falls back to the site’s Event Settings, under Default Featured Image Size, and then to a built-in 1200 x 630px recommendation.Text/Textarea Fields
Image Fields
min_width and min_height set the smallest crop the editor will produce: a smaller selection is scaled up to meet them.
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:At publish time, Outpost enforces
required, number min/max, URL format, select options, and max_length on text and textarea fields. Other values (pattern, and image aspect_ratio, min_width, max_file_size_kb) are stored with the field but not yet enforced.Messaging States
These are the messaging state names Outpost recognizes:
All seven are editable in Event Settings, a site-wide screen. See messaging_states for what an event type’s key does.
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 swaps which post wears it. Slot tags are ordinary Ghost internal tags: ahash- prefix maps to a # internal tag.
Be exact with these two values. Both are corrected for you rather than rejected, but each records a finding, and any finding keeps Homepage Curation from activating.
default_view accepts only recent and search; any other value is replaced with recent. recent_limit falls back to 20 when it is not a positive whole number. A value above 50 is reduced to 50, with no finding.
Homepage Curation is an early Labs-status feature, found under Posts in the left menu, 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 the manifest every time a theme is uploaded or the manifest is refreshed. Each problem it finds is recorded alongside the manifest data as a finding, carrying a field path, a message, and a severity of eithererror or warning.
Activation requires a clean manifest
Homepage Curation only activates from a manifest that validated with zero findings, warnings included. One warning anywhere in the file is enough to stop the whole manifest from activating, even when it sits on a section unrelated to the curation slots you are adding. The practical consequence for a manifest that has never validated cleanly: the Homepage Curation screen never appears under Posts. There is no partially-activated state to look for. If the menu is missing, open the findings list and clear every entry in it, whatever the severity says. Once a manifest has activated, Outpost keeps that copy as the last known-good version. A later push that fails validation does not take a live feature offline: Homepage Curation keeps running on the last version that validated cleanly, and your new changes do not appear until the findings are cleared. This is the only sense in which anything is “kept” across a failed push. The same protection covers a refresh that cannot complete. If Outpost cannot reach GitHub, or the token it uses is rejected, or the request fails for any other reason, it reports the failure and leaves both the stored manifest and the last known-good copy exactly as they were.Event types behave differently. The event editor reads the most recent manifest directly, so it does drop the parts that failed validation and keep the parts that passed. An unknown field name in one event type does not hide your other event types. Homepage Curation is the feature with the all-or-nothing activation rule.
Error Categories
Every category below blocks Homepage Curation activation. The severity column is the label Outpost puts on the finding, and the effect column describes what validation does to that part of the manifest before storing it.
The list keys are
default_tags, tags, supported_fields, required_fields, custom_fields, and messaging_states.
Two rows show why severity is not a guide to consequences. An unknown manifest_version is labelled a warning and discards the entire manifest. An unknown picker key is labelled a warning, has no effect on the stored manifest at all, and still keeps Homepage Curation from activating.
Viewing Errors
Findings are visible in:- The Manifest Status column of the Themes table, in Labs → Theme Connect Wizard. Click the info icon next to the count to list them.
- The event editor, as a banner at the top of the form.
- The theme upload or refresh API response.
3 warning(s) can mean three errors. Aim for Valid, not for a low count.

