The official release of Paid Memberships Pro v3.7 is here. This release focuses on member experience, communication, and admin efficiency. We’ve added native profile picture support, introduced Liquid syntax in email templates, built a full email log, and delivered powerful new tools for navigating and managing your membership site.
PMPro v3.7 builds on the groundwork laid in v3.6, bringing more flexibility to email customization, more visibility into member communications, and more control over orders and subscriptions. This update helps site owners and developers run a more transparent and organized membership business.
The rest of this post covers these key updates in more detail and highlights other enhancements, bug fixes, and developer improvements. Keep reading to learn how to update to PMPro v3.7.
Video: PMPro v3.7 Feature Tour
We hosted a launch party on Monday, March 23rd at 11am ET. Watch the recording below as Kim Coleman and Sam Daugherty walk through everything new in Paid Memberships Pro v3.7.
Overview of Key Features in v3.7
Alongside numerous bug fixes and enhancements, below is an overview of the key features in PMPro v3.7.
Profile Pictures
PMPro v3.7 adds built-in profile picture support. Members can upload a custom avatar that replaces their Gravatar anywhere WordPress displays an avatar: in comments, on the membership account page, member directories, and more. You can even personalize the member’s experience by displaying their avatar anywhere in your site using the pmpro_member shortcode.

Profile pictures can be enabled in two ways:
- Sitewide: Enable for all users in Memberships > Settings > Advanced > Other Settings > Profile Pictures.
- Per level: Enable for specific membership levels by checking Enable Profile Pictures in the level’s Other Settings section.
When a member uploads an image, PMPro automatically crops it to a square, resizes it to a maximum of 1024px, and generates optimized sizes (96px, 256px, 512px) with retina support. The accepted file types are PNG, JPG, GIF, and WebP with a maximum size of 2 MB.
Members manage their profile picture from a dedicated Change Profile Picture page linked from their Membership Account. Administrators can also manage profile pictures from the Edit Member page in the admin.

Avatar file names are anonymized then stored in wp-content/uploads/pmpro-avatars/. Files persist even if a member’s level changes, so the photo keeps showing even if they later move to a level without profile picture access.
This feature replaces the need for the Basic User Avatars plugin or any other tools you used to support local avatars. If you’re currently using that plugin, you can deactivate it after enabling PMPro’s built-in profile pictures. Reach out to our support team for help migrating a previous avatar system to the PMPro way (we have some scripts).
Liquid Syntax in Email Templates
PMPro v3.7 introduces Liquid-style template syntax in email bodies, giving you conditional logic and text formatting without writing PHP.

Output tags let you display variables with optional filters:
{{ name | upcase }}
{{ discount_code | default: "None" }}
Available filters include upcase, downcase, strip, and default.
Conditional blocks let you show or hide content based on variable values:
{% if membership_level_name == "Gold" %}
Welcome to Gold! You have access to all content.
{% elsif membership_level_name == "Silver" %}
Welcome to Silver! Upgrade to Gold for full access.
{% else %}
Thanks for joining!
{% endif %}
Conditionals support comparison operators and boolean operators. You can check for empty values with the empty keyword, and nest conditionals inside each other.

Liquid syntax works alongside the existing !!variable!! placeholders. A new variable, {{ order_total_raw }}, provides the unformatted order total for use in numeric comparisons like {% if order_total_raw > 100 %}.
The email template editor includes a collapsible Advanced Email Template Logic panel with a quick syntax reference.

Email Template To, CC, and BCC Settings
Every email template now includes To, CC, and BCC fields directly in the template editor. Route specific notifications to additional team members, departments, or external systems: all without writing code.
You can use liquid placeholders in these fields, including {{ wordpress_admin_email }} and {{ user_email }}. Common use cases include:
- Sending admin checkout notifications to your sales team instead of the site admin.
- CC’ing a bookkeeper on every order-related email.
- BCC’ing your CRM inbox to automatically log membership communications.
Related: Customizing Email Templates
Admin Quick Search
A new search bar in the PMPro admin header lets you instantly find members, orders, subscriptions, levels, discount codes, settings pages, reports, and PMPro documentation.

Results are grouped by category and link directly to the relevant admin page. Quick search is fully keyboard navigable (arrow keys, Enter, and Escape) and respects WordPress capabilities so users only see results they have permission to access.
Email Log
PMPro now logs every email it sends, giving you full visibility into what was sent, to whom, and whether it was delivered.

Each log entry captures the recipient, sender, CC/BCC, subject, full email body, template name, sent/failed status, timestamp, and any error message. You can click any entry to view the complete email in a modal with both rendered HTML and raw HTML views.
Access the email log from Memberships > Reports > Email Log for a site-wide view, or from the Email Log panel on individual Edit Member pages for a member-specific view.
Email logs are automatically purged after 90 days to keep your database clean. You can disable all email logging, customize the retention period, and perform a one-click purge from the Email Settings screen.
By default, only PMPro emails will be included in the log. To include all emails sent by your WordPress site, use the pmpro_should_log_email filter.
Background Exports
Member and order CSV exports now run in the background using Action Scheduler. Large exports process without blocking your browser or causing timeouts.
Exports with 500 or more items automatically run in the background, processed in batches of 250. You can navigate away, keep working, or even close your browser. The export continues on the server. Completed files are available for download for 6 hours.
Stripe Async Webhook Processing
For high-volume sites, v3.7 introduces opt-in asynchronous Stripe webhook processing. Time-sensitive events (like checkout completions) still process immediately, while deferrable events (like renewal payments) can be queued via Action Scheduler.
This helps sites that experience heavy renewal traffic or encounter duplicate webhook processing. Enable it with the filter pmpro_stripe_webhook_enable_async_processing.
add_filter( 'pmpro_stripe_webhook_enable_async_processing', '__return_true' );
Orders and Subscriptions Admin Filters
The Orders and Subscriptions admin pages now include a collapsible sidebar filter panel, giving you powerful tools to narrow down your data without custom queries.

Orders can be filtered by Level, Status, Date Range (predefined or custom), Discount Code, Gateway, and Total (paid vs. free).
Subscriptions can be filtered by Level, Status (Active, Cancelled, Sync Error), and Gateway.

Click the Filter Results button to open the panel. A count badge shows how many filters are active, and each active filter displays a green dot indicator. Filters persist in the URL, so you can bookmark or share filtered views.
Site Health Information
PMPro v3.7 adds comprehensive debug information to the WordPress Site Health screen (Tools > Site Health > Info). The new PMPro section displays your payment gateway configuration, Action Scheduler health, membership levels, custom templates (with version comparison), library conflicts, and more.
A new site health test also checks for incorrectly named Add On folders and flags them as a critical issue, helping you catch installation problems before they cause errors.
Other Enhancements and Changes
Beyond the major features above, v3.7 includes several other improvements:
- Subscriptions admin: The Subscriptions admin page now follows the same view/edit pattern as the Orders page, with a consistent layout for viewing, editing, linking, and cancelling subscriptions.
- Billing page: The Billing page no longer redirects away after a successful billing update. Members stay on the page and see a confirmation message.
- reCAPTCHA v3 scoring: reCAPTCHA v3 now performs full score-based validation. PMPro evaluates the bot-likelihood score (default threshold: 0.5) and blocks low-scoring submissions. Customize the threshold with the
pmpro_recaptcha_v3_min_scorefilter. - New email variables: Added
{{ order_total_raw }},{{ order_gateway }},{{ wordpress_admin_email }}, and{{ pmpro_from_email }}. The{{ siteemail }}variable is soft-deprecated in favor of{{ pmpro_from_email }}. - Light/dark color scheme support: Frontend contextual messages now use the CSS
light-dark()function, automatically adapting colors when a WordPress theme declares a named color scheme. - Membership ID in member exports: The
membership_idfield is now included by default in member CSV exports. - Removed bundled translation files: Core translation
.poand.mofiles are no longer bundled with the plugin. PMPro now fully relies on our GlotPress server for translation management, reducing plugin file size. - Required PHP version updated to 7.4: The minimum required PHP version has been raised from 5.6 to 7.4.
- Admin toolbar accessibility: The admin toolbar menu items have been updated with improved screen reader text and
aria-hiddenattributes for better accessibility. - Members Per Level report caching: The Members Per Level report is now cached for improved performance on sites with many levels.
- Block editor compatibility: Moved to
enqueue_block_assetshook and resolved block editor warnings. - Capability updates: Changed capability check for admin user fields to
pmpro_edit_membersand added capability check for PMPro restricted directory access. - Removed
SQL_CALC_FOUND_ROWS: Replaced the deprecated MySQL modifier with a standardCOUNT()query for better database compatibility.
Deprecations
- Subscription Check Add On: This Add On is deprecated. The subscription verification functionality it provided is now handled natively by the core plugin.
pmpro_doing_webhook()read usage: Reading webhook status via this function is deprecated. The function still works for setting webhook status, but using it to check whether a webhook is processing will trigger a deprecation notice.
How to Update to PMPro v3.7
You can update to PMPro v3.7 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.
Providing Feedback on PMPro v3.7
Here’s how to share your feedback.
- Slack Community Members can share feedback in the
#devSlack channel. Join the Free Slack Community here. - If you do not wish to join the Slack Community, please submit your findings to us via our Contact Us page.
- Developers can open an issue and submit a pull request through our GitHub repository.
Your insights and contributions are invaluable to the improvement of PMPro.
PMPro v3.7 Full Changelog
- FEATURE: Added native profile picture (avatar) support, allowing members to upload custom avatars managed entirely within PMPro instead of relying on Gravatar.
- FEATURE: Added a Quick Search feature for navigating Memberships admin pages.
- FEATURE: Added Liquid-style template rendering for email bodies with support for variables, filters, and conditionals.
- FEATURE: Added email logging for all emails sent by PMPro. The new
pmpro_should_log_emailfilter can be used to enable email logging for non-PMPro emails as well. - ENHANCEMENT: Added sidebar filter panels for the orders and subscriptions admin pages with support for level, status, date range, discount code, gateway, and total filters.
- ENHANCEMENT: Added To, CC, and BCC settings to the Email Templates editor.
- ENHANCEMENT: Members and orders CSV exports now use Action Scheduler for improved reliability on large datasets.
- ENHANCEMENT: Added optional Action Scheduler support for deferrable webhook events.
- ENHANCEMENT: Added Site Health critical issue notification when plugins are using incorrect folder names.
- ENHANCEMENT: Added a restricted directory check to detect and report issues with the protected files directory.
- ENHANCEMENT: Improved support for reCAPTCHA v3 with score validation, defaulting to 0.5 and customizable via the
pmpro_recaptcha_v3_min_scorefilter. - ENHANCEMENT: Adjusted the Update Billing page to no longer automatically redirect away to the account page.
- ENHANCEMENT: Updated the Subscriptions admin screens to match the orders admin screens for view, edit, and link styling.
- ENHANCEMENT: Removed use of the deprecated
SQL_CALC_FOUND_ROWSmodifier across all queries. - ENHANCEMENT: Consolidated membership signup and cancellation queries for improved performance on dashboard reports.
- ENHANCEMENT: Now caching the Members Per Level report for improved dashboard performance.
- ENHANCEMENT: Added
membership_idas a default column in the Members List CSV export. - ENHANCEMENT: Now supporting
light-darkvalues for contextual message CSS custom properties. - ENHANCEMENT: Added PMPro icon to the admin menu and updated the top menu bar to use an icon with screen reader text.
- BUG FIX/ENHANCEMENT: Updated the checkout form submit handler to improve reliability of payment processing.
- BUG FIX/ENHANCEMENT: Updated the capability check for viewing admin user fields to use
pmpro_edit_members. - BUG FIX: Fixed dependencies for the content visibility block component to prevent enqueue issues.
- BUG FIX: Fixed a default height prop warning in block editor components.
- BUG FIX: Fixed a console warning in WordPress 6.3+ by moving block asset enqueuing to the
enqueue_block_assetshook. - BUG FIX: Fixed slashed level names displaying with backslashes in the setup wizard.
- REFACTOR: Refactored the Stripe webhook handler into a new
PMPro_Stripe_Webhook_Handlerclass. - REFACTOR: Removed unused test scripts.
- DEPRECATED: Marked the Subscription Check Add On as deprecated on the Add Ons page.
- DEPRECATED: Reading webhook status via
pmpro_doing_webhook()is now deprecated. Usepmpro_doing_webhook( $gateway, true )for write mode only. - DEPRECATED: The
pmpro_before_members_list_csv_exportandpmpro_after_members_list_csv_exportactions are deprecated and no longer fired. - DEPRECATED: Removed bundled core translation files to reduce the shipped plugin package size.

