Skip to content
osmods
Ghost

Metered paywall

Three free reads a month before the signup wall, the way newspapers do it.

View upstream
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()
  }
})