How to Set up a Data Backup Process for your WordPress Membership Site

The last thing any website owner wants to deal with is lost website data. This is particularly important for a membership site, where revenue is directly generated online. Keeping up to date backups of your website’s data is not as difficult as you may think. This post covers that often overlooked but highly important topic: data backups, but more specifically:


Your WordPress database contains every post, every comment and every link you have on your blog. If your database gets erased or corrupted, you stand to lose everything you have written. There are many reasons why this could happen and not all are things you can control. With a proper backup of your WordPress database and files, you can quickly restore things back to normal.
via WordPress.org

First, ask yourself “What is my current backup process?”

If the answer to this question is “I have no idea”, you really need this post. Most people aren’t aware of their backup process (or lack of one) until they experience a devastating loss of data. You don’t want to be in that position – so put a solid process in place now.

If you have some process in place, great job! You’re probably 90% ahead of most websites we work with. But be sure to also test recovering from a backup every once in a while to make sure that your backup is actually working.

I’m interested to learn any unique insights you have about your backup process in the comments below.


What to Back Up

Your WordPress website is powered by two key components: your site’s MySQL database and the files in your site’s web folder. Both components should be backed up and both offer unique backup options.

If you store protected files or video outside of your “web root folder” or on a third party service like Amazon S3, make sure that those files are also being backed up.

Depending on the size of your website and number of plugins installed, the database and files may be over 1GB of data. If this is the case, take a look at your data and see what information could be excluded from the regular backup process. Also, make sure that you are not including your backup archives in an automated backup (this would happen if you are storing a copy of your backup in the web root folder, and the backup process includes the entire web root folder).


Where to Back Up

We advise backing up in three or more distinct places. You can store a backup on your membership site’s web server, on a totally separate web server or cloud environment, emailed to a “backups” email account, as well as local copies saved to your computer, a local server, and physically saved to external media (DVD, external hard drive, flash drive).

wp-backup-infographic


When to Back Up

Depending on how frequently you update your site, it may be important to perform a data backup on a weekly or even daily process.

Since you are running a membership site, you are managing all of the key data that synchronizes the member subscriptions from the payment gateway. Losing this data would cause a huge headache and may require you to piece together weeks or months of data manually. No thank you!

We recommend setting up a more frequent automatic backup process (daily) as well as a weekly or monthly manual backup. Pick a day, put it on your calendar, and do it. Once the process is in place it will be a quick step in your workflow providing invaluable piece of mind.


  1. Option 1: Host Backups

    Your host is (or should be) mirroring your site across a few data centers. This is one small level of data assurance but not a replacement for a true backup plan. This only insulates you from your host losing your website data, not from data corruption, a virus or malware injection, or the administrator that accidentally deletes all or some of your site data (true story).

    Depending on your web hosting company, there may be a simple way to create a data backup, either via a web tool installed in your WordPress admin, or directly within your hosting account dashboard. These one-click backups can often be downloaded or emailed to you for the local/physical backup copy I discussed above.

    It’s important to make sure that this one-click backup is including BOTH your site files and the MySQL database for your WordPress site. I suggest exploring your host’s support library or contacting them directly to better understand your backup options.

    Here are some backup processes for commonly used WordPress hosts:
    WP Engine | SiteGround | Bluehost | Pagely


  2. Option 2: Direct File Transfer + Manual Database Backup

    This requires a bit more developer experience, but the basic concept is that you are manually downloading the web server files and creating a direct backup of the MySQL database via phpMyAdmin.

    Files Backup

    Connect to your web server and simply download the entire folder via FTP. Or, if you have SSH access, you can use the command line to create a .zip backup of the entire website files on the server. We create this .zip file and name it according to the date the backup was taken. A copy of that .zip file remains on the server in a “backups” folder, and a copy of the .zip file is downloaded locally to our computer and saved to external media.

    If your web root folder is called public_html, you could use these commands to make a backup. Note that we backup * (all files) and also list .htaccess separately. Because this is a hidden file, the zip command will ignore it unless you specify it like this. If you have any special caching or rewrite rules in your .htaccess file, you will need these to restore your site 100%.

    To download the .zip file, just navigate to the folder and file name in your web browser. (i.e. http://www.YOURDOMAIN.com/backup.zip)

    Be sure to delete the backup.zip file or move it out of the web root after you download to keep others from stumbling upon it.


    Database Backup

    Access your website’s control panel or web hosting admin. From here, you should be able to access your site’s MySQL database via phpMyAdmin. (You can alternately use the Adminer plugin by Inpsyde to access your MySQL database directly through your WordPress admin.

    Click the “Export” tab. We recommend the following settings:

    phpmyadmin_export_settings

    If you database isn’t too large, you can also use the plugin WP DB Backup for an on-demand backup of your WordPress database. The backup file created by this plugin is saved in your site’s /wp-content/ folder or you can download the backup file for a local copy (we recommend doing both). Backups of large databases can be slow no matter what method you are using, but because of the way WP DB Backup works, we’ve found it to be especially slow for very large databases. You can usually just leaving it running for a while in a background tab of your browser if you find this is the case.

    Database Backup From the Command Line

    You can use the mysqldump command to create a backup of your database from the linux command line. If you grab the database name, username, and password from your wp-config.php file, you can then use the following commands.

    I have this saved as a shell script outside of my web root folder and run the script before any update or risky change to the site.


  3. Option 3: WordPress Site Backup Services

    These third-party backup services offer many features related to file backups (themes, plugins, uploads), database backup, site cloning/migration, as well as optional spam security, automated restore points, and support should you find yourself in a data-loss pickle.

    The features vary by company and price, so I’d encourage you to explore the options below when making your decision. These are some of the most widely used options available:


  4. Bonus #4: Restoring From a Backup and Testing Recovery

    If you run a website for any number of years, the chances are you are going to have to restore from a backup at some point. Stuff happens.

    But, even if your site is running flawlessly and you never have experienced a data loss, you should still test restoring from a backup to make sure that your backup is actually working.

    To restore your site, you will need both the backup of the files and the database. Exactly how to restore your site by creating a “dev” or “staging” site will depend on your specific DNS and hosting setup, but here are the rough steps.

    1. Ideally, create a subdomain for your test site, like test.mysite.com or staging.mysite.com. If you can’t create a new subdomain, you can create a subfolder on your existing site like mysite.com/test/.
    2. Create a new database for the test site. Import your database backup.
    3. Upload the zip file of your files backup to the server and then unzip them.
    4. Edit the wp-config.php file in your test site to change the database name, username, and password and any other settings that might need to be updated.
    5. Edit your .htaccess if needed.
    6. If doing a test (vs an actual restore on the same domain) use a script like searchreplacedb2 to change instances of your domain in the database to the domain of the test site.

    Special Notes on Staging Sites with Paid Memberships Pro

    Please note that staging sites are still real websites that might interact with your customers directly or indirectly. Emails initiated on your test site will get sent to real email addresses. If you cancel a PMPro membership on the staging site, your members will get an email, and PMPro will try to cancel the subscription at the gateway and/or the user’s subscription to your mailing list at Mailchimp/etc.

    Additionally, plugins like Paid Memberships Pro perform certain actions like expirations and subscription synching every night as a “WP Cron” process. If you make an exact copy of your live site to a staging site, your staging site will also run these scripts at night. It is important to disable these services using something like our PMPro Toolkit addon or disable your staging site after testing (by deleting it or maybe adding break; to the top of your .htaccess file) to keep these scripts from running. The PMPro Toolkit addon specifically stops PMPro related scripts, but other plugins may still be running scripts of their own.

    Staging sites can also be an attack vector for malware and viruses if they are left online and not updated regularly like your main site. So be sure to either delete your staging site when you are finished with it, set up a plugin like Coming Soon Page & Maintenance Mode by SeedProd, or keep it up to date like any other WordPress site.


Now go make a backup! Then, design and initiate your backup process.

The easiest first step is to choose one of the methods above and create your first backup. Once you have done that you will get a feel for how the selected method works for you, your skill set, and your workflow. There is no one “right” answer here, just the very wrong answer of doing nothing at all.

I hope that the backup process you select on easily fits within your week-to-week (or day-to-day) business. Post a comment below if you have more to add or a questions about any of the methods outlined above.

How to enable debugging on your WordPress site.

Enable Debugging on Your WordPress SiteIs your site no longer working? Has your WordPress site been replaced with a blank white screen, the infamous White Screen of Death? Maybe you are experiencing styling issues, your footer is not loading correctly, or you are having a tough time checking out of your site. This is not unique to Paid Memberships Pro and can occur on any website, using any theme or any plugin(s). Knowing what is causing the problem can give you or a developer the relevant information needed to help fix these issues.

Whatever the reason, this article will explain how to enable debugging mode in WordPress to uncover any PHP errors or warning messages that are on your site.


Turning WP_DEBUG Mode on.

WP_DEBUG is a PHP constant (a permanent global variable) that can be used to trigger the “debug” mode throughout WordPress. It is assumed to be false by default and is usually set to true in the wp-config.php file on development copies of WordPress.”  WP DEBUG, WordPress Codex

  1. Before getting started you will need to be able to access your WordPress site files by means of an FTP Client or your website’s control panel.
  2. To turn WP_Debug mode on, navigate to your wp-config.php file (found in your WordPress install directory), edit the file using a text editor of your choice. Once the file is open, search for the following line of code define( 'WP_DEBUG', false ); and change the value from false to true. If you do not find the WP_DEBUG line of code in your wp-config.php file, you can simply add it toward the bottom of the file. It is usually placed below the table prefix, but certainly above the /* That's all, stop editing! Happy blogging. */ line.

With WP_DEBUG turned on, errors will be displayed right on your homepage, so your site may appear broken (or more broken). Copy the entire error message down to share with the support team or developer working on your site.

Fatal Error Example

To hide the errors again, change WP_DEBUG mode back to false. It is often acceptable to turn on WP_DEBUG, navigate to your site and copy the error, and finally navigate back to your wp-config.php file and turn off WP_DEBUG. When dealing with a live site, any visitors who were browsing your site would be interrupted by the error/message notification. It’s important to hide those errors again as quickly as possible or use the instructions below to send the errors to a log file that only you can see.


Turning off errors that would otherwise display on-screen.

By default, WP_DEBUG will display all errors and notification to your screen. This is not ideal in many cases as the notification/errors will replace the actual webpages of your site with the error messages. To stop errors and messages from displaying on your screen, you can add the following line of code to your wp-config.php file, just under the WP_DEBUG line: define( 'WP_DEBUG_DISPLAY', false )

With this constant set to false, errors are not displayed on screen but are still saved to your web server’s PHP error log. You can set a specific error log for WordPress errors using the steps below.


Making a Debug log file.

Along with WP_DEBUG, you can use WP_DEBUG_LOG , this will save all errors and notifications to a debug.log file that you can use as a reference of any errors/php notifications. You can also use this file to send to any developer or support engineer who is working on your site.

Simply add the following line of code to your wp-config.php file under the other WP_DEBUG constants: define( 'WP_DEBUG_LOG', true )

Accessing the Debug.log File

Once you have added the define( 'WP_DEBUG_DISPLAY', false ) line of code to your wp-config.php file , you will find the debug.log by navigating to your wp-content folder found in the WordPress install directory. You will need to access this part of your website by using a FTP client or through your websites control manager.

Important: Once done with your debug.log file, disable WP_DEBUG mode and delete the debug.log file from your site immediately. Not doing so may result in compromising the security of your site or exposing sensitive information to unwanted parties.

 


What it looks like all together.

Now that you have added all the lines of code to your wp-config.php file, you should have something similar to the below coding example:


WordPress Debugging – Summarized

  1. Login to your site via FTP or your host’s File Manager.
  2. Navigate to your WordPress install directory and enter it (usually public_html or www).
  3. Find the wp-config.php file and edit with a text editor of your choice. Some popular text editors to use are: Atom, Sublime 3 and PHPStorm
  4. Search the file for the following line of code: define( ‘WP_DEBUG’, false );
  5. Change this value from false to true. This will now output errors to your site by displaying them right on your homepage, so instead of your site you will see any underlying errors. To get your website back, change WP_DEBUG mode back to false.
  6. Directly below this you can enter two new lines of code to send errors to a log file:
    • define( ‘WP_DEBUG_DISPLAY’, false );
    • define( ‘WP_DEBUG_LOG’, true );
  7. Save your file and re-upload to the same directory – overwrite the file when prompted. (Do not close your FTP client just yet).
  8. Go back to your website using your browser and recreate the issue.
  9. Head back on over to your FTP client and navigate to wp-content and expand the folder, your debug.log file will be loaded into this directory if there are any PHP errors.
  10. Download the debug.log file. Feel free to send this log file onto your support engineer.
  11. For a more detailed guide on debugging in WordPress, have look at the WordPress codex.

This looks tough – I need help.

If you are uncomfortable editing your wp-config.php file or are otherwise having trouble following these instructions, reach out to your hosting company for help. You can ask them the following in a support ticket or through email:

Can you tell me how to find the PHP error log for my website at example.com and send me a list of the last 20 errors that have occurred?

Exactly how to access error logs varies depending on your host and server setup. Any good host should be able to respond to request above.

If you would like our help fixing a PMPro-related error on your site, we have a team of Support Engineers that are equipped to help you with your debugging questions. Feel free to get in touch with our team over on our Members Support Forum.

Access to Member Support Forums requires a PMPro Plus Account or higher.

View Membership Options

How to Hide the WordPress Dashboard (and build a better one) For Your Members

WordPress allows all user roles access to view an access-level appropriate version of the WordPress Dashboard. For most membership sites, access to this “backend” dashboard is often unnecessary and can be confusing for your users.

Below are some options for blocking this dashboard and redirecting users to the desired page on login.


  1. Redirect Members on Login

    The default login behavior for all WordPress roles is to redirect the user to the WordPress dashboard. Below are links to a few posts we have on customizations to send users to an alternate page, such as the referring URL or a page of your choice based on their level:

    • Redirecting Members on Login
      This recipe will show you how to redirect members to a specific page after logging in.
    • Redirect Members to Pages Based on Their Level
      This post covers how to redirect members to certain pages based on their membership level, allowing each level to have a unique member login destination.
    • Redirect Members to Referrer on Login
      The steps in this guide allow you to set a referrer in the Memberships > Advanced Settings for your “Message for Logged-out Users:”. This way, when a user clicks to “log in” to view the members-only content, they will be redirected back to that URL after login.

    Using these methods, the user will ONLY get into the dashboard when they would like to edit their user profile.

    Bonus tip #1: If you’re considering login redirection, you may also want to check out the Member Homepages Add On. This extension will redirect logged in members to a unique “homepage” based on their level. Any time a member attempts to access the actual site homepage, they will be sent to the appropriate page for them. I find this to be a great help when your site has to serve the dual purpose of marketing and “selling” membership along with being a well planned user experience for actual members.

    View the Add On
  2. Use the plugin Theme My Login

    This plugin handles redirection extremely well, which is why we didn’t include the functionality in Paid Memberships Pro itself. Theme My Login includes a setting to redirect users on login, as well as block dashboard access based on role. We have a longer post detailing the setup and additional features of this plugin here.

    Important: do not disable dashboard access without turning on the “Themed Profiles” module in Theme My Login. If you miss this step, users of the “subscriber” role will not be able to edit their profile.

  3. Use the plugin Hide the Admin Bar from Non-admins

    The plugins above don’t hide the admin bar, which you often want to hide as well. There are other plugins in the WP repo to hide the admin bar, but they either (a) hide it for admins as well or (b) require users to disable the bar via their settings. We whipped up our own plugin hide the admin bar for non-admins only.

    View the Plugin


Bonus Tip #2: Building a Member Dashboard

It’s great that you’re taking the time to consider the user experience and build a better login redirection process. But, what page are you going to actually redirect your users to?

I wrote a previous post on building a dashboard for your members. The post covers some recommendations to enhance your Membership Account page based on the type of site you’re running. Redirecting to the Membership Account page is a strong login experience as it provides detailed information about your member. And, if you take time to enhance this page with links to members content, the dashboard is an even more powerful landing page after login.

View the Guide on Member Dashboards

Let me know in the comments below if you have recommendations or requests related to login redirection—these are simply the most common ways we help users get their redirects in place.

PMPro Update 1.9.4.1

Version 1.9.4.1 of Paid Memberships Pro is out with a handful of bug fixes. Braintree users in particular will need to update if they are running 1.9.4. There is also fix to the Recaptcha code and an enhancement to the cancelation error email.


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 1.9.4.1 specifically here.


The full list of updates is below.

  • BUG FIX: Fixed serious bug where payment fields weren’t showing up for the Braintree gateway.
  • BUG FIX: Fixed issue where Braintree webhook notifications were failing. We now allow the Braintree library to sanitize the incoming data since our sanitizing efforts were breaking the validation.
  • BUG FIX/ENHANCEMENT: The webhook URL given for Braintree now goes through admin-ajax.php instead of a direct link to a php file within our plugin.
  • BUG FIX/ENHANCEMENT: Updates to the Recaptcha library. (Thanks, Corin Simpson-Bryars)
  • ENHANCEMENT: Made the cancelation failed error email easier to read.

PMPro Update 1.9.4

Version 1.9.4 of Paid Memberships Pro is being pushed out shortly. This update includes fixes that could impact sales, and we recommend everyone upgrade as soon as possible. There are two updates in particular to look out for related to our Stripe integration as well as new frontend layouts for improved display across devices.


The included Stripe PHP Library has been updated to the latest version.

While not necessary, after upgrading it is a good idea to log into Stripe to change your API settings to use the latest version of the Stripe API. To do this log into Stripe, click on API in the left sidebar, then click on “Upgrade Available” and follow the directions.

If you don’t see the “Upgrade Available” link, then you are already running on the latest version of the Stripe API. Be sure to test checkouts on your site after making this change. For 72 hours, you’ll be able to roll back to the previous version of the Stripe API if needed.


“Table-free” Frontend Pages for Improved Display on All Devices

In an effort to improve the display and responsive layout of default plugin pages, v1.9.4 of Paid Memberships Pro has migrated to a “table-free” layout for selected frontend pages. Affected pages include those pages using the following shortcodes: [pmpro_checkout], [pmpro_confirmation], and [pmpro_billing]. These pages have been updated to use a div-based HTML layout where possible instead of a table-based layout.

We’ve done our best to make sure this update has minimal impact on all of our users, but if you notice UI issues after performing the update (in particular users with custom checkout templates or CSS styling might be affected), you can use the Table Layout Add On to revert to the table-based layout on your site. Note that if you roll back PMPro entirely, you will lose the benefit of the 30+ other fixes and enhancements included in this update. So using the table pages add on the preferred way to fix any UI issues that come up.

It is also important to note that this add on is meant as a temporary solution while you update your site to make use of the new div-based layout. We will support the plugin for about a year. During that time, be sure to reach out to use with any issues caused by our add ons and code and take time to update your own customizations to work with the new layout.


Add Ons Updated to be “Table-free” and for 1.9.4 Compatibility

Many of our Add Ons have also been updated to use the new div-based layout or other bug fixes included in this update. Those add ons will have updates available as well, so be sure to update all of your PMPro Add Ons with update notices before you update the core Paid Memberships Pro plugin.

Affected Add Ons Include


How to Update

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 1.9.4 specifically here.


Changelog

In terms of number of fixes and enhancements, this is one of our largest updates ever. The full list of updates is below.

  • BUG FIX: Fixed issue where PayPal was not working for amounts over $1000.
  • BUG FIX: Non-decimal currencies now handled correctly with Stripe.
  • BUG FIX: Fixed issue where updating a Stripe subscription from the edit user page could cancel the subscription once the webhook fired.
  • BUG FIX: Fixed issue where “admin_cancelled” memberships weren’t being calculated correctly in membership reports.
  • BUG FIX: Fixed issue where users could not drag and drop to change the order of membership levels.
  • BUG FIX: pmpro_getMembershipLevelsForUser() would sometimes return duplicate levels in the array if the user had multiple active entries in the pmpro_memberships_users table.
  • BUG FIX: Updated includes/metaboxes.php to call pmpro_getAllLevels() instead of relying on the $membership_levels global which is problematic.
  • BUG FIX: Fixed a few strings that weren’t wrapped for translation or were using the old text domain.
  • BUG FIX: Fixed redirect error that occured when the levels page was not set.
  • BUG FIX: Updated getfile.php to support file names with urlencoded characters (e.g. spaces) in them. (Thanks, florent from PMPro blog)
  • BUG FIX: Fixed notice when use the getfile.php script due to using add_filter instead of apply_filters in the mimetype class.
  • BUG FIX: Fixed the all time views column for the logins report.
  • BUG FIX: Fixed fatal error on the logins report, member shortcode and other issues when using PHP7.1+.
  • BUG FIX: Fixed issue with saving arrays using pmpro_setOption()
    up the lines of text.
  • BUG FIX: Fixed typo in the string “Are you sure you want to do that? Try again.”
  • BUG FIX: Fixed a few strings that used the wrong text domain or weren’t wrapped correclty for translation.
  • BUG FIX/ENHANCEMENT: Now bundling Google’s jsapi.js file for use in the reports.
  • BUG FIX/ENHANCEMENT: Fixed issue where some emails (e.g. the password reset email) would not have wpautop applied to them, crunching
  • BUG FIX/ENHANCEMENT: Better checking for Theme My Login compatibility when handling login redirects.
  • BUG FIX/ENHANCEMENT: Better error handling for Braintree.
  • BUG FIX/ENHANCEMENT: Membership stats widget now shows first 3 levels based on level order.
  • BUG FIX/ENHANCEMENT: Added the pmpro_member_shortcode_access filter
  • ENHANCEMENT: Updated the Stripe PHP library to version 5.2.2 and updated Stripe to use the latest version of their API, 2017-08-15.
  • ENHANCEMENT: Changed frontend pages (e.g. checkout.php) to use a div-based layout instead of tables. Important information here if you are using custom page templates or notice UI issues after upgrading
  • ENHANCEMENT: Added pagination to the discount codes page in the admin. Also sorting codes in descending order by ID. Use the pmpro_discount_codes_per_page filter to change the per page limit from 15.
  • ENHANCEMENT: Updated plugin admin pages with better links to documentation and support.
  • ENHANCEMENT: Updated plugin frontend pages checkout, billing, confirmation, and single invoice to remove most table based layouts.
  • ENHANCEMENT: Better error message if trying to checkout using an existing user’s email address.
  • ENHANCEMENT: Added the pmpro_report_levels filter to let users change levels and order of levels for the memberships.php report.
  • ENHANCEMENT: Updated video and copy for readme.txt.
  • ENHANCEMENT: Added user display name to Memberlist search query
  • ENHANCEMENT: Added Russian Ruble as a currency.
  • ENHANCEMENT: Changed the dated term “CVV” to “Security Code (CVC)” when shown on the frontend.
  • ENHANCEMENT: Added .doc and .docx to the mimetype class.
  • ENHANCEMENT: Added Portuguese language files. (Thanks, Secundino Correia)
  • ENHANCEMENT: Updated plugin admin pages with better links to documentation and support.
  • How to Name Your Membership Levels or Subscription Options

    How you name your membership levels is one of the most important components for conversions on your membership on site.

    Let’s spend some time thinking about membership level names. We’ll cover the classic membership site structures and provide examples for naming the membership levels or subscription options for each case. (And there’s even a nifty “level name” playground that tests your name within various plugin-generated phrases.)


    Take a step back and evaluate your membership level names.

    I work with thousands of membership sites and have seen a lack of clarity (and creativity) in this key area. The membership level name identifies what the member is receiving in exchange for their membership fee. In some cases, the name is a badge of pride for your members, turning them from the anonymous “visitor” to a member of the “in-crowd”.

    Putting all of this touchy-feely stuff aside, the level name is also used in various default “phrases” within your membership site system. You need to make sure your level name “reads well” within these phrases. I’ve created a simple tool at the end of this article that provides a litmus test for your level names within the key system phrases in Paid Memberships Pro.


    Membership Site Structures Covered include:


    Tiered/Hierarchical Levels

    This flavor of membership site offers more (or fewer) features based on membership level. This is the structure of our own site here at Paid Memberships Pro. We offer a Free, Core and Plus level. I think the level names are OK, and they do imply a tier (Unlimited being the highest membership option available).

    Here are some level name ideas based on the “tier”

    Tier 1
    • Basic
    • Beginner
    • Starter
    • Primary
    • Bronze
    • Baby Bear

    Tier 2
    • Intermediate
    • Enhanced
    • Standard
    • Secondary
    • Gold
    • Papa Bear

    Tier 3
    • Advanced
    • Ultimate
    • Extreme
    • Professional
    • Platinum
    • Mama Bear (just right!)


    Price/Payment Term Structured Levels

    Use this level naming structure when all membership levels offer the same package of features, but vary based on price or term. First, try to think of something clever based on your specific name, brand or site topic.

    If your membership site was a sports team, what would you call your fans?

    You can give membership an overall brand, such as “Trekkies”, “Bronies”, or “Cheeseheads”. Then use your level names to clarify the price or payment term.

    You may still have an idea of “tier” in this structure, such as a Foodie Box site that offers 3 Month, 6 Month, and Annual subscriptions, with the option to “add on” a dessert box. For this case, I’d suggest reading through my post on price-adjusting Register Helper fields to have a selection at checkout modify the level price. Easy as pie.

    Here are some level name ideas based on the price/term

    • Daily *
    • Weekly
    • Monthly
    • Quarterly
    • Yearly

    • Annual
    • Per Annum
    • Bi-Weekly
    • Bi-Monthly
    • Semi-Annual

    • Half-Yearly
    • Perennial
    • Lifetime
    • Forever
    • Eternal

    * Note that not all integrated gateways offer “daily” subscriptions.


    Content Vertical/Category-specific Levels

    In this type of membership site, the membership levels differ not by features, but by type of content or “vertical”. This is common in a stock or investing site, nationwide membership chapters site, or an online dating site where identifying the member’s “interest” is handled via the membership level selected.

    Here are some level name ideas based on the content vertical

    • Stock/Investing Sites: Technology Sector, Gas and Oil, Retail, Pharmaceuticals
    • Member Chapter Sites: Country Name, State Name, County Name
    • Online Dating Sites: Man Seeking Woman, Woman Seeking Man, Man Seeking Man, Woman Seeking Woman, etc.

    User or Member-type Levels

    This is a category of membership site where the member receives a different level/price/package based on the type of member they are. Check out our Sponsored/Group Members Add On if you have a membership level that offers parent/child account relationships.

    Here are some level name ideas based on the user/member-type

    • Individual
    • Student
    • Parent
    • Family

    • Senior
    • Corporation
    • Volunteer

    • Teacher
    • Non-Profit
    • Military: Active Duty and Veterans


    Content Delivery/Subscription Type Levels

    For this type of membership site, the levels differ by how the content is received. It will make more sense after reading the level names below, but basically this case is used when the content is offered in various formats (online, print, email), and the selected level determines the members’ preferred method(s) of content delivery.

    For this case, you could use the same membership branding concepts covered in the Price/Payment Term Structured Levels section above, then use the level names to clarify content delivery.

    Here are some level name ideas based on the type of content delivery

    • Online Only
    • Print Only
    • Online and Print
    • Email Newsletter

    Sponsorship Level/Benefactor Tiers

    If you’re a non-profit organization, you most likely think about membership a bit differently than most other site types. In your case, membership level is actually sponsorship level, and you have a chance to get really creative in how you name your tiers.

    A great approach to level naming is to pull ideas from the goals of your organization, your location, the group or cause you represent.

    Instead of coming up with my own examples, I’ve compiled a few non-profits and their benefactor/membership tier names below:

    The Franklin Institute’s Benefactor Society

    • Pendulum Partners
    • Baldwin Circle
    • Celestial Circle
    • Ambassador Circle
    • Kite and Key Circle
    • Franklin Fellows
    • Inventors Circle

    Colonial Williamsburg’s Donor Societies

    • Duke of Gloucester Society
    • Capitol Society
    • Colonial Williamsburg Assembly
    • Colonial Williamsburg Burgesses
    • Colonial Williamsburg Associates
    • Raleigh Tavern Society

    The Kimmel Center’s Founders Circle

    • Partner
    • Benefactor
    • Artists Circle
    • Leadership Circle
    • Presidents Circle
    • Chairmans Circle


    Go Forth and Name Ye Levels!

    I hope this post has given you some direction as you brainstorm level names for your new or existing membership site. If you have a type of membership site that wasn’t covered, post a comment below so we can discuss some level naming conventions for your site.

    If you run an existing membership site, you can still rename your membership levels. With Paid Memberships Pro you can simply update the level names under Memberships > Edit Level in the admin. Every member that currently has that membership level will automatically have their membership level name updated.


    Time to Play

    The Membership Level Names Playground below allows you to enter a desired membership level name and see how it will “read” within various plugin-generated phrases. These are the most common phrases your members will see, both on your site and in membership-related emails.

    Test your level name against key phrases in Paid Memberships Pro.

    Enter a level name to test:


    You have selected the My Level Name membership level.
    Shown on the membership checkout page.


    Membership Level: My Level Name
    Shown in most member communication emails and invoices.


    Your My Level Name membership is now active.
    Shown on the membership confirmation page.

    If you have a level name that doesn’t pass the litmus test, don’t fret. Every phrase in Paid Memberships Pro can be “translated”, and I’m not just talking about languages.

    Our blog has several posts on renaming key terms within the plugin, such as this post about replacing the word “Membership” with “Subscription”.

    Depending on your membership site, you may need to use these methods or another approach. Just open a topic in our members forum (provided to PMPro Plus and Unlimited members), and we will help you work out any hiccups between your desired membership level name and the built in phrases of Paid Memberships Pro.

    Use WooCommerce to Sell Memberships with Your Payment Gateway of Choice

    One of the biggest requests we receive from our members and users alike is “I would like to use [insert payment gateway name]. Do you have an integration for it and if not can you develop it for me?”


    Truth be told there are a myriad of payment gateways out there, and as much as we would like to have an integration for each and every gateway available, it is just not possible to do so (yet). So, now what? You desperately want to use Paid Memberships Pro but your payment gateway is not supported. You’re stuck.

    Or are you?


    The “Woo-karound”

    If the payment gateway that you would like to use has a WooCommerce Integration developed for it, you’re in luck. One possible solution could be to use WooCommerce, our WooCommerce Integration and your payment gateway’s WooCommerce integration. This allows you to sell a PMPro Membership as a WooCommerce Product and let WooCommerce handle the checkout of your membership level using your payment gateway of choice.


    Getting Setup

    Below is a brief guide on how to set this up:

    1. Install and activate WooCommerce on your site. The primary WooCommerce plugin is free via the WordPress repository.
    2. Set up your chosen payment gateway in your WooCommerce Setup. You may need to purchase a premium gateway extension from WooCommerce.
    3. Install and activate our WooCommerce Integration on your site. This PMPro WooCommerce Add On is free via the WordPress repository.
    4. Set up your membership levels to be sold as Products. Have a look at the “Membership Products” section of the Add On page for more details.
    5. Let WooCommerce handle the checkout process instead of Paid Memberships Pro.
      Note that using the WooCommerce Integration to sell memberships as products only requires adding Membership levels with their name and (if desired) category restrictions. None of the level pricing, page setup, or payment settings are needed. If you want to handle recurring payments using this method, you will need to use WooCommerce Subscriptions along with this integration.

    This won’t work for me. Now what?

    Perhaps, this workaround is not going to work for you. If that is the case maybe some of these alternatives might do the trick!

    1. Adding a New Gateway documentation (Warning: Not for the faint of heart!) – It is recommended that you are an experienced code wrangler if you decide to take this project on.
    2. Find a Developer to help. We have some experienced WordPress/Paid Memberships Pro Partner developers that you can get in touch with that will happily give you an estimate on integrating your Payment Gateway for you. Simply open up a developer request and one of our developer partners will get in touch with you.

    New Integration for Holler Box: Popup/Banner Notifications to Increase Sales and Leads

    Display Holler Boxes by Membership Level with this new integration between Holler Box and Paid Memberships Pro.

    View the Add On


    How it Works

    The Holler Box plugin by Scott Bolinger allows you to create popups or banner notifications that display on the front end of your website. eCommerce site owners are using these popups to collect leads and generate more sales.

    Our new integration adds Membership restrictions to your boxes, allowing you to display unique content based on the user’s membership status, either a specific level or for no level (non-member). This integration requires the basic version of Holler Box from the WordPress repository and our integration plugin, Holler Box Integration for Paid Memberships Pro.


    Other Holler Box Features: FOMO Popups

    The Pro version of Holler Box has another extension that displays Sales Notifications. This means that as members complete checkout on your site, the box will notify visitors of the sale. Your site visitors will think, “hey other people are buying, I should buy too!” You can read more about this extension on their documentation page.

    Special Discount for PMPro Members

    Save 20% off the Holler Box Pro bundle, which includes Holler Box Pro and the FOMO popups. Use discount code PMP20 at checkout. https://hollerwp.com/pro/