Simple Membership


A flexible, well-supported, and easy-to-use WordPress membership plugin for offering free and premium content from your WordPress site

The simple membership plugin lets you protect your posts and pages so only your members can view the protected content.

Unlimited Membership Access Levels

Set up unlimited membership levels (example: free, silver, gold etc) and protect your posts and pages using the membership levels you create.

User Friendly Interface for Content Protection

When you are editing a post or page in the WordPress editor, you can select to protect that post or page for your members.

Non-members viewing a protected page will be prompted to log in or become a member.

Have Free and Paid Memberships

You can configure it to have free and/or paid memberships on your site. Paid membership payment is handled securely via PayPal. Membership payment can also be accepted using Stripe or Braintree payment gateways.

Both one time and recurring/subscription payments are supported for PayPal and Stripe.

You can accept one time membership payment via Braintree payment gateway.

Option to make membership payment buttons using the new PayPal Checkout API.

There is also option to use PayPal smart buttons for membership payment.

You can enable email activation or email confirmation for the free memberships.

Membership Payments Log

All the payments from your members are recorded in the plugin. You can view them anytime by visiting the payments menu from the admin dashboard.

Developer API

There are lots of action and filter hooks that a developer can use to customize the plugin.

There is also an API that can be used to query, create, update member accounts.

Member Login Widget on The Sidebar

You can easily add a member login widget on the sidebar of your site. Simply use the login form shortcode in the sidebar widget.

You can also customize the member login widget by creating a custom template file in your theme (or child theme) folder.

Option to show a password visibility toggle option in the login form.


Read the setup documentation after you install the plugin to get started.

Plugin Support

If you have any issue with this plugin, please visit the plugin site and post it on the support forum or send us a contact:

You can create a free forum user account and ask your questions.


  • Works with any WordPress theme.
  • Ability to protect photo galleries.
  • Ability to protect attachment pages.
  • Show teaser content to convert visitors into members.
  • Comments on your protected posts will also be protected automatically.
  • There is an option to enable debug logging so you can troubleshoot membership payment related issues easily (if any).
  • Ability to customize the content protection message that gets shown to non-members.
  • Ability to partially protect post or page content.
  • You can apply protection to posts and pages in bulk.
  • Ability to use merge vars in the membership email notification.
  • Membership management side is handled by the plugin.
  • Ability to manually approve your members.
  • Ability to import WordPress users as members.
  • Search for a member’s profile in your WP admin dashboard.
  • Filter members list by account status.
  • Filter members list by membership level.
  • Can be translated to any language.
  • Hide the admin toolbar from the frontend of your site.
  • Allow your members to delete their membership accounts.
  • Send quick notification email to your members.
  • Email all members by membership level, with an option to filter by account status.
  • Customize the password reset email for members.
  • Use Google reCAPTCHA on your member registration form.
  • Use Google reCAPTCHA on your member login and password reset form.
  • The login and registration widgets will be responsive if you are using a responsive theme.
  • Ability to restrict the commenting feature on your site to your members only.
  • Front-end member registration page.
  • Front-end member profiles.
  • Front-end member login page.
  • Option to configure after login redirection for members.
  • Option to configure after registration redirect for members.
  • Option to configure after logout redirection for members.
  • Option force the members to use strong password.
  • Option to make the users agree to your terms and conditions before they can register for a member account.
  • Option to make the users agree to your privacy policy before they can register for a member account.
  • Option to automatically logout the members when they close the browser.
  • Ability to forward the payment notification to an external URL for further processing.
  • Option to configure whitelisting for user email addresses to allow registration only from specific email addresses or email domains.
  • Option to configure blacklisting for user email addresses to block registration from certain email addresses or email domains.
  • Option to configure PayPal payment buttons for memberships (one-time and recurring payments).
  • Option to configure Stripe payment buttons for memberships (one-time and recurring payments).
  • Option to configure Braintree payment buttons for memberships (one-time payments).

Language Translations

The following language translations are already available:

  • angleščina
  • nemški
  • francosko
  • španski
  • Spanish (Venezuela)
  • Chinese
  • Portugalski (Brazil)
  • Portugalščina (Portugalska)
  • Švedski
  • Makedonski
  • poljski
  • turška
  • Ruščina
  • Nizozemski (Nizozemska)
  • Dutch (Belgium)
  • Romunski
  • Danish
  • Litvanski
  • Srbski
  • Japonski
  • Greek
  • Latvijski
  • Indonezijski
  • hebrejščina
  • Katalonski
  • Hungarian
  • Bosnian (Bosnia and Herzegovina)
  • Slovak
  • Italian
  • Norwegian
  • Mexican
  • Arabic
  • Czech
  • Finnish

You can translate the plugin using the language translation documentation.

Arbitrary section



This plugin provides 1 block.

  • Simple Membership


Do the following to install the membership plugin:

  1. Upload the ‘’ file from the Plugins->Add New page in the WordPress administration panel.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.


Where can I find complete documentation for this plugin?

You can find the full documentation for this plugin on the Simple Membership plugin documentation page.


26 marca, 2024 1 reply
Provided the right solutions to my needs. Easy to use.
24 februarja, 2024 1 reply
This is one of those rare plugins that has been designed and developed brilliantly and backed up by addons that are specific to each developers needs. The basic Plugin is excellent and works very well. The support is right up there as one of the best, provided by pleasant, polite experts who who should be proud of what they have developed. I simply don't understand some of the negative reviews. My experience has been excellent and even the free support has been within 48 hours and provided the perfect solution, free! Good luck to the developers and I look forward to more plugins from you 🙂
1 februarja, 2024 2 replies
Could be a great plugin, but e.g. for viewing a list of members, you need to install a paid addon. And looking at the list of freed addons vs paid addons, I'm guessing what I need is mostly ... paid. At 30+ eur/USD per addon, this is way too steap for me.
Read all 400 reviews

Contributors & Developers

“Simple Membership” is open source software. The following people have contributed to this plugin.


“Simple Membership” has been translated into 12 locales. Thank you to the translators for their contributions.

Translate “Simple Membership” into your language.

Interested in development?

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



  • The accepted payment method types can now be controlled from your Stripe account settings. This will allow you to enable/disable certain payment methods.
  • Updated the documentation link for the Stripe Subscription button configuration.
  • Enhanced the auto-login feature’s redirect URL handling for better compatibility with some servers.
  • New registration and profile form UI and validation is the default UI for all new installs. The old UI can be enabled from the advanced settings menu.
  • Added Arabic translation files to the plugin. Thanks to @Adham.
  • Added output escaping to the new registration and edit profile forms.


  • Added an option to specify a cancel URL for Stripe buy now button.
  • The PayPal order ID is also passed to the PayPal payment capture API call’s header.
  • Added a check for the PayPal Buy Now payment capture status in the IPN handling script.
  • Updated the Spanish language translation file.
  • Minor spelling mistake fixed.


  • Added ‘Cayman Islands’ to the country dropdown list.
  • The unique session ID generation process improved.
  • The PayPal Token cache will be deleted automatically if the Live/Test mode option is changed in the settings menu.
  • Fixed an issue with the PayPal test/live mode toggle issue with the new API.


  • Added a new feature in the ‘Bulk Operation’ menu tab to allow bulk update members account status.
  • Improved the email validation in the new registration form UI.
  • Updated the Spanish language translation file.
  • Changed the aciton hook name ‘swpm_login’ to ‘swpm_after_login_authentication’ to describe the hook better.
  • The after login redirection feature won’t be application when the login form originates from the WP Login form.
  • This will remove confusion for some users when they login from the standard WP login form (not the simple membership’s login form) and then the page redirects to the after login redirection URL.


  • Note: Significant updates have been made to the PayPal’s new API related code in this release. Please take a backup of your site before updating.
  • The ‘Payment Settings’ tab has been moved to the ‘Payments’ menu. Allowing all payment configuration related functions to be under one menu.
  • The ‘Payment Settings’ menu has been divided into multiple sub-menus for better organization.
  • Added a new option in the PayPal API tab to allow manual deletion of the PayPal API access token cache.
  • The PayPal buy now (New API) button’s JavaScript code has been updated to reflect the latest PayPal API related changes.
  • If WP Login form is used, our plugin will let WP handle the post-login redirection.
  • Honor the ‘redirect_to’ parameter in the post login redirection function.
  • Added an empty check to the Stripe buy now IPN handling function.
  • Translation improvement for ‘activation-required’ account status display in the user’s profile.
  • Better formatting for the admin edit interface error message.
  • Added output escaping in the new PayPal API settings tab.
  • Added a new filter ‘swpm_send_direct_email_body_settings’.
  • The following new options has been added in the ‘Send Direct Email’ feature. Thanks to Dennis.
  • Send Direct Email -> Send email based on member’s account status.
  • Send Direct Email -> Send a copy of email to the site admin.
  • Send Direct Email -> List email recipients as a preview.


  • Minor translation related update in the admin edit member interface.
  • Fixed an issue with the new PayPal buy now type button not rendering correctly with the item description.


  • Added new form and validation Interface for registration and edit profile forms.
  • New settings field added to turn on/off the new UI for the registration and profile forms. This option is located in the Advanced Settings menu.
  • The goal with this new option is to offer a more mobile responsive UI for the registration and profile forms.
  • Added a new action hook (swpm_before_login_form_widget) in the login.php file.
  • Added a new action hook (swpm_before_loggedin_widget) in the loggedin.php file.
  • The edit membership level interface shows the currently editing membership level’s ID.
  • Added a new action hook (swpm_front_end_reset_password_using_link_completed). Thanks to @MedTRGit.
  • Updated the translation POT file.
  • Refactored the Stripe session create code to a separate class.
  • Filter hooks updated to to customize password validation rules and messages for the new form UI.
  • Updated the Swedish translation files.


  • Added output escaping to the ‘list_type’ parameter in the ‘Post and Page Protection’ menu tab.


  • Updated the German language translation file. Thanks to Stefan.
  • Show strong password requirement message on the password reset page (if the feature is enabled). Thanks to Darwin for submitting this update.
  • After submitting the password reset form, a message displaying “Processing request” is shown. Thanks to Darwin for submitting this update.
  • Added a new filter hook for the Thank You page message.
  • Fixed a small bug with the newly added “Send Direct Email” feature. It was not setting the “From Email Address” field’s value.
  • Added a new option labeled “Default Account Status After Payment”. This should be helpful with certain types of manual approval configuration.
  • Updated the code so it stops going forwared if the update user command fails.
  • Added validation to the password reset by link feature. Thanks to Rafie for the report.


  • Readability improvement for the ‘remember me’ checkbox field’s code.
  • Spanish language translation file updated.
  • Added more debug logging text to the Stripe webhook handling script.
  • Added CSS class to the notice message output.
  • Allow any field with class ‘swpm-date-picker’ to use the datepicker function in the members menu.
  • Added a new hook that gets triggered when the account status is updated to expired in the daily cronjob.
  • Added a new hook that gets triggered when an existing member pays for a membership and the account status is refreshed.
  • The original transaction post ID is saved with the user profile for Stripe subscription transactions.


  • Added new feature to confiugre an “after email activation redirection” for any membership level.
  • Renamed the SimpleWpMembership::wp_logout() function to SimpleWpMembership::wp_logout_handler().
  • The auth cookie will be set to session cookie if the ‘force-wp-user-sync’ feature is enable when ‘remember me’ is unchecked.
  • Added a silent logout option so the logout function can be called without triggering the action hook.
  • Added the ‘swpm_subscription_payment_cancelled’ hook to the cancel stripe subscription via URL feature.


  • Added CSS to highlight the order status in the payments menu.
  • Added a new utility function compare_url_without_http(). This function is used for matching the system generated pages.
  • Added a new CSS div for the activation required error message.
  • New Gutenberg Block for Payment Buttons.
  • Updated the system page URL check function to include the edit profile, join and the password reset pages.
  • New feature to send direct email to a group of members (for example: send an email to all members of a membership level).
  • Minor PHP 8.2 related deprecation notice fixes.


  • Updated the Turkish language translation file.
  • Minor – Spelling mistake fixed in the Blacklisting feature.
  • Fixed Warning: Undefined variable $all_items
  • Stripe Buy Now button’s webhook handling code updated for the new Stripe API version.


  • Regenerated the Translation POT file.
  • Language strings updated in various admin interfaces.
  • Removed the use of the FILTER_SANITIZE_STRING flag for PHP8.1 compatibility.
  • Minor enhancement – verify the custom field value is set in the IPN data.
  • Updated the session variable name in the SwpmMessages class.
  • Fixed an issue with the password reset using link option showing an incorrect message after the reset operation is successful.
  • Enhancement to the ‘user can delete account’ feature. The page title, header and the confirmation text is worded better.
  • Accessibility related updates to the “Show Password” checkbox of the login form.


  • Added filter hooks to the Thank you page output message so it can be customized using custom code.
  • The address data (if available) will be collected when using the new PayPal checkout buttons.
  • Fixed a warning that was generating after Stripe Buy Now button checkout.
  • Added a new option so the directory listing addon can display the address fields separately (by using shortcode parameters).


  • The country code from Stripe webhook notification is now converted to the full country name for better selection in the dropdown menu.
  • Prevent the newly added unique registration link validity check from incorrectly showing on registration form submission.
  • Removed the option to create new Smart checkout buttons as it has been deprecated by PayPal. You can get the same functionality from the new PayPal checkout buttons that have been added to the plugin.
  • Note: All the existing paypal buttons will continue to work as usual. We have added the new PayPal buttons as per PayPal’s guidelines to make sure that in the future the plugin remains compatible with PayPal’s latest API.


  • Added an alternative method of getting the URL if SERVER_NAME is not set in an install.
  • Fixed an error that was triggering after the transaction.


  • Spelling mistake fixed in the PayPal button creation interface.
  • Regenerated the translation POT file.


  • Added new membership payment button options using the new PayPal API. You can find it under the Create New Buttons menu tab.
  • Moved the Sandbox/Test Mode option to the “Payment Settings” tab.
  • Added an appropriate error message for when a user tries to re-use the special registration complete link.
  • Check if the registration completion link (if present in the URL) is valid. Show an appropriate error message to prevent confusion.
  • The bulk membership level change feature will update the WP user role also (if specified in the target membership level configuration).
  • The transactions in the payments menu can now be searched using a Subscriber ID values also.
  • Spanish language translation file updated.


  • Improved the enqueue_validation_scripts() function to work better with block themes.
  • Better Stripe payment button compatibility with some wp themes.
  • Improved the login form’s error message output. The error message will be shown in red so it is can be easily noticed.
  • Fixed the terms and conditions checkbox validation error not displaying correctly on some themes.
  • Fixed password reset success message showing an incorrect CSS class.
  • Regenerated the main translation POT file.


  • Added an option in the Stripe button configuration to use the Stripe’s automatic tax feature.
  • Usability improvement: the payment button shortcode can be selected easily (for better copy and paste operation).
  • Added an option to specify the payment_method_types parameter in the Stripe payment button shortcode. It can be used to enable ACH payment option for a specific Stripe payment button.
  • Fixed: The Payment Settings tab not showing the settings updated message correctly.
  • Fixed: The new password reset via link feature not seeing the already present {password_reset_link} email merge tag.


  • The Braintree transactions will send the customer’s name and email address to the API also.
  • Added a new filter hook to the registration form so that the strong password validation string can be overridden and customized.
  • Added a new filter hook to the edit profile form so that the strong password validation string can be overridden and customized.
  • The get_current_page_url() function will clean the 8080 port number from URL for better compatibility on some servers.
  • Added output escaping to the payment button shortcode.
  • Added a new option in the settings menu to offer password reset function using a reset link.


  • Updated the Braintree payments integration to require the customer’s name and email address during checkout.
  • Updated the Spanish Mexican language translation file.
  • Updated the default content protection message.
  • Updated the text of the login form button.
  • Added sanitization to the email body fields.


  • Braintree SDK updated for the Braintree payment gateway.
  • Google reCAPTCHA enterprise option is now available as a free addon.


  • Stripe Button’s code updated to use the latest Stripe API version.
  • Allow apostrophe character in the email address field of the registration form.
  • Preserve address information of a profile when submitting the registration form (if the data was received from the payment gateway).
  • Added a workaround for sites using the Batcache caching system.
  • Updated the swpm_admin_members_table_column_ filter hook to check if the column value exists.
  • Fixed an issue with the email address whitelisting pattern feature.
  • Improved how the current_page URL value is retrieved for the Stripe payment buttons.


  • Improved the view debug log operation to check if the file exists before trying to open the file. If the file doesn’t exist, it will show a message to reset the debug file.


  • Added a new Blacklisting & Whitelisting feature. Usage documentation here
  • The member search option in the members interface will now work correctly with names containing apostrophe character.
  • Added a new filter hook in the password reset function: swpm_password_reset_generated_pass
  • Optimized the Stripe library loading for Stripe payment buttons so it can work with the partial protection addon.
  • If after login redirection addon is not used, the redirection after login will be sent to the current page instead of the home URL.


  • Added a new action hook – swpm_front_end_edit_profile_form_submitted.
  • Added a new action hook – swpm_do_init_time_tasks_front_end.
  • Translation POT file has been regenerated.
  • Apostrophe characters will now be accepted in the name and address fields.
  • Fixed the validation error message positioning in the edit profile form when Force Strong Password option is enabled.


  • Added a new feature to toggle password visibility option in the login form. Password toggle documentation
  • Updated the Dutch language translation files.
  • Fixed a minor PHP notice with PayPal smart checkout button configuration.


  • PayPal smart checkout will pass the item name set in the payment button to PayPal’s API.
  • The PayPal smart checkout transactions will try to find a member profile using the Transaction ID and show it in the Transactions tab (if found).
  • WooCommerce checkout integration will add the collected billing address to SWPM member record when available.


  • Added a warning in the edit member interface for situation when a member account is created without a membership level value.
  • Small user edit interface improvement.
  • Added ‘French Polynesia’ country to the countries dropdown list.
  • Removes the membership_level data (if posted) from the edit profile update operation (since this data is not needed for this operation). Thanks to Vladimir for pointing this out.
  • Added an additional hash check for the level_identified on registration form.


  • Fixed a minor Undefined array key warning.


  • Tested on WordPress 6.0.
  • Added output escaping to the email validation ajax request.
  • Added output escaping to the username validation ajax request.
  • Added sanitization to the account status field of the member listing page.
  • Removed some use of the FILTER_SANITIZE_STRING flag to be compatible with PHP8.1.


  • Added the text ‘Username or Email’ to the language translation POT file.
  • Added a new action hook (swpm_front_end_registration_form_submitted) for when the front-end registration form is submitted
  • Added nonce check for the “Delete Transaction” action in the payments menu.


  • Added do_blocks() to the more tag protection feature’s content formatting to improve compatibility with the link preview plugin. Thanks to @brechtvds for providing the code adjustment.
  • Added a new filter for the more tag protection feature (swpm_format_raw_content_for_front_end_display).
  • Added a new filter for the login form action message output (swpm_login_form_action_msg).
  • Added a new filter for the “Hide Registration Form to Logged Users” feature. It will allow additional content to be added below the message.
  • Added a new filter for the user delete action.
  • Updated the Norwegian language file.
  • Added nonce check to the bulk delete feature of the members menu.


  • Added a new utility function in the plugin to retrieve wp user roles by ID.
  • Added French (Canadian) language translation file to the plugin. Thank you to Ariane Larivière.
  • Added a check to prevent an extra empty line output with a notice/message.
  • Updated the HTML ID value for the privacy policy checkbox item.
  • The debug log file names are uniquely generated on per install.
  • Added nonce check to the debug log file reset action.


  • Stripe sca subscriptions enhancement: restore the custom field value from the original webhook notification (when available).
  • Custom fields data (if available) is also saved in the swpm_transactions custom post type after a transaction.
  • Updated the Dutch language file.
  • Integration with the WP Express Checkout plugin.
  • WordPress 5.8 compatibility.


  • Added an option in the [swpm_paypal_subscription_cancel_link] shortcode to allow opening the window in a new tab.
  • Added an option in the [swpm_paypal_subscription_cancel_link] shortcode to add CSS class for customization purpose.
  • Added a new shortcode to display the total number of members (just display the total number). This shortcode is available in the free Miscellaneous Shortcodes addon.
  • Fixed a calculation in the auto delete pending email activation data function. Thanks to @satoshi for pointing it out.
  • Spelling fixes for some of the description field and error messages. Thanks to @Ronaldo for pointing it out.
  • Regenerated the language translation POT file.
  • Updated the Spanish language file.
  • Updated the Czech language file.


  • Added a new filter hook to allow overriding of the display_name field when adding a member via the admin interface.
  • Added a new filter hook to allow overriding of the account status value when a subscription renewal payment comes in. The filter name is: swpm_account_status_for_subscription_start_date_update
  • Added slovenian language translation file to the plugin.
  • The {membership_level_name} email merge tag will now work for the “Notify User” feature that can be used when editing a member’s profile (from the admin dashboard).
  • Updated the Dutch translation file.
  • Fixed the positioning of the validation result message for the username field in the “Add New Member” interface.


  • Added a new filter to allow overriding the auth cookie value for when the “Logout Member on Browser Close” feature is enabled.
  • Updated the Swedish translation file.
  • Added more sanitization to the search query of members and membership level menu in the admin interface. Thanks to @Martin Vierula for pointing it out.


  • WP 5.6 compatibility update with jQuery script. This will fix an issue whereby error messages on registration form weren’t showing correctly.


  • Added a new filter “swpm_admin_registration_add_user_template_path”
  • Added a new filter “swpm_admin_registration_edit_user_template_path”
  • Added an option to auto downgrade expired members to a free level. This feature is handled via the following addon:
  • Fixed a typo in a variable name.
  • The “Gender” value in the members menu is translatable. Thanks to @Th0masL for making this improvement.
  • Updated the French language translation file.
  • The “Bulk Account Activate & Notify” option now sends the email one by one to all the selected members (instead of a batch email). To prevent email issue when used with SMTP solution.
  • Added more filters in the registration, edit profile and login forms.
  • The Stripe SDK library has been updated to latest. Minimum PHP version required for it is PHP5.6
  • Added new shortcode for Stripe subscription cancellation. The new shortcode is: [swpm_stripe_subscription_cancel_link]
  • Added a check to prevent duplicate IPN notification creating duplicate entries. Thanks to @Th0masL for making this improvement.


  • Added the “Button Image URL” field for the Stripe Buy Now type buttons (to allow button image customization).
  • The user role options for the “Admin Dashboard Access Permission” settings field will show the translated values.
  • The settings menu update capability will also respects the “Role” permission set in the “Admin Dashboard Access Permission” settings.
  • Added a check to see if an username exists in the create_wp_user() function.
  • Stripe SCA Subscription button configuration interface – renamed the label from “Stripe Plan ID” to “Stripe API ID” (to match with Stripe’s recent interface changes).


  • Removed the “Use WordPress Timezone” settings option from the advanced settings menu. This option can conflict with some events management type plugins.
  • The plugin will now record the date values according to your WordPress timezone settings (by default).
  • The debug log file will record timestamp values in the format [‘Y/m/d H:i:s’]. Example Value: [2020/07/24 11:58:39]
  • Added help text to the “Admin Dashboard Access Permission” field to explain that it should not be used with the “Disable Access to WP Dashboard” option.
  • Added a note for when a user enables conflicting options in the advanced settings.
  • Completed testing on WP 5.5 version.


  • Added an enhancement to accept empty address value and force updating (when admin updates the address of a member profile from admin interface).


  • Added a new action hook ‘swpm_validate_login_hash_mismatch’
  • Ability to manually add a transaction record in the Payments menu of the plugin
  • Added a new feature to hide the registration from to logged-in members. The new option is available in the Advanced settings menu.


  • Added minor improvements to the get_current_page_url() function to increase compatibility with some servers.
  • The mini login shortcode will also work with the “Enable Redirect to Last Page” feature from the after login redirection addon.
  • Updated the Japanese language translation file.
  • Minor Stripe SCA button related enhancements (added filter).
  • Stripe buy now transactions (One-time payments) will now have a link to the user “profile” in the “payments” menu.
  • Chinese language file name changed from zh_Hans to zh_HK.


  • Added a new global settings for Stripe API keys in the “Payment Settings” tab. It can be used to enter your API keys (instead of individual buttons each time).
  • Added a new filter to allow customization of the email activation message (if the email activation feature is enabled).
  • The subsequent payments for stripe subscription will also be captured in the payments menu. Need to add the “invoice.payment_succeeded” to the webhook events monitoring.


  • Added a new filter (swpm_mini_login_output). It can be used to override the [swpm_mini_login] shortcode’s output.
  • The “Edit” link in the members menu has been renamed to “Edit/View” to make it more user-friendly.
  • Updated the German language file.
  • The members listing in the members menu can now be sorted by the “Access Starts” column.
  • Fixed an issue with Stripe SCA buttons whereby duplicate “incomplete” entries were being created. This started happening recently from a new change that Stripe made.


  • Commented out call to date_default_timezone_set() function for WP5.3.
  • Updated some comments in the SwpmAjax class.
  • Added an extra content protection check for post preview URL.


  • Added the option to enable HTML email in the email settings menu of the plugin.
  • The Stripe subscription updated event is now handled by the plugin.
  • A new shortcode to create a PayPal subscription cancellation link that a member can use to view the subscription from their account and cancel.


  • Spanish translation language files updated.
  • Added more debug logging statement in the IPN handling script for easier troubleshooting.
  • Fixed an issue with the new SCA stripe subscription cancellation webhook.


  • Fixed excessive debug log output in the log file when the New SCA compatible Stripe subscription button is used.
  • Stripe library is only loaded if another plugin hasn’t loaded it already.


  • Added new Stripe SCA button types. You can now go to the Payments -> Create New Button interface to create SCA compatible Stripe payment buttons.
  • Please note that we have tested the new SCA compatible buttons. However, it may have some compatibility issues that we will be addressing over the next few days as we receive feedback from the users.


  • Added a new feature in the email settings menu to allow disabling of the “Account Upgraded” email notification.


  • The expiry date in the login widget now shows the translated date value for Non-English installs.
  • Updated the German language translation files.
  • Integration with the Super Socializer plugin for social login.


  • Removed a PHP warning in the wp_password_reset_hook(). Thanks to John Wick for pointing this out.
  • Small improvement to the PayPal subscription IPN handling script.


  • Added nonce check to the “Addons settings” tab.


  • Fixed CSRF issue in the Bulk Operation menu tab.
  • Fixed Braintree payment issue that could occur if customer pays via PayPal.
  • Fixed Stripe library conflict if other Stripe plugin is installed.
  • Added support for the coupons addon.
  • Added current_user_can() check to the admin menu handling function.
  • Added nonce check to wp_ajax.


  • More strings from the settings admin interface of the plugin are translatable.
  • The strong password validation error message is now translatable (if you are using this feature).
  • Minor enhancement in the PayPal IPN handling code.
  • Fixed an issue with some profile data not updating when password is also updated at the same time.


  • Updated Braintree PHP SDK to prevent deprecation notice when using PHP 7+.
  • The “Expiry Date” of a member is now shown in the member’s profile of the admin dashboard.
  • Compatibility with Wordfence plugin’s captcha feature.
  • German translation file updated.
  • Japanese translation file updated.


  • Added membership level and account status filter in the member search function (Members menu of admin dashboard).
  • Updated the Polish language translation.
  • Added a filter hook in the get_current_page_url() function.


  • [Important Note] If you are using the Braintree gateway, please take a backup before updating. Do a test transaction using Braintree gateway on live mode to make sure the new 3D Secure changes are working fine.
  • Added 3D Secure support for Braintree payment gateway buttons. It automatically tries to detect if 3DS is enabled, then shows the additional steps.
  • Added note for email activation feature regarding temporary passwords storage.
  • Added “swpm_email_activation_data” filter to modify user email activation data.


  • Email activation’s temporary data is now stored in an encrypted format.
  • Fixed email activation data leftovers removal in the DB.
  • Updated some translation strings.


  • Added new shortcode [swpm_show_after_login_page_link] via the swpm misc shortcodes addon.
  • More characters are now allowed in the “username” field.
  • Fixed a minor bug with the plugin not finding the corresponding member’s profile when a subscritpion is canceled.


  • Added a new feature to allow forwarding of the payment notification to an external URL. This option can be found in the “Advanced Settings” of the plugin.
  • The “Forgot Password?” translation string in the login form will allow the “?” character to be translated/customized.
  • Fixed a PHP7 related warning.
  • Updated some translation strings.
  • Corrected an spelling mistake.


  • Added a new filter hook that can be used to override the account status of the email activation feature. swpm_activation_feature_override_account_status
  • Added email activation support for Form Builder.


  • Updated the DB version number.
  • Updated the German language file.

  • Fixed a minor bug with the new email activation feature.
  • Changed Stripe plan name to use the nickname.


  • Added a new feature to enable email activation/confirmation. Useful if you want to enable this for your free membership level.
  • Username can only contain: letters, numbers and .-*@. This is so the username field accepts what is allowed by WordPress for that field.
  • Added a new utility function.
  • Added a function to show formatted expiry date.


  • Stripe Subscription now considers plan trial period settings.
  • Added CSS class names to the fields in the admin add/edit members interface.
  • Added more translatable strings to the POT file.
  • WordPress 5.0 compatibility


  • Created a new free addon to offer full page style protection.
  • The mini login shortcode output is now translatable
  • Fixed Smart Checkout buttons were not working in live mode under some circumstances
  • Fixed minor display issues for PayPal Smart Checkout buttons


  • Added a new feature that allows you to automatically logout the users when they close the browser.
  • Added support for Two-Factor Authentication addon.
  • Added a new utility function.
  • Improved the social login functionality.


  • Moved the IPN handling code from “init” hook to “wp_loaded” hook for better compatibility.
  • The configuration fields for “Publishable” and “Secret” keys for Stripe has been swapped. This will align them better with how you get the info from your Stripe account.


  • Added PayPal smart checkout button option.
  • Added a new filter hook swpm_edit_profile_form_before_username
  • Added a new filter hook swpm_edit_profile_form_before_submit


  • Added …