Below is an explanation of the column headings and what they mean. While most fields are optional, you must import the user_id, user_login, or user_email field to match and update existing user information via import.

WordPress User Columns

  • user_login: The unique username for this user.
  • user_email: The unique email address for this user.
  • user_pass: The password to set for this user. We do not recommend importing passwords.
  • first_name: The user’s first name.
  • last_name: The user’s last name.
  • display_name: The desired name that displays for this user when reference on the frontend or backend of the membership site.
  • role: The desired user role for this user. Leave blank to set to site default for newly imported users. We highly recommend keeping the role set to “subscriber”.

Any other fields we detect in the import file will be imported as usermeta.

PMPro Membership Level Columns

The only field required to give a user a membership level is membership_id, but it’s best to fill out as many fields as possible. By adding more fields, you also import the correct “subscription price” (shown on the Membership Account page) for imported members.

  • membership_id*: Membership numerical level ID of the user’s membership level (not the level name). Navigate to Memberships > Settings > Levels to obtain your site’s level IDs. Note: Importing the value “0” will cancel all of the user’s existing memberships.
  • membership_initial_payment: The initial payment for the user’s membership level (the amount collected at checkout).
  • membership_billing_amount: Specifies the billing amount for the user’s membership level, such as ‘250’ for a level billed at $250 per year.
  • membership_cycle_number: Specifies the billing cycle number of the membership level, such as ‘1’ for a level billed once per month.
  • membership_cycle_period: The billing cycle period. Possible values are “Day”, “Week”, “Month”, and “Year” (without the quotes).
  • membership_billing_limit: The billing cycle limit for the user’s membership level.
  • membership_trial_amount: The trial amount for the user’s membership level.
  • membership_trial_limit: The number of cycles the trial should last for the user’s membership level.
  • membership_status: The status of the user’s membership. Possible values: active, inactive
  • membership_startdate: The member’s start date. (formatted as YYYY-MM-DD)
  • membership_enddate: The date membership expires and is fully cancelled. (formatted as YYYY-MM-DD). You should only import an end date for members that should fully expire and cancel. Do not set an end date for a member with a lifetime membership or an active recurring subscription.
  • membership_timestamp: Date to use for the timestamp of the order we generate on import. Generally the last payment date for the member. (formatted as YYYY-MM-DD)
  • membership_code_id: Discount Code ID (if used) found on the Memberships > Discount Codes screen in the WordPress admin.
  • membership_discount_code: Value of the discount code (if used) found on the Memberships > Settings > Discount Codes screen in the WordPress admin.

*required to assign membership levels

Importing Multiple Memberships Per User

If you have multiple membership levels to import for the same user, you can use this import tool by following these steps:

  • Create duplicate rows in your CSV for each membership level you need to import for the same user.
  • You can only import additional membership levels for level groups that allow multiple levels within the group (you cannot import two memberships for levels in a “one per” level group).
  • Additional rows of data for the same user will overwrite their WordPress user fields, including custom user meta fields and billing fields.

We recommend first importing all the users without any membership details, then run a second import for the membership information. In this second import, remove all unnecessary user information (password, role, name, custom user fields). You only need the user_email field to match the existing user (from the first import) to the membership data import.

Maintaining Active Subscriptions

For sites that want to continue or update an existing subscription, your import file must contain the membership_subscription_transaction_id and membership_gateway fields.

Without these fields, PMPro’s gateway integrations will not know which user to attach a new incoming gateway message to (new order, failed payment, subscription cancellation).

PMPro Subscription Columns

  • membership_subscription_transaction_id**: The gateway’s Subscription Transaction ID (required) if you want to continue or update an existing subscription. You can find this data on the Memberships > Orders page in the WordPress admin.
  • membership_gateway**: The Payment Gateway for the user’s recurring subscription. Possible values are “check”, “stripe”, “paypalstandard”, “paypalexpress”, “paypal”(for website payments pro), “payflowpro”, “authorizenet”, and “braintree” (without the quotes).
  • membership_payment_transaction_id: The gateway’s Payment Transaction ID (optional). You can find this data on the Memberships > Orders page in the WordPress admin. This field is useful as a reference for a user’s last payment made between the site and your gateway. For import, you set this to the last single transaction ID received as part of the users’s subscription.
  • pmpro_stripe_customerid: If you are using the Stripe gateway, include this column in your import.

**required to update recurring subscription

Import User Custom Fields

  • You can import any custom field that you have added to your WordPress site using Paid Memberships Pro User Fields.
  • You can also import custom fields for other uses on your site, such as customer data for WooCommerce.

To import custom fields, add additional columns to your import file where the column name is the unique meta_key used for your user field.

Parent/Child Relationship Import

To import members that require a parent/child relationship, configure the PMPro Group Accounts Add On and follow the import steps.

Last updated on May 13, 2026


Was this article helpful?
YesNo