Ghost handles Stripe subscriptions differently than you think
The hum of the coffee grinder at 6:42 a.m., inbox already at thirty-seven unread, and somewhere in San Francisco a founder is staring at their Stripe dashboard wondering why Ghost never created a Billing customer record.
Ghost’s native membership system sidesteps Stripe Billing entirely—here’s the trade-off
Ghost manages recurring subscriptions through Stripe’s payment API, not Stripe Billing, which changes how refunds and plan changes work.

Most newsletter platforms that accept paid subscriptions lean on Stripe Billing to manage recurring charges, customer records, and plan upgrades. Ghost doesn’t. It uses Stripe’s lower-level payment intents API to charge cards directly on a schedule it controls, storing subscription state in its own database. That architectural choice means Ghost subscriptions don’t appear in your Stripe Billing dashboard the way a Memberful or Podia subscription would. You’ll see individual charges, but no subscription object to pause, modify, or export.
The upside: Ghost can move faster on features like comped subscriptions, custom trial periods, and member segmentation without waiting for Stripe’s product roadmap. The downside: if you need Stripe’s native dunning logic, detailed revenue recognition reports, or third-party tools that read Stripe Billing metadata, you’re working around Ghost’s abstraction layer instead of with it. For most operators running a single-publication membership on Ghost, the built-in tooling is enough. For multi-product businesses or those feeding subscription data into external accounting platforms, the seams start to show around month three.
The decision point isn’t whether Ghost’s system works—it does—but whether your revenue stack assumes Stripe Billing’s data model. If your accountant exports subscription reports straight from Stripe, or your analytics pipeline keys off Stripe’s webhook events, you’ll spend time reconciling Ghost’s internal logic with what Stripe surfaces. If you’re running Ghost as a standalone membership site and exporting CSV reports from Ghost’s own dashboard, the abstraction is invisible.
TACTIC
When platform analytics count the same conversion three different ways
You close a $49 annual subscription. Stripe timestamps it at 14:32 UTC. Google Analytics logs the transaction at 14:33. Your email platform credits the campaign that sent two hours earlier. None of them are wrong, but they’re measuring different moments in the funnel—and if you’re optimising for the wrong timestamp, you’ll misattribute the channel. The gap widens when you add refunds, partial payments, or multi-step checkouts. Each platform applies its own attribution window, its own definition of “conversion,” and its own delay between event and report. The fix isn’t picking one source of truth—it’s knowing which metric answers which question.
WORTH READING
Newsletter imports leave behind more than you expect
Switching from Mailchimp to ConvertKit or Substack to Beehiiv looks clean in the migration tool’s preview. Then you hit “import” and discover that subscriber tags imported as plain text, custom fields mapping broke on date formats, and your automation triggers didn’t transfer at all. Every platform’s export schema is slightly different, and import tools match on email and name first—everything else is a courtesy. If you rely on segmentation, purchase history, or lead magnets tied to custom fields, you’ll spend the week after launch rebuilding logic you thought was automated. The time to audit what transfers isn’t after you flip the DNS; it’s before you announce the move.
FROM THE ARCHIVE
When Google ignores the meta description you wrote
You spent fifteen minutes crafting a meta description that balances keyword placement and reader curiosity. Google shows a three-line excerpt pulled from paragraph four instead. It’s not a bug—Google rewrites meta descriptions roughly 63% of the time, favouring on-page content that better matches the search query. The rewrite rate climbs higher for long-tail queries, where your static 155-character summary can’t possibly anticipate every intent variation. That doesn’t mean you skip writing them; it means you write for the 37% of searches where Google honours your text, and you structure your opening paragraphs assuming Google will quote them when it doesn’t.
Know someone who would like this? Forward today’s email — every operator we reach is one closer to running an online business with a little less friction.