Skip to main content
The Outpost manifest system allows Ghost themes to declare what types of events they support, what fields each type needs, and what custom data they want beyond the standard set. This creates a seamless integration between your theme’s design and Outpost’s event management system.

What the Manifest Does

When you add an outpost-manifest.yaml file to your Ghost theme:
  1. Event types appear in Outpost — Publishers see a dropdown to select the event type when creating events
  2. Fields adapt per type — Only relevant fields show for each event type
  3. Custom fields are rendered — Theme-specific fields appear dynamically in the editor
  4. Validation is enforced — Required fields and constraints are checked before publishing
  5. Data flows to Ghost — Custom field values are injected into the Ghost post for your theme to read

Quick Start

Create a file named outpost-manifest.yaml in your theme’s root directory (alongside package.json):
manifest_version: 1

events:
  default_tags:
    - "event"

  types:
    webinar:
      label: "Webinar"
      post_template: "custom-webinar"

      supported_fields:
        - name
        - description
        - event_date
        - event_time_start
        - event_time_end
        - event_time_zone
        - platform_url
        - feature_image
        - access

      required_fields:
        - name
        - event_date
        - platform_url
This minimal manifest:
  • Defines a single event type called “Webinar”
  • Uses the custom-webinar Ghost template for event posts
  • Shows only the fields relevant to webinars
  • Requires name, date, and platform URL before publishing
  • Adds an “event” tag to all event posts

Adding Custom Fields

Custom fields let you collect theme-specific data that isn’t part of the standard event fields. Here’s an example adding speaker information to a webinar:
manifest_version: 1

events:
  types:
    webinar:
      label: "Webinar"
      post_template: "custom-webinar"

      supported_fields:
        - name
        - description
        - event_date
        - event_time_start
        - event_time_end
        - event_time_zone
        - platform_url
        - feature_image
        - access

      required_fields:
        - name
        - event_date

      custom_fields:
        - key: speaker_name
          label: "Speaker Name"
          type: text
          required: true
          help_text: "Full name of the presenter"

        - key: speaker_bio
          label: "Speaker Bio"
          type: textarea
          required: false
          max_length: 500

        - key: session_type
          label: "Session Type"
          type: select
          required: true
          options:
            - Live Presentation
            - Q&A Session
            - Workshop
            - Panel Discussion
Custom field values are stored in the event settings and injected into the Ghost post’s code injection, where your theme can read them.

Multiple Event Types

Define different event types with their own fields and requirements. You can mark one type as default: true to have it preselected when publishers create new events:
manifest_version: 1

events:
  default_tags:
    - "event"

  types:
    webinar:
      default: true  # Preselected when creating events
      label: "Webinar"
      post_template: "custom-webinar"
      tags:
        - "webinar"
        - "online"
      supported_fields:
        - name
        - description
        - event_date
        - event_time_start
        - event_time_end
        - event_time_zone
        - platform_url
        - access
      required_fields:
        - name
        - event_date
        - platform_url

    in_person:
      label: "In-Person Event"
      post_template: "custom-in-person"
      tags:
        - "in-person"
      supported_fields:
        - name
        - description
        - event_date
        - event_time_start
        - event_time_end
        - event_time_zone
        - location
        - max_attendees
        - feature_image
        - access
      required_fields:
        - name
        - event_date
        - location
        - feature_image
      custom_fields:
        - key: venue_address
          label: "Venue Address"
          type: textarea
          required: true
        - key: parking_info
          label: "Parking Information"
          type: text
          required: false
When publishers create an event, they select the type first, and the form adapts to show only the relevant fields.

Testing Your Manifest

After adding the manifest to your theme:
  1. Upload the theme to Ghost using the Outpost theme setup wizard
  2. Check for errors — Look for manifest warnings in the theme settings table
  3. Create a test event — The type selector should appear with your defined types
  4. Verify fields — Only the fields you specified should be visible
  5. Test publishing — Required field validation should block publishing if fields are empty

Viewing Manifest Errors

If your manifest has issues, Outpost will:
  • Show a warning count in the theme settings table
  • Display a banner in the event editor
  • Log details in the Outpost activity log
Click the info icon next to the warning count to see specific errors. Common issues include:
  • Missing post_template on an event type
  • Unknown field names in supported_fields
  • Required fields not included in supported_fields
  • Custom field key colliding with a standard field name
Manifest errors don’t break your theme — Outpost strips invalid parts and uses what’s valid. But you should fix errors for the best experience.

Refreshing the Manifest

When you update your manifest file:
  1. From GitHub — Click “Refresh Manifest from GitHub” in the theme settings if your theme is connected to a repository
  2. Manual upload — Click “Upload Manifest” and select your updated outpost-manifest.yaml file
  3. Re-upload theme — Upload the full theme ZIP through the setup wizard
Changes take effect immediately after refresh. Existing events keep their data; the UI just adapts to the new field configuration.

Next Steps