Migrating from one membership platform to another can be intimidating—even for the most tech savvy among us. In this step-by-step guide, we’ve simplified the process as much as possible to help you successfully migrate your membership data from MemberPress to Paid Memberships Pro.
Note: This guide is specifically written to support someone migrating active subscriptions and members from MemberPress to Paid Memberships Pro.
- How to Migrate from MemberPress to Paid Memberships Pro
- Part 1: Migrating Members and Subscriptions
- Part 2: Configuring Content Protection
- FAQs and Staging Sites
How to Migrate from MemberPress to Paid Memberships Pro
We’ve used a couple different membership plugins and hadn’t had great experience with either of them. When building our new website for CHIFOO.org, we wanted to move to another plugin and after much research decided on Paid Memberships Pro. The process of moving all of our existing data from MemberPress wasn’t documented, but the support team patiently answered my questions, gave me guidelines and stepped me through the process. I was able to do it myself successfully by following their detailed instructions.Fellene
Due to the nature of eCommerce, your live site will continue to bring in new data—new orders, new members, new comments and posts in your forum, for example.
The goal is to interrupt your live money-making site as little as possible. 💰
That said, if you are operating a small membership site and you can afford it, take your site down for a day or two. This process can be infinitely simpler if you just close your site to the public.
If you cannot turn your site off, we included a guide on how to do this migration through the use of a staging environment.
There are two important parts to completing your migration from MemberPress to Paid Memberships Pro:
- Migrating your members and their subscriptions
- Migrating the content protections from the previous system to the new system
We’ll cover both of these processes. If you follow all of the advice and instructions in this guide, you’ll end up with seamless ongoing payments from past customers (if recurring) and new member payments powered by Paid Memberships Pro.
Let’s get to it!
Part 1: Migrating Members and Subscriptions
1. Backup Your WordPress Website
In our post Backup Your WordPress Site: The Complete Guide to Site Backups, we talk about the importance of regular site backups and how to create your own site backup. This is especially important for membership sites, since they deal with customer accounts and sensitive information.
👉 Don’t forget to create a backup of your site before continuing the migration process.
2. Pause Your Live Website
Data can get out of sync very quickly during a migration. You don’t want any new member data to be created or altered while you complete the process, so we recommend temporarily pausing your live website.
- Disconnecting your MemberPress payment gateway
- Turning off all new membership signups
- Putting your main website in “Coming Soon” or “Maintenance” mode
You can use a plugin like WP Maintenance Mode & Coming Soon to add a maintenance post to your blog, or a coming soon page to your website.
Note: If you have a very active site and simply cannot afford any downtime, skip to Prepare Your Import File. It’s normal to have a few remaining pieces of data to move right before the final import.
3. Install and Set Up Paid Memberships Pro
The next step is to install Paid Memberships Pro onto your website or staging site (what is this?).
Note: If you can’t turn off your main website, or you just want to test out PMPro to see how it works, we strongly recommend using a staging site or even a local development site.
However, when you create a staging site, your live site and development site become out of sync. If you go this route, note that there will be some data on your new site that you will need to migrate immediately before it goes live.
If You’re Installing PMPro on Your Main Website
In our Initial Setup guide, we talk about how to install PMPro, whether you’re doing it through the WordPress dashboard or by downloading a PMPro package.
Once you have PMPro installed, you’ll need to replicate your MemberPress memberships as membership levels in Paid Memberships Pro.
To do this, navigate to Memberships > Settings > Membership Levels in the WordPress admin. You can refer to the Initial Setup guide linked above for more information.
👉 Be sure to save your membership level IDs for later. Don’t connect your payment gateway just yet.
If You’re Installing PMPro on a Staging Site
Once you have your staging site up and running, make sure that it’s not connected to your payment gateway in both MemberPress and Paid Memberships Pro.
Note: It’s possible that certain actions you take on your staging site could trigger a system email from WordPress, MemberPress, or Paid Memberships Pro while you are going through the migration process. Our Developer’s Toolkit Add On has a feature to redirect all site emails to a specific address. You can also use a third-party plugin like Disable Emails to protect yourself from mistakenly sending messages from your staging site.
4. Set Up User Fields (If Applicable)
Does your membership have custom user fields configured in MemberPress? Do you want to add new user fields? Paid Memberships Pro uses a feature called Register Helper to collect additional checkout fields and user profile information for members and admins.
If you aren’t collecting custom fields, skip ahead to Export and Import Your Data.
Register Helper Fields
MemberPress fields are stored in user meta (just like custom fields in Paid Memberships Pro). This is the WordPress database table that stores all the custom user data not part of the user object itself.
When you write the new code for Register Helper fields, you can choose to:
- Rename the user field variables from the MemberPress-prefixed keys (i.e. mepr_fieldname)
- Keep the field names as they are
Check out the Register Helper documentation for specific help configuring this plugin. If you have a premium membership, we’ll add up to 5 fields for you, and help you set up the Register Helper Add On as well.
Note: If you rename the fields, you’ll need to re-import them with the correct field names OR run a database script after all is said and done to remove the MemberPress prefix. If you keep the field names as they are, they will stay connected to the correct user account.
Whichever method you choose, your Register Helper field code must use the exact meta field keys (names) that are used in the database table:
5. Export and Import Your Data
Export Your MemberPress Data
Your MemberPress migration requires three separate CSV exports:
Most of the data you need will be included in the Members and Subscriptions data export. However, the Transactions data export includes the
membership_subscription_transaction_id, which is required to connect your recurring payments to the relevant member.
Note that the Transactions export includes multiple rows of data for each member. These rows track the historic payments made (similar to the Orders export in PMPro) for their one-time payments or recurring subscription payments.
You only want to include the last transaction for each member. The rest should be ignored.
Prepare Your Import File
Now that you have your MemberPress data exported, you are ready to create a file that PMPro can use to import your members and subscriptions.
There are two plugins you will need:
To make this process as straightforward as possible, we’ve created a Google Sheets template that you can duplicate and use to create a properly formatted import file for Paid Memberships Pro.
Get the Template
How to Use the Template
- Make a copy of the template to keep in your own Google Sheets account
- Verify that the sheet is only shared between you and anyone else that you want to access it
- Import your three MemberPress CSV export files (Members, Subscriptions, and Transactions) to the appropriate tab in the template (overwrite the existing sheet)
- After importing, update the “MemberPress Product ID > PMPro Level ID” sheet in order to match the Product ID in MemberPress to the Membership Level ID in Paid Memberships Pro
- That’s it! The “Paid Memberships Pro Import Data” sheet is ready to use. Just export it to .CSV and then import the .CSV file to your site.
👉 Remember to come back and delete this file from Google Drive, as it contains sensitive customer information that you don’t want lingering on the internet.
We also have a standard Import Users CSV template for PMPro that serves as a decent baseline.
The table below shows the MemberPress data fields you should map to the required PMPro Import fields:
|PMPro Column||MemberPress Column||Data Description and Location|
|user_login||username||Required field to match the imported data to the existing WordPress user; Included in the MemberPress Members export.|
|user_email||Optional field; Included in the MemberPress Members export.|
|first_name||first_name||Optional field; Included in the MemberPress Members export.|
|last_name||last_name||Optional field; Included in the MemberPress Members export.|
|display_name||name||Optional field; Included in the MemberPress Members export.|
|role||(add this)||For most sites, set this role to “subscriber” which is the base level role and capability for users in WordPress.|
MemberPress does not include an export column for role, but you can add it manually here.
This column is optional. If you omit this column, the user will keep whatever role is assigned to their existing user record.
|membership_id||(add this)||Add the numerical ID for the level in Paid Memberships Pro. MemberPress exports a field |
|membership_initial_payment||price||Optional field. Set this to the initial amount paid for your recurring membership. For most sites, this field is the same data as the |
|membership_timestamp||created_at||This data is found in the MemberPress Subscriptions data export. This field is not required for import.|
This field adjusts the placeholder order generated as part of the import to match the date of the member’s last successful payment. If you do not import this field, the placeholder order will use the date of the import.
Note that the MemberPress data is exported as a full timestamp. Paid Memberships Pro import requires this data to be in the format
|membership_billing_amount||price||This field maps to the ‘price’ value from the MemberPress Subscriptions export. It is the recurring payment amount as a plain number (can include decimals) without a currency symbol.|
|membership_cycle_number||period||This field maps to the |
|membership_cycle_period||period_cycle||This field maps to the ‘period_type value from the MemberPress Subscriptions export. PMPro accepts values including hour, day, week, month, and year.|
|membership_status||status||This field maps to the ‘status’ value from the MemberPress Subscriptions export.. For this migration, it is recommended that you only import members with an |
|membership_startdate||registered||Note that the MemberPress data is exported as a full timestamp. Paid Memberships Pro import requires this data to be in the format |
|membership_enddate||expires_at||Only include this date if the member should expire and the recurring subscription should cancel. Members on a recurring subscription in Paid Memberships Pro do not have an end date (leave blank).|
|membership_subscription_transaction_id||subscr_id||For Stripe, these values will all begin with |
For PayPal, this ID always begins with the value
|membership_gateway||MemberPress uses a unique code/ID for each gateway. You should add the gateway name manually. For subscriptions migrated from the Stripe gateway, use the name |
|membership_payment_transaction_id||trans_num||Optionally import the last transaction ID. This data is found in the Subscriptions data export from MemberPress.|
|pmpro_stripe_customerid||_mepr_stripe_customer_id_XX||The name of this column will vary in your MemberPress Subscriptions export. For Stripe, you want to locate a field that begins with the characters |
This field is not needed for any other payment gateway, such as PayPal.
Export the file to CSV and Test the Import
We recommend testing the import with a subset of your data (the first 10 records) to ensure that everything works as expected.
To do this, export only the first few rows of the .CSV file. With this file, adjust the rows to only include the first 5 or 10 records.
Run the import by following the directions on the Import Users from CSV Add On documentation page.
When running the import, check the box to “Update user when a username or email exists”. Every person in your import CSV is already a user in your WordPress site. You want to update and extend their user information, not create new records.
Double check the data to be sure everything looks correct. You can check your Members List under Memberships > Members and the Orders list under Memberships > Orders.
If everything looks correct, you are ready to do the full and final import. To do this, repeat the process from your test above using the full set of data (minus those test members already imported). Again, be sure to check the box to “Update user when a username or email exists”.
6. Resume Your Live Website
You’re almost done! Now it’s time to connect your payment gateway in PMPro.
First, deactivate MemberPress. Once you are sure everything is working properly, you can delete the MemberPress plugin files and follow their guide on resetting MemberPress data to remove all traces of the plugin from your site.
PMPro has only one settings page to configure the payment gateway for all memberships. Just navigate to Memberships > Settings > Payment Settings. The process of setting up a payment gateway is also outlined in the Initial Setup guide we mentioned earlier.
Your subscription site relies on messages from the payment gateway to confirm that recurring payments have been received. Stripe refers to this as a “Webhook.” PayPal calls it an “IPN.”
As part of the gateway setup, be sure to update your Stripe Webhook or PayPal IPN within your merchant account. Instructions on how to configure this are available for both gateways in the documentation area: Stripe Webhook Setup and PayPal IPN Setup.
If you need more help with webhooks or IPN, please open a ticket in our members support area so that our team can make sure you’re properly set up to receive the recurring payment messages from your connected gateways.
Your MemberPress data should now be completely migrated to Paid Memberships Pro. Yay! 🙂
Next, you’ll need to set up content protections in Paid Memberships Pro.
Part 2: Configuring Content Protection
Every membership plugin handles content restrictions in a different way. With Paid Memberships Pro, you can restrict individual pages, posts, or entire categories of posts.
Browse our documentation on restricting content to learn more about the various ways you can protect your content with PMPro.
- Posts and Categories
- Other content types including CPTs
- Community features like bbPress and BuddyPress
It’s Time to Celebrate 🎉
You did it! You’ve successfully migrated your active subscriptions and members from MemberPress to Paid Memberships Pro, and configured your content protection so that your membership site is officially ready for action.
If you’re still in need of additional help, be sure to check the Frequently Asked Questions section below, or contact our support team if you’re a premium member.
We’re excited that you’ve made the switch to the best membership plugin for WordPress, and we’re right here by your side to help you take your membership business to new heights. 🚀
Frequently Asked Questions
What is a Staging Site?
A staging site is essentially a duplicate of your website, where you can test out new features and make changes without affecting your live website.
Creating a staging site allows you to get all of your membership data in place before merging it with your live site.
Do I Need a Staging Site?
A staging site is a non-public version of your site’s code that powers your live membership site. Your membership’s staging site, if set up properly, will allow you to add and test all kinds of things before releasing them on your live site.
With a staging site, you can test things like:
- Code recipes
- New features
- New plugins
- Plugin updates
To determine whether or not you need a staging site, here are a few questions to consider:
- How big is your membership site and how often are people logging in to use it? If you have a very active membership site that receives a lot of traffic, using a staging site may be a wise choice.
- How many new subscribers do you get per day? If it’s less than 10, you can probably migrate your data without using a staging site.
- If you temporarily paused your site, could you put up a contact form and still gather responses? If so, you might not need a staging site.
- Do you have minimal development experience? A staging site can help to avoid issues that you can’t fix.
- Do you just want to experiment? A staging site is a safer bet if you want to play around without killing your live site.
This seems really complicated.
If this is all too overwhelming or confusing for you, you should consider hiring a developer. We recommend working with one of our Codeable freelancers or agency partners to make sure your migration goes as smoothly as possible.
If you’re a premium member, you can always reach out to our support team for help as well.