Advanced

Membership CTA

A full-bleed member signup band rendered above the site footer on every page. Editorial copy lives on a Ghost page; the pricing column adapts automatically to whether paid plans are connected; delete the page to hide the band site-wide.

The Membership CTA is a full-bleed dark section that sits above the site footer on every page — homepage, posts, archives, tag pages, the bookmarks page. It carries editorial copy on the left and an adaptive price + signup form on the right. Designed to be the recurring conversion moment across the site, editable without touching template code.

Membership CTA band rendered above the footer


How the band is composed

The band has two columns:

  • Left column — eyebrow stamp, optional issue line, headline (with one accent phrase wrapped in <mark>), and body paragraphs. All sourced from a Ghost page with slug membership-cta.
  • Right column — an adaptive price block plus the signup form. The price block switches automatically between a Paid-plan band (when paid plans are connected) and a Free-plan band (when they aren't). Both variants share the same left-column editorial copy and the same signup form.

You only ever author the left column. The right column fills itself from your Ghost membership setup. If you don't author the page, the band doesn't render at all — see Hiding the band below.


Editorial copy lives on a Ghost page

The four left-column slots are mapped one-to-one to fields on a Ghost page (not a post) with the slug membership-cta.

Page fieldSlot in the CTANotes
custom_excerptEyebrow stamp (top-left)e.g. Membership · Meridian
meta_descriptionIssue line (top-right of left column)Optional — e.g. Independent since 2003
meta_titleTrial badge override (right column eyebrow)Optional. When set, replaces the auto-derived trial badge. See Trial wording inside the Paid-plan tab below.
html (body)Headline + bodyOne <h2> followed by one or more <p>

Membership CTA Page - Editor

Membership CTA page in the Ghost editor

Membership CTA Page - Meta data

Membership CTA page meta fields panel

Create the page

In Ghost Admin, go to Pages → New page. Title it whatever you like — the title isn't rendered.

Set the slug to membership-cta

In Page settings, set the Page URL to membership-cta. The page does not need to be linked from your nav; it's a content source, not a destination.

Fill the meta fields

In Page settings:

  • Excerpt (which becomes custom_excerpt) → your eyebrow.
  • Meta description → your optional issue line.
  • Meta title → your trial badge override. Leave it blank to let the band auto-derive the badge from your tier's trial length.

Author the body in the editor

Type the headline as a normal Heading 2 in the Ghost editor, then write the body paragraphs underneath. Use the highlight action on the few words you want as the accent phrase — see the next section for the shortcut.

Publish

Click Publish. The band will pick up your copy on the next page render across the site.


Highlighting a phrase in the headline

The accent phrase — the few words you want italicized and tinted with your accent colour inside the otherwise plain headline — is created with Ghost's native highlight action, which emits a <mark> tag.

Ghost editor with the accent phrase highlighted in the headline

How to highlight in the Ghost editor

Type the headline as a normal Heading 2.

Select the words you want as the accent phrase.

Apply highlight:

PlatformShortcut
macOS + Option + H
Windows / LinuxCtrl + Alt + H

Headline with accent phrase highlighted in the Ghost editor

The selection gains Ghost's default yellow highlight in the editor; Meridian's CSS swaps that for italic + accent-colour text on the rendered page.

You can highlight multiple ranges in the same headline if needed, though one accent phrase usually reads better than two.

Highlight is also in the toolbar

The same action lives in the editor's floating text-format toolbar — select your phrase and click the highlighter icon. The keyboard shortcut is just faster once you know it.


Which variant your readers see

The right column has two automatic variants. Meridian picks one for you based on whether paid plans are purchasable on your site (memberships enabled and Stripe connected and at least one active public paid tier exists). You don't toggle this — it follows your Ghost settings.

When it appears

The Paid-plan band renders when paid plans are purchasable — memberships enabled, Stripe connected, and at least one active public paid tier with a monthly price.

Paid-plan band with a trial badge and monthly / yearly pricing

What it shows

  • A trial badge at the top of the column (see Trial wording below).
  • The cheapest active public paid tier's monthly price as the headline number. If you have multiple paid tiers, the lowest monthly price wins.
  • Below it, the yearly equivalent (Billed $X yearly) and a "save N%" line computed client-side from monthly_price × 12 versus yearly_price. If the yearly price doesn't actually save money, the line self-removes — no awkward "save 0%".
  • The signup form (magic-link email + submit) and a fine-print line including a Compare plans link to Ghost Portal.

You don't need to touch any theme setting for pricing. Open Settings → Membership → Tiers in Ghost Admin and the band reflects whatever you set up there.

Trial wording

The trial badge text follows this precedence:

  1. If the membership-cta page's Meta title field is set, the badge shows that text verbatim — your custom phrase, exactly as typed.
  2. Otherwise, if your cheapest paid tier has trial days configured, the badge shows the localised string with the day count substituted: Start your {days}-day trial. The {days} placeholder is filled at render time from the tier's trial_days value, so the wording updates the moment you change the tier in Ghost. The locale key is "Start your {days}-day trial" in locales/en.json — translators substitute the placeholder, not the number.
  3. Otherwise, the badge falls back to a neutral Membership eyebrow.

The Meta-title override is useful when your trial wording differs from a simple day count — for example, "Free for the first month" or a campaign-specific phrase. Leave it blank to let the badge stay in sync with your tier automatically.

When it appears

The Free-plan band renders whenever paid plans aren't purchasable on your site — Stripe isn't connected yet, you haven't created a public paid tier, or your paid tier has no monthly price. It also covers the in-between state during site setup when memberships are on but Stripe configuration is still pending.

Free-plan band — invitation to sign up free

What it shows

  • A Free membership eyebrow at the top of the column.
  • A large Free / forever price block, mirroring the layout of the paid variant so the right column never feels collapsed.
  • The same signup form and the start free with select stories fine-print link.
  • The left column carries on exactly as authored — your headline, body, eyebrow, and accent phrase all render unchanged.

This replaces a pre-1.6.0 quirk

Before v1.6.0, the band would show the paid price column even before Stripe was configured, leaving a "$0 / month" or stale-looking price stamp at launch. The Free-plan band is the explicit, designed state for that period — and for sites that intentionally don't sell paid memberships.

The variant is decided server-side per render — there's no flash between states, and the signup form works the same way in both.


Hiding the band

The band hides itself entirely under any of these conditions:

  • The membership-cta page is missing or unpublished — this is the admin-controlled opt-out. Delete the page (or set it back to draft) and the band disappears from every page on the site immediately. No theme setting required.
  • Memberships disabled — if you've turned off memberships site-wide (Ghost Admin → Settings → Membership → "Subscription access" set to Nobody), the band doesn't render.
  • Viewer is a paid member — paying members never see the band. They've already converted.

In every case the footer flows together as if the band had never been authored.

Free members still see it

Free members and logged-out visitors both see the Membership CTA. Only paying members get the band suppressed, individually.

Deleting is the opt-out

There's no theme toggle for the Membership CTA. The Ghost page IS the toggle — delete or unpublish membership-cta to hide the band, re-publish to bring it back.


When to use this vs. the post-page CTA

Two member CTAs ship in Meridian:

  • Membership CTA (this page) — full-bleed band above the footer on every page. Heavy, editorial, conversion-focused.
  • Post-page member CTA — a signup invitation at the end of stories a logged-out reader can open in full. On members-only stories the paywall shows the prompt instead, so the two never stack. Copy is set via theme settings, not a Ghost page. See Site wide settings → Member CTA headline / body.

They're complementary. The footer band is the editorial-tone pitch readers see on every page they land on; the post-page CTA is the reader-just-finished-an-article moment.