Version 2.4 of Paid Memberships Pro is out with a handful of bug fixes. We have also added two new features related to Stripe Webhook setup and email deliverability via SendWP.

The bug fixes and enhancements in this release have the potential to hinder sales, so be sure to upgrade.

Development Changelog for Paid Memberships Pro Release Updates

Stripe Webhook: One-Click Setup

v2.4+ of Paid Memberships Pro now includes a button to create and validate the correct webhook for membership sites using the Stripe gateway.

After inserting your Stripe live or test API keys, you should click the “Create Webhook” button. If your API keys are correct, the webhook will be created in your Stripe account with all of the required events for Paid Memberships Pro.

Stripe Gateway Settings: Create Webhook Button
Stripe Gateway Settings: Create Webhook Button
Stripe Gateway Settings: Webhook is Enabled
Stripe Gateway Settings: Webhook is Enabled

Video Demo


SendWP Integration

By default, all transactional email sent through your WordPress site is routed through the mail server configured by your hosting environment. If you are having issues with email delivery from your server, please read our email troubleshooting guide here. We also occasionally recommend the Email Log plugin, which allows you to track what emails are being sent through your site.

There are several third-party services that provide improved delivery rates, tracking, and reporting for websites hosted on WordPress. Paid Memberships Pro now offers built-in integration for SendWP, an optional third-party service for transactional email in your WordPress site.

Read more about configuring SendWP for your Paid Memberships Pro site here.


Please update Paid Memberships Pro from the plugins page of your WordPress dashboard. You can also get the latest version of PMPro here or version 2.4 specifically here.


The full list of updates is below.

  • FEATURE: Now detecting if the Stripe webhook is set up correctly. You can now create or disable the webhook from the payment settings page in the WP admin dashboard.
  • FEATURE: Added a link to use and set up SendWP for more reliable email sending from WP. [docs]
  • BUG FIX: Fixed further issues with dates and timezones.
  • BUG FIX: Fixed issue where reports would cause white screens on some server set ups. We had some report start dates set to 1960, which caused issues. (Thanks, Sam “gausam” on GitHub)
  • BUG FIX: Fixed issue with the query to find expiring memberships that happened on certain MySQL setups.
  • BUG FIX: Fixed issue that was caused if other code called wp_login_url() too early.
  • BUG FIX: Fixed an error in the is_login_page() function.
  • BUG FIX: Fixed a fatal error that was happening in PHP 5.2 or earlier due to code syntax that was not supported then. We noticed a few other cases as well, but decided we won’t support PHP 5.2 consistent with WP and other plugins.
  • BUG FIX: Fixed the URL used when using 2Checkout (deprecated in v2.10) in sandbox mode.
  • BUG FIX: Fixed JavaScript errors that would occur sometimes on the Billing Update page when using the Stripe gateway.
  • BUG FIX: Fixed issue where the dummy $0 orders created when using the “Stripe Updates” feature weren’t saving with the updated subscription_transaction_id. This would prevent future payments from being linked to that user and could prevent subscriptions cancellations from being synchronized. When updating to PMPro 2.4, an update script will run to try to restore these subscription_transaction_id values. However, any recurring orders that occured when the id was missing will not be added to PMPro. You will have to update them manually.
  • BUG FIX: Fixed JavaScript error on the edit discount code page.
  • BUG FIX/ENHANCEMENT: Showing expiration date as text when it is set as a readonly field. (Thanks, Rodmar “rodmarzavala” on GitHub)
  • BUG FIX/ENHANCEMENT: Now checking if headers were already sent before trying to start the PHP session. If headers are sent before PMPro tries to start the session, there is usually another error somewhere on the WP site that needs to be fixed. But at least we aren’t adding to the confusion by trying to start the session late causing another error in the log.
  • BUG FIX/ENHANCEMENT: Updated misleading hint for the PayPal Express IPN URL on the payment settings page.
  • BUG FIX/ENHANCEMENT: Fixed invalid key description in the SQL in includes/setup.sql. The actually query used to set up table in PMPro was correct though. The setup.sql file is included for reference and developers who want to create the tables “manually” in MySQL.
  • BUG FIX/ENHANCEMENT: The pmpro_search_filter_post_types hook now supports cases where post_type set in WP_Query is an array.
  • BUG FIX/ENHANCEMENT: Fixed warning that showed when a user with no levels visited the frontend account page.
  • BUG FIX/ENHANCEMENT: Fixing warnings that would be logged at checkout in certain cases.
  • BUG FIX/ENHANCEMENT: Better handling of cases where users who checked out using a gateway different from the current setting are shown a message that they cannot update their billing information. They should instead checkout again to renew their membership.
  • ENHANCEMENT: Updated to use the latest version of the Stripe API and SDK.
  • ENHANCEMENT: More detailed logging for Braintree webhook debug emails.
  • ENHANCEMENT: Added a getTransactionStatus method to the PayPal and PayPal Express payment gateway classes. (Thanks, Mirco Babini)
  • ENHANCEMENT: Added a checkout_level API call. This will be used in the future to update the price total at checking using JS and is also needed to implement support for Google Pay and Apple Pay through Stripe.
  • ENHANCEMENT: Cleaned up the email settings page.
  • ENHANCEMENT: Better handling of some login and password reset errors.
  • ENHANCEMENT: Added links to the PMPro YouTube and Facebook profiles.
  • REFACTOR: Cleaned up some code in includes/content.php, especially around the pmpro_search_filter() function.
  • REFACTOR: Removed the package-lock.json file from the repository.
Was this article helpful?
YesNo