Leaky Paywall Subscription Platform


Leaky Paywall is the 1st and most flexible metered paywall built specifically for news and magazine publishers.

Get your content discovered in Google search and shared in social media. As simple as setting your meter to allow X number of free articles before requiring a subscription, Leaky Paywall can also be customized to allow multiple subscription options. Subscribers can pay (or register for free) for access to your content by category, tag, custom post type, and even pay a premium for your archive content.

Leaky Paywall also integrates with our award winning IssueM issue publisher, our UniPress iOS and Android apps and many 3rd party print subscription services.


  • Can be easily configured as a metered paywall, hybrid paywall, hard paywall, and membership platform.
  • Metered paywall: Let your readers read X number of free articles before they need to subscribe
  • Flexible restrictions: restrict by entire post type, category, tag, taxonomy, archive content, or even on individual posts
  • Get found in Google: Allows all your content to be indexed by search engines
  • Viral sharing: All your articles can be shared 1000s of times in social media
  • Sell access to web issues: Integrates with IssueM to sell access to individual special issues or traditional weekly, monthly, quarterly, etc issues
  • iOS and Android app publishing: Integrates with UniPress to easily give your subscribers access to apps and sell subscriptions in the app stores
  • Build your email list with a Free subscription level
  • Granular content restriction: Optionally set any article as subscriber only or always free/public
  • Much more

Leaky Paywall integrates with

  • IssueM issue publishing: Our IssueM plugin allows publishers to manage live web issues that are mobile, search engine, and social sharing friendly. Issues and articles reach today’s modern reader. Now you can promote and sell subscriptions to special or traditional recurring issues.
  • iOS and Android apps! Leaky Paywall integrates with UniPress to give your subscribers native mobile apps for the best reading experience available today. Your subscribers will have automatic access to your content in the app after subscribing with Leaky Paywall. All content and apps are managed right in WordPress for true 1 click publishing.
  • Stripe
  • PayPal
  • MagHub
  • Enterprise Subscription Processing (ESP)
  • Palm Coast Data
  • Publisher Service Associates (PSA)
  • RunMags
  • Publisher’s Creative Systems (PCS)
  • Mear

Add-ons available to power up your publication
Some of our add-ons include:

  • Recurring Payments charges subscribers automatically when its time for their subscription to renew
  • Trials allow subscribers to sign up for a trial to any recurring level.
  • Multiple Levels allows you to give your readers different subscription options.
  • Coupon Codes allows you to create unlimited coupon codes for your subscription levels.
  • Gift Subscriptions allows friends and family to buy gift subscriptions.
  • Basic Shipping lets you collect address information for shipping during registration.
  • IP Exceptions allow visitors from designated IPs to view articles and posts without having to subscribe.
  • Corporate subscriptions allow restricting access by domain or email address.
  • Reporting Tool allows you to filter and download a CSV file of the subscriber info you need.
  • File restrictions hides any link to any file (PDF, image, etc) in your media library.
  • MailChimp automatically adds new subscribers to a Mailchimp list.
  • Bulk Import Subscribers allows you to bulk import subscribers from a CSV file.
  • Article Countdown Nag lets the reader know how many free articles they have left before they need to subscribe.
  • Many more

For documentation see: https://zeen101.helpscoutdocs.com/collection/30-leaky-paywall

We love contributions! Head over to our GitHub page if your feeling inspired https://github.com/zeen101/leaky-paywall

A plugin for WordPress that allows you to sell metered access to your content. More info at https://zeen101.com/


Leaky Paywall for WordPress
Copyright (C) 2011 The Complete Website, LLC.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


  • Leaky Paywall general settings
  • Leaky Paywall content restriction settings
  • Leaky Paywall subscription level settings
  • Leaky Paywall payment method settings
  • Leaky Paywall visibility settings let you overwrite the default restrictions on a per content basis
  • Leaky Paywall subscriber table to manage current current subscribers and add manually add new subscribers
  • Leaky Paywall subscribe nag after a reader has reached their article limit
  • Leaky Paywall subscribe cards
  • Leaky Paywall register form for both free and paid levels
  • Leaky Paywall account page for a subscriber to manage their account information


  1. Upload the entire issuem-leaky-paywall folder to your /wp-content/plugins/ folder.
  2. Go to the ‘Plugins’ page in the menu and activate the plugin.


How does Leaky Paywall work?

The Leaky Paywall meter restricts by X number of free articles over a Y time period. days, weeks, months, years. There is a visibility setting on the post edit screen you can use to override the global meter setting. EG: make an article always free or always require a subscription

What payment gateways do you support?

We support Stripe and PayPal by default. CyberSource and ESP requires some setup, and other gateways can be integrated with our API. We highly recommend Stripe to give both you and your subscribers a state-of-the-art experience.

What kind of subscriptions can I create with Leaky Paywall?

You can sell daily, weekly, monthly, and annual subscriptions, both one time and recurring. You can also offer a free subscription in exchange for an email address.

If I deactivate Leaky Paywall will I lose all my subscriber data?

You can deactivate Leaky Paywall at any time without losing any subscriber data. All subscribers are stored as WordPress users in your database.


21 augustus, 2020
Here's a real-life, first-hand, straightforward assessment of my (by now extensive) experience both with Leaky Paywall and the folks behind it. If you have a sizable, dedicated following and you post quality content regularly, you can use Leaky Paywall (and the suite of additional offerings and services from Zeen101) to build a serious business -- period. I know, because I did it myself. I started with Leaky Paywall more than two years ago and gradually added a few additional plugins from Zeen101. By the second year, I had built a good relationship with the folks at the company, with whom I now work regularly on my site. I currently run a variety of their plugins and correspond with the Zeen team on an (almost) weekly basis about anything and everything to do with my business. Two years ago, in mid-2018, my site relied solely on ad revenue, and while it was more than a "hobby," it wasn't quite a business. Fast forward to August 2020, and it is a fully incorporated enterprise, generating six-figures/year in revenue. Admittedly, I'm a bit of a workaholic, so that's part of it. But the fact is, what I've been able to do with my site wouldn't have been possible without the folks at Zeen, and it started with Leaky Paywall. Of course, I could have gone out and hired developers to build in a paywall, but that would have come at considerable cost. Zeen101 now provides me with all of the services and support that I need to run a six-figure business at a tiny fraction of what it would cost to hire a team to do the same work. I will almost surely tap into additional offerings from them in the very near future, especially considering my current growth rate/trajectory. So, yes, this plugin works. And, yes, you can use it as a springboard to establish a working relationship with the folks behind it on the way to building a serious, highly profitable subscription business for yourself. And you can do that in a relatively short period of time, and at a very low price point. As with all businesses (and all business relationships), you have to be dedicated to your own cause. I was determined to see what these products could do for me, and also to get to know the folks behind them so that I could discern whether it made sense for me to work with them over the longer-haul. That took some time, but it was worth it -- and then some. My recommendation is simple: If you're serious about your subscription business, try Leaky Paywall. Then, if you're successful with it, reach out to the Zeen101 team (all you have to do is go to their site) and find out more about everything else they can do for you. They're good folks and they've been patient and helpful with me at every possible juncture for more than two years -- which is saying something, because I'm not always an easy guy to be patient with. I hope that helps everyone.
25 augustus, 2020
Tea is the most consumed prepared beverage in the world. Half the world drinks tea daily but for Tea Journey magazine the challenge is identifying the small percentage of a global audience of three billion who prefer authentic, single-origin, and artisanal teas. Leaky Paywall helps Tea Journey identify and reach niche prospects in more than 100 countries. Here's how: Tea Journey is a content-driven publication. Transaction data available through Leaky Paywall enables editors and circulation staff to see which articles lead readers to subscribe. Our team reasoned that Health & Wellness articles would be popular given the widespread interest generated during the pandemic, but Leaky Paywall provides us with valuable insights beyond page views tracked in Jet Pack. Tracking the transaction history lets us precisely identify which Health & Wellness articles lead potential subscribes to signup. Tea Journey's circulation strategy is based on the theory of 1,000 "fans" advanced by WIRED's Kevin Kelly who states that all an artist needs is 1,000 true fans to maintain a fruitful, if unspectacular, career. Tea Journey uses Leaky Paywall to empower influential super fans in several countries (usually directing tea associations) to incentivize their members to join by issuing Tea Journey discount coupons that provide unlimited access to the content at no cost for one year.
19 augustus, 2020
It took sometime but we are moving in the right direction now. Leaky paywall is our metered paywall solution for our content. We have the option to set visibility on every page. We are running the paid version on 4 sites, active sites.
19 augustus, 2020
We have been using Leaky Paywall for five years and it has been excellent. First of all, revenue went up and continues to go up. Second of all, they continue to innovate and offer us different ways to get our content to our audience while also generating revenue and building relationships with our readers. Third of all, they are responsive to support requests and really value you as a customer. Highly recommended.
13 augustus, 2020
I have had a lot of issues with this plugin since I installed it on my website. I have a pretty popular site - about 20k visitors per week - and so I needed a dependable membership plugin to offer premium memberships to my site visitors. I decided to go with Zeen 101's Leaky Paywall because it has the option to limit how many posts viewers can read for free each month, and a "countdown article nag" that allows users to see how many free posts they've read of their allotment so far (i.e. "You have 1 free post remaining this month."). There aren't really any other WordPress plugin options that offer this feature, and I didn't want to have to either write exclusive premium member posts or make all my posts either free or premium (in other words - I'd prefer to monetize my existing posts by limiting how many posts someone can read each month). The membership plugin seemed OK (mostly) at first, but I have since had many problems with the main plugin as well as the add-ons. For one, most recently, the plugin no longer works with the latest update for Divi (it interfere's with Divi's animations - causing any section of the website that has an animation to simply not display. Since I have a lot of animations throughout my site - i.e. graphics that fade in when you scroll down the page - the plugin broke a lot of my site). When I disabled the plugin, my site worked fine. Additionally, at one point I purchased the add-on that creates a premium-only link to a piece of media so that only premium members can view or download the media. I thought this would be useful for my eBook that I wanted available only to premium members. The link never worked, and I got lots of emails about the broken link. The Zeen 101 team was not helpful in getting this issue resolved, and eventually I just cancelled the add-on and removed it from my site. Finally, I've had a lot of problems with having the plugin actually work as advertised. When I set certain pages to be "Premium Only," for example, they are still viewable to non-premium members. Plus, when you try to enable both PayPal and Stripe payment gateways, the plugin doesn't really know what to do and displays multiple "Subscribe" buttons to the user - which makes the premium subscription setup look spammy or fake. If you uncheck the option to display the PayPal subscribe button on the main subscribe page, it doesn't display at all. Essentially, this feature is broken and has been since I downloaded the plugin. To sum up my experience with this plugin - it doesn't work as intended, and the support team is not very helpful or responsive. I don't recommend this plugin to anyone at this time.
28 juny, 2020
The plugin is not realy free, because some main resources are only available via add-ons that are very expensive for those who are starting and have no paid subscriptions yet. Instead of that, the Leaky Paywall has a lot of bugs and the developers dont give any assistance fot the problems reported.
Read all 19 reviews

Contributors & Developers

“Leaky Paywall Subscription Platform” is open source software. The following people have contributed to this plugin.


“Leaky Paywall Subscription Platform” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Leaky Paywall Subscription Platform” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Add insecure page error message to stripe credit card field if SSL is not found
  • Add initilize function for Stripe API to set app id and version number
  • Add form data to ajax call during subscription creation
  • Show error message on login form if incorrect credentials entered
  • Update cancel message
  • Update translations
  • Update inline validation during registration
  • Adjust error display on registration form


  • Add collapsable ui to subscription levels
  • Add level to update stripe subscription actions
  • Add helper text for expires field
  • Update reminder email user query for large sites
  • Update admin plugin links
  • Fix for updating Stripe subscriptions on existing customers
  • Fix Stripe customer duplication during registration
  • Fix email check during account setup validation
  • Only load validation script on register page


  • Add functionality for updating a subscriber to update their payment information


*** Update Notice: Please test any update on a staging site before updating on your live site. ***
* Remove stripe check script if only paypal is enabled
* Add leaky_paywall_account_setup_validation filter to allow plugins to validate account setup data
* Remove unused method call when saving a post


*** Update Notice: Stripe Checkout is no longer supported. Use registration form instead. ***
* Update Stripe integration to be SCA compliant
* Update registration flow to use two steps
* Add front end validation to the registration form
* Add initial incomplete transaction status to paypal orders
* Add class checks for stripe with namespace
* Allow for both paypal and stripe elements as options on checkout
* Remove depracated Stripe Checkout Modal
* Admin settings UI improvements
* Fix duplicate transactions for paypal signups


  • Adjust registration to allow for more ways to purchase content
  • Use card submitted during registration even if the customer already exists in Stripe
  • Cancel registration if a subscription status comes back as incomplete from stripe


  • Add [leaky_paywall_subscriber] shortcode
  • Add [leaky_paywall_not_subscriber] shortcode
  • Add setting to remove username from registration form
  • Update PayPal setup information
  • Add stripe event for payment_intent.canceled
  • Update settings UI on subscription level settings
  • Hide subscribe button from active recurring subscribers on their level
  • Hide payment info on account profile from non-recurring subscribers
  • Update canceled wording
  • New translation added


  • Add template for new my account page shortcode
  • Add new role check to has_access function
  • Add leaky_paywall_user_can_bypass_paywall_by_role() and update messaging on my account page for those that can
  • Save gateway transaction id on new transactions
  • Add responsive styling to subscribe cards
  • Fix index error of password when a user is already logged in during registration


  • Add lead in setting for lead in when using alternative restriction handling
  • Add filter to hide taxonomies from restriction and access settings
  • Update plan id settings
  • Add limits to post types and taxonomies on subscriptions tab


  • Only hide content on single view with alternate restriction handling


  • Add condition existing users having payment status when checking if they have access
  • Hide display of initial content when using alternate restriction handling


  • Fix for duplicate charges if a user updates their card details for Stripe


  • Add log entry when a user updates their cc info
  • Add helper text to restriction settings
  • Add leaky_paywall_after_create_transaction action
  • Add arguements to subscription shortcode if redirecting to registration page
  • Update date format to fix expiration date bug
  • Update size of css selector input in settings
  • Update profile shortcode with update credit card details for stripe and ability to restart subscription
  • Update review CTA
  • Hide visibility settings on lp group accounts


  • Add setting to bypass paywall by user role
  • Remove leaky paywall visibility on ad dropper post type


  • Remove i18n of ui datepicker on Add/Update Subscriber form
  • Remove i18n of date format on Add/Update Subscriber form
  • Disable autocompletion for date picker on Add/Update Subscriber form
  • Update status label on Add/Update Subscriber form
  • Add post_id to restricted content action
  • Update German translations
  • Add leaky_paywall_email_attachments filter to welcome emails
  • Add admin email settings for subject and recipients
  • Add leaky_paywall_get_transaction_id_from_email helper function
  • Add name to admin new subscriber email


  • Downgrade Stripe PHP library to 6.43.1 for older versions of php


  • Add hooks during paypal webhook and fix email overwrite from paypal buyer email
  • German translations added
  • Update Stripe PHP library to 7.0.0
  • Clean up deprecated transient code on paypal transactions
  • Add transaction id to subscriber data after paypal ipn


  • Allow for level_id of zero when using shortcode attribute


  • Add level_id attribute to leaky_paywall_register_form shortcode
  • Add subscribe card description setting on a per level basis
  • Add register form description setting on a per level basis
  • Add leaky_paywall_current_user_can_access filter


  • Add fix for strip_tags when using custom excerpt length setting


  • Adjust order of stripe keys in settings
  • Do not allow access if the user is not logged in
  • Add admin notice for feedback
  • Strip tags from content for nag


  • Add leaky_paywall_profile_your_profile_before_submit filter to profile page form
  • Add term names to subscribe card access descriptions
  • Add login_redirect_url attribute to the leaky_paywall_login shortcode
  • Add is_level_deleted check on registration page
  • Update performance when using Stripe
  • Update performance with ajax calls
  • Add leaky_paywall_pdf_access to adjust who can access pdfs even if they are a subscriber
  • Update pdf access check to use leaky_paywall_user_has_access
  • Add help text for webhook setup to recurring payment setting on a level


  • Add confirmation message when a subscriber is added or updated on the subscriber screen
  • Add disabled state to button after clicked on registraiton page
  • Default to manual if no payment gateway is set for a subscriber
  • Add leaky_paywall_after_user_deleted action after a user deletes their account
  • Update user permission check for leaky paywall visibility


  • Update restriction logic for users with a subscription level
  • Update admin columns on transactions
  • Update PubCare callouts


  • Allow created date to be set during bulk import
  • Fix recurring payments on Stripe Checkout
  • Add recurring payment data to transaction


  • Add more translatable strings
  • Update post type labels on subscribe cards and registration form
  • Update cancel language
  • Fix has access logic when using a non-English translation


  • Add more translatable strings
  • Add filter to adjust paypal ipn data
  • Add restriction rules for a taxonomy that has zero allowed
  • Allow for multiple plan ids on a single level
  • Remove visbility metabox from coupons and transctions post types
  • Set default for restrction taxonomy on restriction settings
  • Update add-ons page links


  • Update restriction rules for limited access options


  • Update restriction logic for expired or deactivated users
  • Add settings for post and page css selector when using alternative restriction handling
  • Add links for managing a subscriber by their WordPress user profile in the Subscriber table


  • Add fix for payments over 999 for Paypal and Stripe
  • Add ability to manually check if a subscriber can view content
  • Fix index error if restrictions have not been set yet
  • Fix closing tag on Stripe Checkout script
  • Update how old IPN webhooks are handled from paypal
  • Update callouts in sidebar


  • Add filter for leaky_paywall_nag_excerpt
  • Update output of lead in text when using javascript
  • Fix user meta save during new user registration
  • Fix index error if no restrictions set
  • Fix php notices for continue in switch statements


  • Add options for Apple Pay and Stripe Elements on registration form
  • Fix canceled subscribers not being able to view correct content
  • Fix renewal reminder emails for non-recurring subscribers
  • Add stripe event type to webhook log
  • Remove Leaky Paywall menu from admin toolbar for subscribers
  • Fix compatibility issue with EditFlow
  • Update expiration text on My Account for canceled subscribers


  • Introducting restrictions by taxonomy! (category, tag, etc.)
  • Add leaky_paywall_after_update_stripe_subscription action after updating a Stripe subscription
  • Add Leaky Paywall toolbar to admin bar for easier admin workflows
  • Fix dropped zeros on price display
  • Fix Stripe error when subscriber updates their CC info on their account page


  • add styles for login form
  • fix paypal registrations


  • add leaky_paywall_before_process_paypal_webhooks action
  • add filter after last subscription option
  • trim search term in subscriber table input
  • strip shortcodes out of content excerpt before paywall message
  • add leaky_paywall_after_create_recurring_customer action


  • add lp_transaction post type for storing registration data
  • add additional actions to registration form
  • Fix bug where Stripe charges default card (thanks samueldjack)


  • fix subscriber table display on multisite


  • update credit card update form to use Stripe button


  • fix display of subscribers on subscriber table


  • add more translatable strings
  • add custom excerpt length setting to control the amount of content (in characters) to show before displaying the subscribe nag


  • only load Stripe JS on the pages that need it
  • update translation strings
  • update admin content access when using alternative restriction handling
  • update display price to display zeros correctly


  • display subscribe nag with javascript if alternative restriction handling is enabled
  • add helper text to subscribe page if Stripe key settings are not found
  • update currency symbol for Danish krone
  • allow deactivated accounts to enter new credit card info on their profile
  • add a character normalize function for handling accent characters in plan names
  • update sanitization of email settings
  • corrected var causing new subscriber email to display wrong level
  • allow stripe checkout button text to be translated


  • add filter for restriction cookie name
  • update translation strings
  • stop creating stripe extra plans when saving settings
  • add currency options for formatting displayed prices
  • add login link to email exists error on registration form
  • fix password display on email for stripe checkout gateway


  • add filter to enabled gateways
  • adjust visibility settings for cancelled subscribers
  • update translation strings for credit card
  • use payment gateways for select option when adding a new subscriber manually
  • add data-locale flag to stripe checkout form to allow for translation


  • Add filter for adjusting cancellation confirmation text
  • Update title on wp_die calls
  • Allow subscribers to renew their current level from the subscribe page
  • Allow subscribers to delete their account from their account page


  • Update faq
  • Update upgrade function


  • Refactor level row to use action leaky_paywall_after_subscription_levels_row
  • Update password handling
  • Add setting to hide a level from the subscribe cards
  • Add filter to status dropdown on subscriber table


  • Fix display of price on subscribe cards for recurring levels


  • Add ability to search subscriber table by subscription and plan ID
  • Update subscriber table query to work with large database of users
  • Add leaky_paywall_paypal_args filter for editing paypal args before sending them to paypal
  • Update nag message and subscribe card styles
  • Add user profile fields for Leaky Paywall to an individual user page in the admin
  • Add hooks and filters needed for trials
  • General bug fixes


  • Fixed bug causing multiple charges for same checkout
  • Refactor restrictions


  • Fixing subscription expiration bug for Stripe


  • Adding some additional event tracking
  • Adding some additional hooks


  • Change in registration process
  • General code cleanup
  • New filters/hooks
  • Reminder emails!


  • Switching serialize commands to json_en/decode commands, for security reasons
  • add leaky_paywall_cancelled_subscriber hook when a paypal user cancels a subscription
  • add help tab to settings page
  • update html of subscription options details
  • Fix the php warning from stripe/lib/ApiRequestor.php:242 (h/t: Ku Lok Sun)


  • Add translation for credit card label
  • Add cancel link back to my account page for paypal subscribers
  • Add translation files for nederlands
  • Udpate domain path to translations
  • Update stripe
  • Update translation text domain to work with new translation system
  • Add filter for login form args
  • Add name column to subscriber table


  • Add fix for paypal subscription cancel webhook notification not getting processed
  • Remove avatar from subscriber table
  • Add check for user switching plugin
  • Add integration with user switching plugin by adding a switch to link to the lp subscriber table if the plugin exists
  • Add status filter to subscriber table
  • Update level filter to work with zero as a level id
  • Add level filter to subscriber table
  • Fix fatal error on checkout form in stripe fields if keys are set incorrectly
  • Update stripe calls through code for v5.1.2 of stripe library
  • Update stripe php library to 5.1.2
  • Add default case for stripe event check if the event name returned does not match any of the cases
  • Update the wording on the profile page for users who have cancelled their subscription but are still active because their expiration date has not passed


  • Fix bug when Stripe Expired set, but account not expired
  • Added JS/AJAX Version of Leaky Paywall (beta functionality)
  • Added various filters, classes, hooks, etc.


  • Removing Stripe TLS warning in favor of forcing TLS version using WooCommerce’s solution (thanks Woo)
  • Add filter to adjust leaky paywall profile table
  • Add country names to currency list and a hook for adding settings in the currency settings section
  • Add leaky_paywall_your_subscription_total filter
  • Add filter to adjust subscription price on subscribe cards
  • Removing SUBSCRIBE_LOGIN_URL from text description (still works in code)


  • Fix causing admin to break when first activation LP w/ no Stripe Key set


  • Adding Stripe TLS notice
  • Fix bug in validate username when user uses a capital letter
  • Send email notification in registration function
  • Add level_id to leaky_paywall_form_processing and leaky_paywall_form_errors actions
  • Add level arguement to leaky_paywall_create_stripe_plan filter
  • Fix index error on content variable
  • Fix index error if no plan id is submitted with registration form
  • Add filter for email message
  • Shortcode customizations
  • Add action leaky_paywall_after_your_subscription_details for adding additional items to the Your Subscription section on the registration form page
  • Add function for getting the currency symbol
  • Add leaky_paywall_create_stripe_plan filter to adjust details before creating a stripe plan
  • Add filter before login form for display content to non logged in users


  • Removing deprected function usage wp_setcookie() to wp_set_auth_cookie()
  • Better handling when Stripe fails and user is already created but not logged in


  • Add option for disabling admin notification email when a new subscriber is added to leaky paywall
  • Add a filter for editing the text of the admin email
  • Fix bug that was setting the incorrect value for restrictions


  • Add filter to expires in has_user_paid function for corporate subscriptions
  • Update email template to allow for images and html
  • Add action leaky_paywall_before_download_pdf before a restricted pdf is downloaded
  • Add leaky_paywall_cancel_subscription_description for altering text on cancel pagee
  • Add leaky_paywall_content_access_description filter for altering text on register form subscription description
  • Fix number format error in subscription details on free level


  • Refactor License Key Settings
  • Add leaky_paywall_failed_payment action for paypal webhooks
  • Add leaky_paywall_failed_payment action for Stripe webhooks
  • Update check for new leaky paywall subscriber email to be sent so that it works again with the Strip credit card form
  • Add leaky_paywall_cancelled_subscriber action after a subscriber has cancelled
  • Fix bug with cancel link not showing on user profile
  • Add current_tab value to leaky_paywall_update_settings_settings filter
  • Fix number format error for free subscriptions on registration form
  • Add hook after enabled payment gateway settings
  • Refactor leaky_paywall_has_user_paid function


  • Including User object w/ wp_login action call
  • Fix mode bug in paypal webhook processing
  • Add css class to subscription options h2 tag
  • Fix mode bug during Stripe webhook processing


  • Settings Page Rebuild


  • Fixing debug output code on Stripe card decline


  • Updating translation strings and POT file


  • Fixing bug in PayPal processing


  • Fixing India Rupee sign
  • Updating some verbage on the Profile Page for passwords


  • Show only sites in leaky paywall settings to super admins only
  • Fixing bug causing deleted plans to permanently delete, instead of just being marked as deleted
  • Update level site settings so the chosen site is selected in the dropdown after saving the plugin settings


  • Deprecating wp_get_sites usage for 4.6.x+
  • Removing upgrade path in favor of already existing functionality
  • Fixing Stripe payment form to handle existing logged in users better
  • Add filter for changing the order of the subscription card levels on the subscribe page


  • Fix for multisite subsites not showing payment data
  • Adding Created column to subscribers table
  • Fixing default sort order in subscribers table


  • Update registration form to correctly calculate coupon discounts


  • Do not show Payment Information for non-recurring payments


  • Fix a bug in Stripe onetime payment, causing HUGE payments
  • Fix credit card form display
  • Style updates and code cleanup


  • Set defaults for visibility metaboxes
  • Fixing bug w/ Stripe cancellations not displaying content if not yet expired
  • Checking for zero based level ID in registration form output w/ LP subscription shortcode


  • Hide dashboard widget from non-admin users
  • Set stripe key based on mode inside of has_user_paid function


  • Payment Gateway Redux
  • Free Subscriptions Updates
  • Default Gateway Stripe Popup
  • Added Credit Card Form for Stripe
  • Cleanup PayPal processing
  • Cleanup Bulk Import Code
  • General Code Cleanup


  • Add recent subscribers dashboard widget
  • Add a check to the new subscriber email to make sure the user does not already exist in the system
  • Add leaky_paywall_after_new_subscriber_form action on subscriber page
  • Adding HTTP Version to PayPal API calls… fixing get current user function calls
  • Fixing deprecated function call
  • Add bulk csv uploader to subscribers pagee


  • Setup ‘rememberme’ to true for set_auth_cookie calls
  • Adding support for Zero-Decimal currencies in Stripe


  • Update add ons page with publisher bundle banner
  • Fixing bug when detecting empty users and level IDs
  • Fixing bug when updating subscriber information
  • Adding filters for new payment gateways
  • Adding text to profile shortcode for unpaid accounts to resubscribe.


  • Fixing bug in PayPal IPN EOT/Suspend/Cancel
  • General Code cleanup
  • Add after subscribe page redirect after a new user is created


  • Adding text-domain
  • Updating POT file


  • Fixing Bulk Importer bug


  • Remove reference to EDD updater class
  • Add function to build post type row in access options when add new post type button is clicked
  • Removing EDD Updater references


  • Fix: Don’t show deleted levels on frontend


  • Release to Public on WordPress.org
  • Create Add-ons page
  • Fix for int/string compare on subscription options shortcode
  • Expiration Fix
  • Adding new filters and actions
  • General code cleanup
  • General styling cleanup


  • Fixed bug causing updater to always say there is an update


  • Fixed bug when manual payments are unlimited
  • Fixed bug with trim() vs empty() calls on content availability


  • Fixed different bug causing default restrictions to not be found


  • Fixed bug causing default restrictions to not be found
  • Fixed bug caused when multiple payments exist for a user
  • Updated for Leaky Paywal Coupons
  • Updated various texts and tags
  • Fixed bugs related to emails not being sent
  • Remove duplicate entries in subscriber table
  • Fix php errors on subscription page
  • Add multisite checks to subscriber table user data
  • Only add blog id to subscriber query if is multisite
  • Add level id to each subscription option subscribe box
  • Adding all the Stripe supported currencies
  • Fixing bug w/ Free Susbcription disappearing on upgrade, username changing on upgrade, email notifications not wokring, and email notifications not replacing args


  • Initial Multisite Support


  • Escaping add/remove_query_arg calls properly


  • Adding Australian Dollars
  • Add EDD SL plugin updater class and functionality to lp
  • Add invalid notice to license key field when an incorrect license key is entered, or it is already active on another site
  • Update new user notification for free users so the email sends


  • Fixed bug when a new free user was updated


  • Fixed currency bug in Stripe


  • Pruned unused multisite settings
  • Fixed JS bug


  • Adding filters for demo.zeen101.com
  • Removing unused code from BETA build


  • Adding currency options for USD, GBP, and EUR


  • Adding PayPal IPN txn_type case for max failed payments and suspended payments
  • Fixed bug with PayPal IPNs being sent with no item_number field
  • Properly trim search arguments on Subscribers table


  • Better error reporting for payment processing
  • Separated subscribe and login url replacement arguments
  • Manual payment method is default option on subscriber table form now
  • Force lowercase for status during bulk imports
  • Switching back from wp_loaded to wp action hook
  • Adding some styling, fixed bug in return variables for PayPal
  • Adding options to show all WP users in subscriber table
  • Setup update script to ensure previous versions installed stay on ‘passwordless’ login method, while new insta
  • PayPal updates, to work better for people without PayPal accounts
  • Adding language files
  • Added ability to add/edit subscribers manually with correct Payment Gateway information
  • Added better search capabilities for email addresses
  • Added filter to change which roles get access to content without being a subscriber, preliminary work for PayP


  • Fixing bug in calling Leaky Paywall class method


  • Fixing save meta box bug
  • Updating IssueM references to point to zeen101
  • Fixed bug in visibility saving for custom post types, added new action for bbpress functionality
  • Fixing PayPal Sandbox bug
  • Adding Pay with PayPal text to subscription options
  • Few subscriber table bugs, new subscriber update
  • Removing debug output for testing
  • Updating Stripe API, enabling subscription upgrades through Stripe
  • Fixing bulk import with level-id, Adding mode arg to get subscriber by hash function
  • Fixing bug in single() test during processing, and per-post visibility, and enqueueing scripts properly on new content
  • Removing testing line for updater
  • Removing some duplicate code, and return default restrictions if no subscriber ID is set
  • Modified output for overridden pages, changed how issuem_leaky_paywall_attempt_login attempst to log in users, moved around text for non-valid accounts when logging in and needing to subscribe still
  • Adding metabox to all available post types to override leaky paywall defaults
  • Migrated all users to use WP user meta for all LP meta, debuging new cookie setup too
  • Recommend Merchant ID over PayPal Email address, fixed a paypal PDT bug
  • Extra security when creating usernames in WP
  • Re-organize the Settings page a bit, add some better UI
  • Adding details to subscription options to explain expiration, added GUI for updating cookie expiration, moved functions to a hook that happens sooner to prevent cookie warnings, fixed bug in susbcriber table (everyone listed as no-plan), setup better stripe and paypal processing
  • Adding multilevel Integration
  • Modified how the excerpt and paywall content is output and fixed a bug caused by 3rd party plugins calling content/excerpt functions in WP
  • Do not block login and subscription pages if page type is being blocked. Adds ability to modify usernames and sets usernaes based on front of email, not whole email
  • Completely modified LP to use WordPress Users Table… added migration functionality to move existing users to WP Users table, modified all functions to use WordPRess Users and Meta Tables and functions.


  • Added new function to verify login hashes
  • Moved login hash check inside of process_request function
  • Added check for subscriber session to add to cookie if cookie is empty
  • Set Stripe API version to latest version before they added multi-subscriptions (until we can handle it gracefully)

= 1.1.8=
* FFixing issue with non-recurring payments not adding to subscribers table
* Verify Stripe class has not been initiated before including Stripe SDK
* Verify PHP Session has not been initiated before starting a session


  • Fixed bug causing some sites to not register logged in users
  • Fixed empty/isset bug


  • Major login redux/bug fix
  • Added ability to restricted PDF downloads to subscribers
  • Modified Subscription shortcode to offer login option to reduce confusion
  • Modified subscription shortcode output to not rely on CSS to hide multiple unused shortcodes
  • Removing my IPN notification debug code


  • Removed issuem dependency for License Activated
  • Fixed license_key activation workflow
  • Fixed bug in member table pagination
  • Removing invalid file


  • Fixed bug in login link generation for sites not using permalinks


  • Fixed bug in subscribe shortcode


  • Fixed bugs related to licensing system


  • Fixed bug causing articles to be duplicated in the free article count
  • Added manual COOKIE setting
  • Fixed typo in filter
  • Fixed bug in stripe recurring setting UX
  • Added options to shortcode to deal with multipl subscription options, and css to hide the extra subscription


  • Fixed cookie expiration bug
  • Updated Stripe SDK
  • Added a few actions during update/add subscriber process
  • Fixed selected() status on member dashboard
  • Added subscriber page
  • Bulk import
  • Add/edit existing subscribers
  • Added paypal as a gateway
  • Moved Leaky Paywall out of IssueM as it’s own menu
  • Fixed typo in Stripe currency filter
  • Added extra live/test mode SELECT query checks


  • Extended zeen101’s Leaky Paywall add-on to work without IssueM
  • Fixed a few typos
  • Fixed bug with using the same email address in Live or Test mode with Stripe.


  • Fixed bug to allow changing charge description
  • Fixed bug preventing users from logging out of subscription
  • Fixed bug internationalization text domains


  • Initial Release