Monetizing a Ghost Blog with Members and Stripe: What the Integration Actually Does
Ghost's native Members feature plus a Stripe connection gives you paid subscriptions without plugins or custom checkout code. Here's how the pieces fit, a $5 tier walkthrough, and the Stripe-only trade-off.
19 Jun 2026, 07:16 UTC

You want readers to pay for your writing, but you don't want to bolt on a third-party paywall plugin, maintain custom checkout code, or send subscribers off to an external platform. Ghost's answer is its native Members feature: a subscription system built into the CMS that, once connected to a Stripe account, handles sign-up, checkout, access control, and email delivery without leaving the platform.
The takeaway up front: if Stripe works in your country and you're running Ghost 4.0 or later, you can go from zero to a working paid tier in an afternoon. The trade-off is that Stripe is the only supported payment gateway, so this decision is partly a bet on Stripe.
What "Members" actually is
Members is Ghost's built-in audience and subscription layer. When enabled, your publication gains sign-up and sign-in flows (magic-link email authentication, so there are no passwords to manage), a members database in the admin area, and the ability to mark posts as public, members-only, or paid-members-only. Ghost also sends email newsletters to members directly, which means the subscription, the content gate, and the delivery channel live in one place.
Paid subscriptions are handled through Stripe. Ghost doesn't process card payments itself; it creates Stripe customers, products, and subscriptions on your behalf and listens for webhook events to keep member status in sync. Your Stripe account remains the source of truth for money movement.
Setting it up
In Ghost Admin, the flow is roughly:
- Go to Settings → Membership and enable Members, choosing who can subscribe (anyone, or invite-only).
- Under Settings → Membership → Tiers, create at least one paid tier with a monthly and/or yearly price. Ghost will create matching products and prices in Stripe automatically.
- Under the Stripe connection section, click Connect with Stripe. Ghost generates a secure connect link; paste in your Stripe secret key (or use the guided connection) to establish the link and register the webhooks Stripe needs.
- Confirm the status shows Connected, then make sure your theme exposes the sign-up flow. The official themes ship with a Portal integration — Ghost's embeddable sign-up/checkout UI — so usually there's nothing to code.
One version note: this assumes Ghost 4.0 or later, where the Members feature and its API are stable. Earlier versions had beta-era behavior and different settings layouts, so check your version before following any guide, including this one.
A worked example: a $5 "Premium" tier
Concretely, say you create a tier called Premium at $5/month with an optional $50/year price. After connecting Stripe, do an end-to-end test before announcing anything:
- Open your site's frontend in a private browser window and sign up as a new member with a real email address you control.
- Click the upgrade link in the Portal UI and check out using Stripe's test card
4242 4242 4242 4242, any future expiry, and any CVC. This requires your Stripe connection to be in test mode — do not run this against live keys unless you're comfortable with a real charge. - Back in Ghost Admin, check Members → All members: the test member should appear with an active Premium subscription.
- In the Stripe Dashboard, check Customers and Subscriptions: you should see a matching customer and an active subscription for the $5 price.
- Publish a post with access set to Paid members only and verify the test member can read it while an anonymous visitor sees the paywall prompt.
If all five checks pass, the loop — sign-up, payment, access control — is working. If step 3 or 4 fails, the usual culprit is webhook delivery: Ghost needs to receive Stripe events to update member status, which is a common failure point on self-hosted instances behind misconfigured proxies or firewalls. Check that your Ghost URL is set correctly and reachable from the internet.
The trade-offs worth knowing
The biggest limitation is simple: Stripe is the only supported gateway. If Stripe doesn't operate in your country, or you need PayPal, Apple Pay as a standalone option, or a regional processor, there's no official alternative — you'd be looking at custom development against Ghost's API or a different platform entirely. Stripe also takes its own processing fees on top of any Ghost(Pro) plan costs, so model your net revenue, not the sticker price.
Other constraints: the checkout and account UI runs through Portal, which is customizable in wording and branding but not a blank canvas; membership analytics in Ghost are useful but basic compared to a dedicated subscription-analytics tool; and self-hosters own the operational burden of keeping webhooks, email delivery, and Stripe keys healthy.
Where to go from here
The practical path: enable Members, connect Stripe in test mode, create one paid tier, and run the five-step verification above. Then flip to live keys, publish one paid-only post so the tier has immediate value, and announce it to your existing free subscribers through Ghost's built-in newsletter. After that, watch two numbers in the Members dashboard — conversion from free to paid, and churn — and let those, not guesswork, drive your pricing experiments. Start with one tier; you can always add a higher one once you know what paying readers actually want.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.