How Many Ghost Blogs Can't Take Payments? I Tried to Measure It.

A person standing alone in the middle of a wet Manhattan street, the buildings on both sides running up into bright fog that swallows the far endPhoto: Luke Stackpoole
On this page

Ghost has one payment integration: Stripe. If you want to charge for a membership on a Ghost site, that is the road. There is no second option in the product.

So how many Ghost sites are on the wrong side of that? I went looking for a number and found that nobody publishes one. What follows is the closest I can get with public data, including the point where the data runs out and I have to say so.

Everything sourced is linked. Everything estimated is labelled as an estimate. If you only trust the first kind, skip to the geography section, because the strongest argument here needs no estimate at all.

Figures current as of 29 August 2026. Two of the sources on this page are live feeds rather than fixed publications: Ghost’s revenue dashboard updates continuously, and HTTP Archive recrawls monthly. The numbers below are a snapshot on that date, not permanent values. If you are reading this much later and the argument matters to you, check the linked sources rather than quoting me. I will revise this page rather than let it drift, and I will say when I have.

What we know for certain

Three numbers, all from primary sources.

Ghost publishes its own finances. As a non-profit foundation, Ghost runs a live data feed on its about page. At the time of writing:

Metric Value
ARR $11,099,649
Monthly run rate $924,970
Active customers 30,579
Net churn 2.92%

Those 30,579 are paying Ghost(Pro) customers. People who already pay for hosting, which makes them the clearest available proxy for “publishers who treat this as a business.”

Ghost is bigger than Ghost(Pro). BuiltWith detects Ghost on roughly 58,500 live sites, and over 192,000 historically. Ghost is open source, so anyone can self-host it, and a lot of people do.

Subtract one from the other and you get the shape of the thing:

Ghost sites, split by hosting Ghost(Pro): 30,579 Self-hosted: ~28,000 Total detected live: ~58,500
Sources: Ghost, BuiltWith

Roughly half of all Ghost sites run outside Ghost(Pro). Nobody preconfigured anything for them.

That split is a subtraction, not a measurement. BuiltWith misses sites whose theme strips the generator tag, and not every Ghost(Pro) customer is necessarily in its live index. Treat the 28,000 as an order of magnitude rather than a headcount.

Stripe publishes its country list. Per stripe.com/global, Stripe supports businesses in 50 countries and regions, with India and Indonesia in preview. The United Nations has 193 member states.

Hold on to that last one. It is the number that does not need a model.

None of this is an argument that Stripe is bad. Where Stripe is available and you are happy with it, Ghost’s built-in integration is the shortest path and you should take it. PayGlue vs Stripe is the version of that comparison where I have to be specific rather than rhetorical.

The number I could not get

The obvious next step is to measure the overlap directly: of all Ghost sites, how many actually load Stripe? That would settle it.

HTTP Archive looked like the answer. It is a free, public dataset, it crawls millions of URLs monthly, and it detects both Ghost and Stripe. I checked its tech report.

Why I could not simply measure the overlap Ghost sites known to BuiltWith 58,500 Ghost sites in the HTTP Archive crawl, July 2026 2,952
Sources: BuiltWith, HTTP Archive

HTTP Archive crawls from the Chrome UX Report, which only includes sites with enough real Chrome traffic. It sees about 5% of the Ghost universe, and the 5% it sees are the busiest sites. Exactly the ones most likely to have Stripe set up already. The sample exists, but it is biased in the direction that would flatter my own argument, so I am not going to use it as if it were representative.

For completeness: HTTP Archive sees Stripe on 175,346 origins in the same crawl. But an overlap computed on a sample that covers 5% of Ghost sites, skewed toward the largest ones, tells you about large Ghost sites. It does not tell you about Ghost.

I could have run the query anyway and published a percentage. It would have looked authoritative. It would also have been the kind of number that gets quoted for years by people who never read the methodology, and I would have known it was shaky when I published it.

So: I don’t have that number. Nobody does, as far as I can find.

What that leaves: a model, stated openly

Without a measurement, what is left is a model. The least I can do is put every input on the table so you can disagree with any of them.

My working assumption, and it is an assumption rather than a finding: most Ghost sites that monetise use Stripe. Probably 80 to 90 percent of them. That is not humility, it is how defaults work. Stripe is the built-in option, it is well documented, and for a publication with any kind of team behind it, somebody sets it up once and nobody thinks about it again.

Which means my market is the remainder. Here is what the remainder is worth at different sizes:

Addressable sites, by share that cannot or will not use Stripe Base: ~58,500 live Ghost sites 5% 2,925 sites 10% 5,850 sites 15% 8,775 sites 20% 11,700 sites
Model, not measurement

Every row is arithmetic on an assumed percentage. The percentage is the guess, the multiplication is not. Pick the share you believe and read across. I lean toward the low end, and even the low end is several thousand publishers with no way to charge.

The part that needs no model at all

Everything above rests on an assumption. This does not.

Stripe supports 50 countries. There are 193 UN member states. Ghost is open source and runs anywhere there is a server.

Where a Ghost publisher can accept Stripe 50 countries 143 without Stripe for businesses
Sources: stripe.com/global, United Nations

Stripe lists 50 supported countries and regions, plus India and Indonesia in preview. The denominator is the 193 UN member states. If you write from one of the other 143, the built-in option is not a worse option, it is not an option.

I want to be precise about what this does and does not show, because it is the easiest number in this article to overstate.

It does not mean 74% of Ghost publishers cannot use Stripe. Ghost usage clusters heavily in countries Stripe serves. The affected share of publishers is much smaller than the affected share of countries.

What it does mean is that for a publisher in one of those 143 countries, there is no percentage to argue about. Ghost’s payment feature is simply not available to them, and no amount of documentation changes that. This group did not choose an alternative. They were never offered the default.

That is also the one part of the market I did not have to estimate. It follows from two published lists.

What I would still like to know

Three things I could not establish, listed so nobody quotes this article as if I had:

The actual Stripe attach rate on Ghost sites. It needs a crawl that covers the long tail, not just high-traffic sites. HTTP Archive cannot do it. Common Crawl might.

How many Ghost sites monetise at all. A lot of Ghost blogs are free and intend to stay free. They are not a market for anyone, and they are inside every number on this page.

Where Ghost publishers actually are. Without a country distribution, the geography argument stays qualitative. It is a real constraint for a real group, but I cannot size that group.

So if you are in that group, what do you actually do?

Numbers are only interesting if they change what you do next. If you are one of the publishers this article is about, here are the routes that exist, in the order most people find them.

I have written about each of these in more depth, and I have tried to be fair about them, including where they beat us.

Do it by hand

Somebody pays you. You open Ghost admin and add them as a member. When they stop paying, you remove them.

This is not a joke option. Below roughly twenty members it is genuinely the right answer: no moving parts, no monthly fee, nothing to monitor. The failure mode is your own memory, and at that size your memory is fine.

It breaks on the boring things rather than the dramatic ones. Refunds, expiries, somebody paying with a different email than they signed up with. If you are migrating an existing list, importing members into Ghost has the parts that quietly go wrong.

Wire it up with Zapier, Make or n8n

Take the payment provider’s webhook, transform it, call the Ghost Admin API. All three tools can do this, and if you already run one of them, this is the obvious next step.

It works. I want to be clear about that, because the temptation for a vendor is to pretend otherwise. A working Zap that grants access on payment is maybe an afternoon.

Where it gets expensive is not the setup, it is everything after. Ghost’s Admin API wants a signed JWT, so the token has to be generated per request rather than pasted once. A cancellation has to find the member again, which means matching on email and handling the case where it does not match. And when a run fails at three in the morning, the tool retries a few times, gives up, and marks it red on a dashboard nobody is looking at. The member has paid and has no access, and the first you hear about it is the email.

Deep dives, including the parts that surprised me:

If you would rather see the trade-offs in a table than in prose, they are laid out side by side on PayGlue vs Zapier, vs Make and vs n8n.

Write the integration yourself

A small service that verifies the webhook signature, maps a product to an access level, and calls the Ghost API. No monthly fee, complete control, and if you are a developer it is a satisfying weekend.

The honest accounting is not the weekend. It is that you now operate a payment-critical service. Signature verification per provider, retries that do not double-grant, a record of what happened for the day somebody disputes it, and a way to find out it is broken other than a customer telling you.

That is a fair trade for some people. It genuinely is. Just price the second year, not the first weekend.

Run our code yourself, for free

This one is awkward for me to write, so I will write it plainly: the integration described above already exists, it is open source, and you can run it without paying us anything.

PayGlue is published under BUSL 1.1, which converts to Apache 2.0 in 2030. Self-hosting is free, permanently, with no license fee and no feature gate. You get the full codebase: signature verification for all eight providers, the product-to-access mapping, the retry and idempotency handling, the event log, the paywall and buy-button embeds. Not a stripped demo, the same code we run.

The reason this exists is not generosity, it is the argument I make about trust. I tell people we never see their payment credentials in a usable form and that we do not read their content. Those claims are worth exactly nothing if you cannot check them. So the code is public, and if you would rather not take my word for any of it, you can host it and never send us a request. Why I open sourced it has the longer version, including what it broke.

The same reasoning produced the Security Manifest. Early users kept asking me variations of one question, which was really “what can you see?”, and I noticed I was answering it slightly differently each time. So I wrote the answer down once, in public: what we store, what we encrypt and with what, where the servers are, which sub-processors are involved and why, and the things we deliberately do not do. It is a page I can be held to, which was the whole idea. Between that and the source code, you should not have to trust a single sentence on this blog on the strength of my saying it.

What you take on, and I would rather you hear it from me than find out in month three: you run a service that sits between your money and your members. Updates when a provider changes its API, a database to back up, certificates, and a way to notice that webhook delivery stopped. It is meaningfully less work than building it yourself, because the hard logic is done. It is not zero work. Self-hosting PayGlue walks through the actual setup, and the time we followed our own guide and broke the install is a fair sample of the friction.

GitHub - PayGlue/PayGlue-OS
PayGlue connects Ghost CMS to any payment provider. Source available under the Business Source License 1.1.
GitHubPayGlue

If you are technical, like owning your stack, and are choosing between writing your own and paying somebody, this is the option most people miss.

Move the membership off Ghost entirely

Patreon, Ko-fi and Substack all handle memberships themselves. You could let them own the paywall and treat Ghost as the free part of your site.

The reason people do not like this: your writing is on your site, and the reader has to go somewhere else to become a member, then come back. Two logins, two brands, and the relationship belongs to the platform rather than to you. Some publishers are completely happy with that trade. If you are, take it, it is less work than anything else on this list.

Ghost’s own docs and the general overview of taking payments without Stripe cover the shape of this. If you are weighing hosted Ghost against the alternatives more broadly, PayGlue vs Ghost(Pro) sets out where the line actually falls.

If the problem is your country specifically

That is a different problem from preferring another provider, and it has its own answer. Merchant-of-record providers like Paddle and Lemon Squeezy sell on your behalf, which changes where the money is legally received. Stripe isn’t available in your country, your Ghost memberships still can be goes through it properly.

And then there is us

You are on the PayGlue blog, so you can see this coming. Pretending the article was neutral all the way down would fool nobody.

Every option above is a real option, and for a lot of people one of them is the right one. If you have twenty members, do it by hand. If you already live in n8n, wire it up there and enjoy yourself. I am not going to tell you those are wrong, because they are not.

What PayGlue sells is the part after that. The webhook signature checking for eight providers, the retries that do not grant twice, the record of which event caused which change, the alert when a delivery fails. Not because that is clever, but because it is unrewarding to build and worse to maintain, and it only matters on the day it breaks.

The pitch is small: if you do not want to own that maintenance, that is what you are paying us for. If you do want to own it, the articles above are written to help you do it well, and they are not paywalled.

So what is the number

There isn’t one, and I would rather say that than invent it.

What the public data supports is this. Ghost is a business with 30,579 paying customers and $11.1M in ARR, on a platform with something like 58,500 live sites, roughly half of which are self-hosted. It offers exactly one way to take money, from a provider that serves 50 of 193 countries.

Whatever the exact share is, it is not zero, and the people in it have no built-in path at all. They have workarounds, and some of the workarounds are good.

That gap is what I built PayGlue for. I would like to tell you precisely how wide it is. For now I can only show you both edges and be honest about the middle.

Photo by Luke Stackpoole on Unsplash