The official release of Paid Memberships Pro v3.5 is here.
The four biggest updates in this release include Action Scheduler support, a framework for Restricting Files, improved Payment Settings UI to prepare for v4.0, and a new Membership Dashboard for admins.
Keep reading to learn the new features and specific improvements in PMPro v3.5, how to update safely, and what’s coming next for the PMPro platform.

Overview of Key Features in v3.5
Alongside numerous bug fixes and enhancements to ensure a more stable and efficient platform, below is an overview of the key features in PMPro v3.5.
Action Scheduler
Prior to v3.5, PMPro used the wp-cron
based system to send member emails and process longer-running tasks. For these big jobs, sites with many users or on low performance hosting faced issue with how many items their site could process at once. Crons also run silently in the background, without much visibility, making it difficult to debug issues with recurring tasks.
Related: About Action Scheduler: A scalable, traceable job queue for background processing large queues of tasks in WordPress.
With PMPro v3.5, tasks are queued-up, and run one after the other in batches. These batches are run continuously until all the items have been processed. Action Scheduler watches your site’s performance and gracefully finishes batches or shuts down its cycle when it thinks the site is already busy. This greatly improves overall website performance in day-to-day usage with:
- The ability to process thousands (or tens of thousands, or hundreds of thousands!) of member emails without your site breaking a sweat.
- New capabilities for our Add Ons (like Extra Expiration Emails), or custom code you might have or write.
- The ability for us to move more functionality to leverage the new system and provide more reliability and capability in various hosting environments.
This version now processes all membership expiration, payment reminder, and admin activity emails with Action Scheduler-powered schedules. We also perform any database tuning and file cleanup on these schedules, too.

We have big plans in store to further leverage Action Scheduler to defer processes that slow down checkouts, like email list subscription and tagging. In the coming months, we will be looking at all the places that Action Scheduler could be used, like course enrollments and enrollment repairs in our Courses Add On or prepping large file exports for the Members List and Orders lists.
Groundwork for Restricted Files
PMPro v3.5 introduces a new security feature: Restricted Files. This system is designed to protect sensitive log files, like payment gateway debug logs, by storing them in a private, non-public directory on your server.
These files live in a uniquely named folder inside your WordPress uploads directory (e.g., /wp-content/uploads/pmpro-xxxxxxxxxx/
) and are automatically locked down for Apache servers. The path is shown in the Memberships > Settings > Security screen in your WordPress admin.

If your site runs on NGINX, you will need to manually block access to the directory. We provide the exact code snippet in your admin panel to paste into your server configuration.
Right now, this feature is focused on securing PMPro core log files, but it lays the foundation for more robust file-based content protection in future releases (like fully protected digital downloads).
Consider this update an important first step in giving you tighter control over your membership site’s sensitive data.
If you need to protect files in your PMPro site today, please follow our guide: Protecting Downloads: Locking Down Files with PMPro
Improved Payment Settings UI
We have big plans for PMPro v4.0 with respect to the checkout and payments experience. To get started with some of that work, we have revamped the Memberships > Settings > Payments screen in the WordPress admin.

Now, setting the site’s default gateway and managing an individual gateway’s settings are on separate screens. This supports sites that offer multiple payment methods at checkout, like Stripe, PayPal Express, and a manual or offline payment method.
Admin Dashboard Updates
3.5 delivers you a refreshed layout for the Memberships > Dashboard screen in the WordPress admin.

This layout sets the stage for a future where the Dashboard can be fully customized just for your site. We’re planning to gather more feedback on how this screen is used, then put your needs into the product. Think customizable widgets you can enable or disable, quick links you can add for your unique team needs, and a notifications area that can help you see urgent site issues to address.

Changes to Stripe Application Fees
Since PMPro v2.6 (August 2021), sites could connect to Stripe using our Stripe Connect integration. At that time, we introduced a 1% application fee for connected sites, later increasing it to 2% for new connections. Site owners could override this fee using the pmpro_set_application_fee_percentage
filter.
PMPro v3.5 introduces a key change: recurring payments will now dynamically adjust the application fee at the time of processing. If your site has a valid PMPro Premium license, you will no longer be charged the additional fee on older subscriptions created before upgrading.
However, the inverse is also true: sites with lapsed Premium licenses will now see the 2% application fee applied to all active subscriptions.
In alignment with Stripe’s guidance for tighter platform integration, we are deprecating the filter-based fee adjustment method. Going forward, all Stripe Connect users must either:
- Pay the 2% application fee, or
- Maintain an active PMPro Premium license (which waives the fee)
If your site is still using the deprecated filter to reduce or remove the fee, you will see a notice after upgrading to v3.5. Continued use of this filter may result in your site being disconnected from Stripe.
To stay connected to Stripe through our Stripe Connect account, you must remove the filter or accept the 2% application fee via your the notice in the Memberships admin area.
Alternatively, to continue using Stripe with no additional application fee, you must do one of the following:
- Activate a PMPro Premium license to waive the application fee.
- Switch to using your own Stripe Restricted API keys by following this documentation (bypassing Stripe Connect).
Video: PMPro v3.5 Feature Tour
How to Update to PMPro v3.5
You can update to PMPro v3.5 directly from the Dashboard > Updates screen in the WordPress admin or download the latest version here.
Before Updating:
- Backup Your Site: Always create a full backup before making major updates.
- Check Custom Code and Add Ons: If you have customizations or third-party integrations, test on a staging site first.
- Review the Full Changelog: See the detailed list of changes below.
This release continues our commitment to building the most flexible and powerful open source membership platform. Thanks for being part of the PMPro community—we can’t wait to see what you build next.
PMPro v3.5 Full Changelog
- FEATURE: Now using Action Scheduler to handle scheduled tasks.
- FEATURE: Now allowing files to be restricted using the new
pmpro_can_access_restricted_file
filter. This is currently used to ensure that log files generated during gateway webhook handlers can only be viewed by administrators. - FEATURE: Added content restriction settings when using Bricks Builder.
- ENHANCEMENT: Added additional widgets to the Memberships > Dashboard page and updated the layout to be more customizable.
- ENHANCEMENT: Updated the Memberships > Settings > Payments settings page UI to have a separate page for each gateway.
- ENHANCEMENT: Updated orders search to support searching by specific properties using
[property]:[value]
. - ENHANCEMENT: Now adding the option to automatically install the Update Manager during the setup wizard.
- ENHANCEMENT: Updated the content restrictions in Elementor to match how restrictions are set in the block editor.
- ENHANCEMENT: Now encoding the
pmpro_last_known_url
option to improve compatibility between “pause mode” and site migrations. - ENHANCEMENT: Now allowing linking to a filtered result via URL parameters on the Memberships > Add Ons page.
- ENHANCEMENT: Now supporting showing information from level meta when using the
[pmpro_member]
shortcode. - ENHANCEMENT: Added new functions
pmpro_get_countries()
andpmpro_get_default_country()
to avoid relying on global variables. - ENHANCEMENT: Added new hooks
pmpro_added_subscription
andpmpro_updated_subscription
. - ENHANCEMENT: Added a new filter
pmpro_deprecated_gateways
to allow developers to filter the list of deprecated gateways. - ENHANCEMENT: Updated the
PMPro_Email_Template
class to streamline the process of sending test emails for each email template. - ENHANCEMENT: Updated Wisdom data sharing to be an opt-out system. This will not change the selected option for existing sites.
- ENHANCEMENT: Added a new
pmpro_no_download
parameter to CSV exports to prevent downloading the CSV file during Toolkit tests. - BUG FIX/ENHANCEMENT: Now syncing application fees with Stripe before recurring payments are charged to ensure that fees reflect whether the site has an active license key.
- BUG FIX/ENHANCEMENT: Improved accessibility for the hidden honeypot field on the checkout page.
- BUG FIX/ENHANCEMENT: Now using a
MutationObserver
instead of the deprecatedDOMSubtreeModified
event to detect changes to the checkout message container. - BUG FIX/ENHANCEMENT: Improved the error message wording for subscriptions with the
level ID
set to0
. - BUG FIX/ENHANCEMENT: Now trimming whitespace for user field options where only the value is provided.
- BUG FIX/ENHANCEMENT: Now avoiding extra whitespace in the payment description sent to PayPal Express.
- BUG FIX: Fixed an issue where membership expiration emails may show the incorrect level name for users who have multiple levels.
- BUG FIX: Fixed a PHP error on the sales reports page and fixed some closing HTML tags that did not match.
- BUG FIX: Fixed an issue where application fees were not set correctly when setting up Stripe subscriptions.
- REFACTOR: Now using the
Gocodebox_Banner_Notifier
class to display banner notifications. - DEPRECATED: No longer using crons for scheduled tasks and removed the
/scheduled/
directory. - DEPRECATED: Marked the
pmpro_set_application_fee_percentage
filter and the reduced Stripe application fee as deprecated.
PMPro v3.5.1 Full Changelog
- ENHANCEMENT: Added caching to the
pmpro_getMembershipCategories()
function to improve performance. - ENHANCEMENT: Optimized the query used to retrieve the list of members to show in the Members List table.
- BUG FIX: Removed code added in 3.5 that would slow down the query to retrieve the list of members to show in the Members List table.
- BUG FIX: Fixed an issue where the subscription ID may not be shown in some Stripe webhook log messages.
PMPro v3.5.2 Full Changelog
- BUG FIX: Fixed an issue where members may receive multiple recurring payment reminder emails for the same payment.
- BUG FIX: Fixed an issue where gateway settings may not show for some gateways.
- BUG FIX: Fixed an issue where “Recent Members” metabox may not show correctly on websites using custom database table prefixes.
- BUG FIX: Fixed a PHP error that would occur when the
post__not_in
parameter ofWP_Query
is not an array. - BUG FIX: Added back a missing argument for the deprecated
pmpro_email_template
filter.