Skip to content

Ghost Membership System — Tiers, Pricing and Stripe Integration

DodaTech Updated 2026-06-28 10 min read

In this tutorial, you'll learn how to set up the Ghost membership system — creating membership tiers with different pricing, integrating Stripe for payment processing, configuring subscription plans, and managing the member portal settings.

What You'll Learn

  • How Ghost's membership system works
  • Creating membership tiers: Free, Monthly, Yearly
  • Setting up Stripe integration for payment processing
  • Configuring pricing and subscription amounts
  • The Ghost Portal: member signup, login, and account management
  • Testing payments in Stripe test mode
  • Managing members and subscriptions
  • Portal customization: colors, logos, and messaging
  • Understanding Ghost's take on membership revenue

Why It Matters

The membership system is Ghost's standout feature. Built into the core, it transforms a simple blog into a revenue-generating publication. WordPress requires multiple plugins (WooCommerce, MemberPress, Paid Memberships Pro) to achieve what Ghost does out of the box. For creators who want to monetize their content without the complexity of managing plugins, Ghost's membership system is the most compelling reason to choose the platform.

Real-World Use

A technology news site launches a paid membership program. They set up three tiers: Free (weekly newsletter, limited articles), Monthly ($9/month, unlimited articles, ad-free), and Yearly ($90/year, everything plus exclusive analysis). They integrate Stripe, configure the Portal with their brand colors, and start accepting payments within an hour. Members sign up through the Portal, manage their subscriptions, and upgrade/downgrade without contacting support.

Learning Path

flowchart LR
  A["Theme Customization"] --> B["Membership System
You are here"]:::current B --> C["Content Gating"] C --> D["Newsletter Setup"] classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px

How Ghost Memberships Work

Ghost's membership system is built into the core. It operates on a simple model:

  1. Tiers: Groups that define access levels (Free, Monthly, Yearly)
  2. Portal: The front-end interface where members sign up, log in, and manage their accounts
  3. Stripe: The payment processor that handles subscriptions and billing
  4. Member access: Per-post visibility settings that enforce which tier can view which content

The Flow

flowchart LR
  A["Reader visits site"] --> B{"Sees gated content?"}
  B -->|"Yes"| C["Signup prompt appears"]
  C --> D{"Choose tier?"}
  D -->|"Free"| E["Free member"]
  D -->|"Paid"| F["Stripe payment"]
  F --> G["Paid member"]
  E --> H["Access free content"]
  G --> I["Access paid content"]

  style F fill:#4ade80,color:#0f172a
  style I fill:#38bdf8,color:#0f172a

Setting Up Membership Tiers

Default Tiers

Ghost creates one default tier during installation. You can modify it and add more.

Creating Tiers

Go to Settings > Members > Tiers.

Field Description
Name Display name (e.g., "Monthly Premium")
Description Shown in the Portal
Price Subscription amount (set in your currency)
Billing period Monthly or Yearly
Currency The currency for pricing
Benefits List of perks shown in the Portal
Welcome page Optional redirect after signup

Example Tier Structure

Free Tier:
  Price: $0
  Access: Public posts, weekly newsletter
  Benefits:
    - Weekly email newsletter
    - Limited free articles
    - Community access

Monthly Tier:
  Price: $9/month
  Access: All content including paid posts
  Benefits:
    - Unlimited access to all articles
    - Ad-free reading experience
    - Weekly newsletter
    - Member-only community
    - Exclusive analysis

Yearly Tier:
  Price: $90/year (2 months free)
  Access: Same as monthly
  Benefits:
    - Same as monthly
    - 2 months free vs monthly billing
    - Annual subscriber badge

Best Practices for Tiers

  • Keep it simple: 2-3 tiers maximum. Too many options overwhelm readers.
  • Price annually: Offer a yearly discount (typically 15-20% off equivalent monthly). This improves revenue stability.
  • Differentiate clearly: Each tier should have clear, distinct benefits. If the difference is unclear, readers choose the cheapest.
  • Highlight the best value: Mark your recommended tier with a "Most Popular" or "Best Value" badge.

Stripe Integration

Stripe handles all payment processing. You need a Stripe account (free to create).

Step 1: Create a Stripe Account

Go to stripe.com and create an account. You will be in test mode initially.

Step 2: Get API Keys

In your Stripe Dashboard:

  1. Go to Developers > API keys.
  2. Copy the Publishable key (starts with pk_test_ or pk_live_).
  3. Copy the Secret key (starts with sk_test_ or sk_live_).

Step 3: Connect Ghost to Stripe

In Ghost admin:

  1. Go to Settings > Members > Stripe.
  2. Click "Connect to Stripe."
  3. Enter your Stripe publishable key and secret key.
  4. Alternatively, use the "Connect with Stripe" button for OAuth (simpler).

Step 4: Configure Webhooks

Ghost automatically sets up webhooks when you connect Stripe. These webhooks listen for:

  • checkout.session.completed — A member completed payment
  • customer.subscription.updated — A subscription changed
  • customer.subscription.deleted — A subscription was canceled
  • invoice.payment_succeeded — A recurring payment succeeded
  • invoice.payment_failed — A payment failed

If you ever need to set up webhooks manually, the URL is:

https://yoursite.com/members/webhooks/stripe/

Step 5: Test in Stripe Test Mode

  1. In Stripe Dashboard, ensure you are in "Test mode" (toggle at the top).
  2. Use Stripe test card numbers:
    • Success: 4242 4242 4242 4242
    • Decline: 4000 0000 0000 0002
    • Insufficient funds: 4000 0000 0000 9995
  3. Create a test subscription in Ghost.
  4. Verify the member appears in Ghost admin.

Step 6: Go Live

When ready for production:

  1. In Stripe Dashboard, toggle from "Test mode" to "Live mode."
  2. Copy the live API keys.
  3. Update the keys in Ghost settings.
  4. Test with a real card.

Configuring the Portal

The Portal is the member-facing interface for signup, login, and account management. It appears as a modal on your site.

Portal Settings

In Settings > Members > Portal:

Portal Settings:
  Signup: Enabled
  Signup redirect: (optional URL after signup)
  Login: Enabled
  Show tiers: All or select tiers
  Brand color: #2563EB (matches your site accent)
  Icon: Optional Portal icon
  Logo: Optional Portal logo image
  Support email: support@yoursite.com

Portal Features

  • Signup form: Email + name. Stripe payment if paid tier selected.
  • Login: Email + magic link (no password needed).
  • Account management: View tier, update profile, cancel/subscribe.
  • Payment history: View invoices and payment history.

Ghost uses magic link authentication for members. When a member logs in:

  1. They enter their email address.
  2. Ghost sends a magic link to that email.
  3. Clicking the link logs them in (no password).

This means you need email configured for members to log in. If email is not configured, members cannot receive magic links.

Portal Customization

<!-- The Portal is triggered by this button -->
<button class="portal-button" data-portal="signup">Subscribe</button>

<!-- Custom signup button for specific tier -->
<button data-portal="signup/monthly">Join Monthly</button>

<!-- Portal account page -->
<a data-portal="account">My Account</a>

<!-- Portal signout -->
<a data-portal="signout">Sign out</a>

Managing Members and Subscriptions

In the admin sidebar, click "Members" to see all members.

Member List

The member list shows:

  • Name and email
  • Tier (Free, Monthly, Yearly, Comped, Canceled)
  • Status (Active, Expired, Canceled)
  • Join date
  • Last seen date

Member Actions

Click a member to:

  • View full profile
  • See subscription history
  • View email engagement
  • Add labels for segmentation
  • Add internal notes
  • Cancel or change subscription
  • Comp the member (give free paid access)
  • Delete the member

Comping Members

Comped members get paid-tier access without paying. Use this for:

  • Founding members (legacy access)
  • Beta testers
  • Gift subscriptions
  • Internal team accounts

To comp a member: click their profile, then "Add complimentary subscription."

Ghost's Revenue Model

Ghost does not take a cut of your membership revenue. Stripe charges standard processing fees (2.9% + $0.30 per Transaction). Ghost(Pro) hosting includes the membership features in your hosting plan.

Common Mistakes

  1. Not testing in Stripe test mode first: Configuring Stripe in live mode and testing with real cards causes unnecessary charges and refunds. Always test with Stripe test mode and test card numbers first.

  2. Forgetting to configure email: Ghost's magic link authentication requires email delivery. If you have not configured email transport, members cannot log in. Configure Mailgun or SMTP before launching memberships.

  3. Creating too many tiers: Offering 5+ tiers confuses readers. They spend too long deciding and may choose nothing. 2-3 tiers (Free, Monthly, Yearly) is the proven sweet spot.

  4. Not setting up webhooks correctly: If Stripe webhooks are not configured, Ghost does not receive payment notifications. Members pay but do not get access. Check webhooks in Stripe Dashboard > Developers > Webhooks.

  5. Gating all content behind paid tiers: Readers need to see some value before paying. If every article is behind a paywall, new visitors leave immediately. Keep 30-50% of content free to attract readers.

Practice Questions

  1. What is the role of Stripe in Ghost's membership system? Answer: Stripe handles all payment processing — subscription creation, recurring billing, payment failures, and invoice generation. Ghost communicates with Stripe via API keys and webhooks to manage the payment lifecycle.

  2. How does the Ghost Portal authenticate members? Answer: The Portal uses magic link authentication. Members enter their email, Ghost sends a unique login link, and clicking the link authenticates them. No password is required. This means email configuration is essential for memberships to work.

  3. What is a comped member in Ghost? Answer: A comped (complimentary) member gets paid-tier access without paying. This is used for founding members, gift subscriptions, beta testers, and internal accounts. The site owner absorbs the cost instead of charging the member.

  4. Challenge: Set up a complete membership system on a local Ghost installation. Create three tiers, configure Stripe in test mode, create a test subscription using Stripe test card 4242 4242 4242 4242, verify the member appears in Ghost admin, test the Portal signup flow, and create a test paid post that only paid members can access.

FAQ

Does Ghost take a cut of membership revenue?

No. Ghost does not take any percentage of your membership revenue. Stripe charges standard payment processing fees (2.9% + $0.30 per successful transaction). You keep the rest.

Can I offer a free trial for paid tiers?

Ghost does not have built-in free trial support. You can manually comp members for a trial period, but there is no automatic free trial expiration. Consider offering free content as a 'trial' of your writing quality.

What currencies does Ghost support for membership pricing?

Ghost supports any currency that Stripe supports. Set your currency in the Stripe Dashboard and configure pricing in Ghost tiers. Common currencies include USD, EUR, GBP, CAD, and AUD.

Can members upgrade or downgrade their tier?

Yes. Members can change their subscription tier through the Portal. Ghost handles the billing transition — upgrading prorates the charge, downgrading takes effect at the next billing period.

How does Ghost handle failed payments?

When a payment fails, Stripe retries automatically based on your Stripe retry settings (default: 3 retries over 3 days). Ghost marks the member as 'past due' during this period. After all retries fail, the subscription is canceled.

Mini Project

Your task: Set up a complete membership site from scratch.

  1. Configure Stripe in test mode and connect to Ghost.
  2. Create three tiers: Free, Monthly ($9), Yearly ($90).
  3. Customize the Portal with your brand color and logo.
  4. Create a test post with "Paid members only" access.
  5. Test the signup flow using Stripe test card 4242 4242 4242 4242.
  6. Verify the member appears in your member list with the correct tier.
  7. Test that paid content is visible to the test member but not to a logged-out Visitor.
  8. Document the entire setup Process as a checklist.

This exercise gives you a working membership site with real payment processing.

What's Next

Now that memberships are set up, learn how to gate content behind them:

Continue to Lesson 21: Content Gating — Access levels, portal, and paid membership content strategies.

Related lessons:

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro