Pay-per-read on Ghost

Share

Paperwall just had a big unlock: a pay-per-read integration is now live on Ghost!

Poking around the Ghost forum, I could see there had been earlier attempts at pay-per-read, but none of them got much traction. The approach was fairly rudimentary: pay X dollars for this post (sometimes as much as $5!), settle the transaction on the spot, and negotiate pricing with the provider, blog by blog.

Paperwall puts a fresh spin on the model by acting as a wallet. You register once, add your credit card, and you're good to go. From there readers can unlock articles across any registered publication, and are only charged monthly for the reads they’ve accumulated. The goal is threefold:

  • Meet readers where they already are, at the article they're actually interested in
  • Make unlocking that article as low friction as possible
  • Make Paperwall easy for blogs and publications to adopt, with a simple integration and standardized pricing

Ghost makes this easy, kind of

Ghost has an "Inject Code" option in the admin. I tried it out, and the standalone version worked immediately. Adding it in and unlocking an article took a few minutes.

That said, the standalone version isn't what most sites should use. Paperwall works best when it sits where traffic already flows, as an alternative access point right in front of the article in question. Two things get in the way of that:

  • No concept of per-article access. Premium content in Ghost is gated behind a blanket "visibility" setting, and the only way to reach a premium post is through the Admin API.
  • The UI. The unlock needs to feel like a seamless alternative to subscribing, not a widget bolted on beside it.

The Ghost integration

This is where the dedicated integration comes in. Paperwall injects a button and some text (CTA) into the existing "Upgrade Now" paywall, inheriting the site's brand information so it feels native. The only real differences are the logo (a signal that the reader is taking an alternative route into the article), the explainer text, and the CTA itself, which is a basic link for now. All it takes is a few lines of copy-pasted code, and that's everything needed on the unlock side.

Next is displaying the actual article, which is where the Admin API key comes in. Once a reader unlocks an article, Paperwall fetches it from Ghost and returns the rendered content in place of the stubbed version. That endpoint is only reachable by someone who has paid for the content. As long as the reader stays logged into Paperwall, they can revisit the post whenever they like.

Handing over an Admin API key is a big ask, so we’ve taken as many precautions as possible:

  • Encrypted in the database
  • Only ever used through the production API
  • Revocable or rotatable at any time
  • Never used for anything other than retrieving a post a reader has unlocked

Pricing

Pricing is standardized through a unit called Tickets. Each ticket has a preset value (currently USD $0.25, CAD $0.30, GBP £0.20), and you price an article at a number of tickets, typically 1–4. The ticket count is shown alongside the price. This keeps things predictable for readers and keeps payments and payouts manageable for Paperwall.

Payments are processed monthly via Stripe, using whatever payment method the reader has on file. Net revenue is split 70/30: 70% to blogs and publications according to the number of tickets redeemed, 30% to Paperwall. So a 2-ticket article at USD $0.50 nets the publisher about $0.33.

What the reader sees

When a reader goes to unlock an article, they're taken to Paperwall. Returning readers land straight on a preview of the article and confirm in one click. First-timers are prompted to create an account and add a payment method before continuing.

The redirect exists so we can verify who they are at the point of payment. The integration only uses read-only access to confirm identity and check whether they've paid.

Setting it up

The process is the same regardless of where the blog is hosted:

  1. Paste the integration code into Ghost's "Inject Code" panel and connect your Admin API key.
  2. Add an article and set its price in tickets.
  3. Review the unlock preview - title, image, and description, usually pulled from the page's SEO metadata - and decide whether to opt into the discovery feed, the main Paperwall aggregator. Both are editable in the Paperwall Site Admin area.
  4. Test the whole flow in sandbox mode, which runs your site on sandbox.paperwall.io so only admins can see the integration. When you're happy, re-apply the same steps on paperwall.io and point the code integration at your live settings.

Get started

Full docs are at paperwall.io/docs, and the Ghost-specific guide is at paperwall.io/docs/integrations/ghost. If you run a Ghost blog, give it a try.