Ghost
Metered paywall
Three free reads a month before the signup wall, the way newspapers do it.
AuthorJonas Lindqvist
PublishedJun 2026
LicenseMIT
Installs149
Why it exists
Ghost's membership model is binary by design: a post is public or it is not. Publishers kept asking for metering, and upstream has good reasons to keep the core simple.
This mod counts reads per visitor with a privacy-preserving token, shows a soft counter starting with the second article, and swaps to the signup wall at the limit. Limits, exempt tags and the counter copy are all configurable.
What it does
- Configurable free reads per rolling month
- Soft counter banner before the hard wall
- Tag-based exemptions for posts that stay open
- No third-party tracking, counting stays on your instance
The spec
These acceptance criteria were written with the person who requested the mod, then locked in as its tests. The mod has to pass them on every new release train before it rides along.
- The fourth read in a month hits the wall, the third does not
- Members never see the counter or the wall
- Search crawlers get the full article via standard bot detection, no cloaking
mods/metered-paywall/tests/meter.spec.js
test("members are never metered", async () => {
const reader = await signIn(memberFixture)
for (const post of samplePosts(6)) {
const page = await reader.visit(post.url)
expect(page.paywall).toBeNull()
}
})