How our metered paywall works

Our newspaper’s website uses a metered paywall, sometimes known as a leaky paywall, to provide some free viewing of individual articles while encouraging repeat readers to support our work and subscribe for ongoing access.

After evaluating all the different ways to drive subscriber revenue and support, we landed on this one as a favorite.

A hard paywall, requiring login for any kind of article access, but also limiting social sharing and search engine indexing, felt too restrictive. No paywall, with lots of marketing messaging everywhere just hoping people would subscribe, felt too permissive.

A leaky paywall felt just right:

  • Readers discovering us for the first time or just wanting to take in an article now and then can do so without hassle.
  • Articles can be shared on social media and fully indexed by search engines.
  • More frequent site visitors are given a few free articles, and are then asked to create a free account and provide their email address to get a few more.
  • After that, people are asked to subscribe at a very reasonable rate to have unlimited access to individual articles as well as our e-edition of the print newspaper.

I should say that our approach here is heavily inspired by the folks at Leaky Paywall. They are doing excellent thinking, writing, podcasting and sharing about best practices for digital publishers who are considering how to drive subscription revenue and engagement. On top of that, they offer a simple but powerful suite of tools for WordPress publishers to incorporate a leaky/metered paywall and subscription platform with very little effort. I’m not affiliated with their team and receive no compensation for saying this, but for any online publisher looking to get up and running quickly with this kind of toolset, I highly recommend checking them out!

(Because we had an established subscription system set up that wouldn’t work well with Leaky Paywall’s tools without a fair amount of migration work, and because I have experience building and supporting custom WordPress solutions in the media and publishing space, I decided to extend what we have with custom tools instead of migrating.)

The first piece of the puzzle is a metered paywall plugin that tracks how many articles a visitor to our website has viewed and then restricts access when they’ve reached the limit. Here’s what the plugin settings screen looks like:

The plugin also makes a paywall mode selection box available on each individual article’s editing screen:

For some kinds of articles such as a breaking public safety situation we can make them public so that no one ever gets a paywall. For others where we think the time and work put into an article is such that it should always be restricted to subscribers only, we can do that too.

If you’re reading an article and you’re within your paywall limits, nothing happens, you just read as normal. If you have exceeded your limits, you get a nudge like this:

From there, you can create a free account that provides additional article access in a given time period.

I implemented the “registering gives you more” logic as a second, independent WordPress plugin that uses hooks and filters made available in the original base plugin. This allows us to easily experiment with different ways of modifying a visitor’s paywall limits without getting that tangled up in the core paywall logic. The paywall extension logic looks like this:

function wwn_paywall_filter_max_content_views( $max_views ): int {
	if ( is_user_logged_in() ) {
		$additional_views = (int) get_option( 'wwn_logged_in_adds_to_paywall_max_views', 3 );
		return $max_views + $additional_views;
	}

	return $max_views;
}
add_filter( 'metered_paywall_filter_max_content_views', 'wwn_paywall_filter_max_content_views' );

This code basically says that if a user is logged in to their account, take the default paywall maximum article views and increase it based on the value of a WordPress option stored in the site. There’s another one filter used that can permit full access if the user has purchased an online subscription (or whatever other criteria we want to use), and so on.

After registering and verifying their email address (with verification powered by a customized installation of the free Email Verification for WooCommerce plugin), the user is redirected to the original article they were trying to read. On the backend they’re also added to a marketing automation journey that will send them an email welcoming them to their free account, and then follow up a bit later encouraging them to subscribe.

This is powered by our custom subscriber management tool in concert with our email marketing tool, currently Mailchimp.

Again, this is all heavily derived from the Leaky Paywall approach, which you can get via their free WordPress plugin. It uses a combination of cookies, Javascript and IP address storage to perform an “authorization” as a part of each article page load on our website. We were also able to do it in a way that doesn’t break full page caching for anonymous/logged-out users.

Is it possible to get around our paywall? Definitely! If you find the right combination of using a VPN to change your IP address, browser “reader” views, clearing your cookies and blocking or modifying certain Javascript and CSS configurations, then you can read paywalled articles for free! (We just hope you value your time, and ours, more than that.)

We’re not spending much time defending against these tricks, as we think a very small percentage of our potential paying subscriber population will bother with them, and that our time is better spent showing the value of what we publish to people who might pay.

Put another way, the paywall is less about keeping everyone out as much as it’s about encouraging the average reader to be mindful about the value of the coverage and information they’re viewing, and to support our publication through a subscription.

We do track some analytics about how often people interact with our paywall. We use a privacy-focused analytics service called Plausible and we can send it events for each time someone views an article in an “authorized” way or when they hit our paywall as “unauthorized”:

Further filtering and sorting of data in Plausible allows us to understand what content is generating interest from subscribers, potential subscribers and one-off visitors to our website, which is helpful in further deciding how to adjust our messaging and marketing.


That’s how our paywall works! I hope you found this useful.

If you work on paywall technologies, paywall circumvention technologies, or just think about this kind of stuff in general, I’d be glad to hear from you in the comments.

Chris Hardie is a journalist, newspaper publisher, software developer and entrepreneur based in Indiana, USA. Read more from Chris on this site, learn more on his personal website, subscribe for updates or follow Chris on Mastodon.

Leave a Reply

Your email address will not be published. Required fields are marked *