Skip to main content
Ghost is Outpost’s primary integration. Your Ghost site is the source of truth for members, subscriptions, tiers, and content. Outpost connects to Ghost to read that data and layer on growth, retention, and automation tools.
Ghost integration settings with Content API key, Admin API key, API URL, and webhook URL fields
For initial setup instructions, see Connecting Ghost.

How it works

  1. You connect Outpost to Ghost using Content API and Admin API keys
  2. Outpost sets up real-time notifications on your Ghost site to receive member and post events
  3. When a member is created, updated, or deleted in Ghost, Outpost updates its records automatically
  4. When Outpost applies or removes a label, it updates the member in Ghost to match
  5. Tiers, posts, tags, and newsletter segments are read from Ghost to drive Outpost’s automation and targeting

What syncs

DataDirectionWhen
Members (create, update, delete)Ghost → OutpostReal-time
LabelsOutpost → GhostOn change
Posts and tagsGhost → OutpostReal-time and on-demand
Newsletter segmentsGhost → OutpostOn-demand
TiersGhost → OutpostOn-demand
Ghost is the source of truth for members, subscriptions, and tiers. Stripe billing flows directly between Stripe and Ghost. Outpost reads that data to drive automation, segmentation, and conversion tools.
Outpost does not create or modify Ghost tiers, subscriptions, or posts. It reads this data and writes only labels back to Ghost.

Connection settings

The Ghost connection is configured under Core Connections in the left navigation. The settings include:
FieldDescription
Content API KeyRead-only key for accessing published content (posts, tags, tiers). Found in Ghost Admin → Integrations → Custom Integration.
Admin API KeyRead/write key for member and label operations. Found in the same Ghost custom integration.
API URLYour Ghost site’s URL (e.g., https://yoursite.com).
Webhook URLRead-only URL that Outpost provides. This is where Ghost sends webhook notifications.
External webhook for new membersOptional URL to receive notifications when new members are added. Useful for triggering external workflows.

Member sync

Ghost → Outpost

When a member event occurs in Ghost, Outpost automatically:
  1. Creates or updates the matching member record in Outpost
  2. Syncs subscription status, tier, and payment information
  3. Applies any matching auto-subscribe rules for newsletters
  4. Updates segments and triggers any label-based automation flows
  5. Records the event in the Activity Log

Outpost → Ghost

When Outpost applies or removes a label (via automation, bulk action, or manual change):
  1. Outpost updates the member’s labels in Ghost to match
  2. Ghost reflects the change in its member portal
  3. Any Ghost-side automations tied to that label are triggered

Tiers

Tiers are created and managed in Ghost. Outpost reads them so they’re available for:

What Outpost monitors

Outpost automatically listens for the following events from Ghost when you connect:
EventPurpose
Member addedNew member created in Ghost
Member updatedMember changed (email, name, subscription, labels)
Member deletedMember removed from Ghost
Post publishedNew post published (for analytics and content tracking)
Post updatedPost updated (for content sync)

Automatic sync checks

Beyond real-time updates, Outpost rechecks your member counts and labels against Ghost every few hours to catch anything a live update might have missed. Renamed or deleted labels are corrected automatically in the background. For member counts, Outpost allows for a small amount of normal variation — under roughly half a percent of your total — and resyncs automatically once a gap grows past that, so your data stays accurate without any action from you. If the difference is large, Outpost deliberately holds off on fixing it all at once, so it doesn’t overwhelm your Ghost site with requests. The mismatch is flagged for the Outpost team to resync safely instead. You don’t need to do anything — but if you’ve just made a big change in Ghost (such as a bulk import) and your counts look off, you can also resync manually.

Manual resync

If sync gets out of state, use the resync options in Core Connections → Ghost:
  • Sync members — Re-import all Ghost members into Outpost, updating existing records and creating new ones
  • Pull members from Ghost — Full re-import of the Ghost member list
Manual resync is useful after initial setup, after restoring a Ghost backup, or if you suspect members are out of sync. For large sites, the sync runs in the background and may take several minutes.

Ghost API version

Outpost uses the Ghost Admin API v5. Your Ghost site must be running Ghost 5.x or later.

Large sites

For sites with large member counts, Outpost automatically manages sync performance:
  • Bulk sync operations are spread out over time
  • Member updates are processed in batches
  • Failed requests are retried automatically

Stripe Integration

Stripe works alongside Ghost for subscription billing.

Activity Log

View Ghost sync events and errors.

Spam Filtering

Filter spam members synced from Ghost.

Members

Manage the member records synced from Ghost.

FAQ

Yes. Go to Ghost Admin → Settings → Integrations → Add Custom Integration. This gives you the Content API key and Admin API key that Outpost needs.
Outpost stops receiving member updates. Existing member data in Outpost is preserved, but it will become stale as Ghost members change. Labels applied by Outpost will remain in Ghost.
Check the Activity Log for sync errors. Common causes include incorrect API keys or connection issues on high-volume sites. Use the manual resync option to re-import all members.
A small difference is normal and expected — here’s why:
  • Sync timing and tolerance. Members sync from Ghost in real time, but Outpost also runs a full count check against Ghost every few hours. It tolerates a tiny gap by design — under about half a percent of your total, and always at least a couple of members — so it isn’t constantly chasing one or two people who just signed up, were removed, or changed tiers. Once a gap crosses that point, Outpost resyncs on its own. A very large gap (say, right after a bulk import) is flagged for the Outpost team to resync safely instead.
  • Marketing campaigns leave out opted-out members. When you build an email campaign and mark it as a marketing email, Outpost automatically excludes anyone who has opted out of marketing — members carrying the Marketing_OptOut label — when it works out who will receive it. That makes a campaign’s audience smaller than your overall member count, even with the same tier or segment selected. New campaigns are treated as marketing by default, and you can see or adjust the excluded labels in the campaign’s audience settings.
If the gap is large or doesn’t close within a few hours, run Sync members under Core Connections → Ghost, and check the Activity Log for sync errors.
Outpost does not create new members in Ghost. Members are created in Ghost (via signup forms, Stripe checkout, or import) and then synced to Outpost automatically.
Outpost reads Ghost’s newsletter segments and member newsletter preferences. It uses this data for targeting but does not send emails through Ghost — all emails are sent via Outpost’s built-in Mailgun infrastructure. No separate Mailgun setup is required.