Migrating or Importing MemberPress Data

Before reading this page, be sure to have reviewed our  Migrating Overview page first!

While it will likely be much easier for you to simply create your MemberPress Memberships, Rules, and Coupons manually, you can use the Importer to import them as well. 

Important note: before you can import rules or coupons, you must first have created or imported your memberships.

Here's a breakdown of what each of these CSV files should look like:

Memberships CSV Format

Please be extremely careful to follow the formatting listed below EXACTLY. Failing to do so EXACTLY will result in your file failing to import correctly. 

Required Columns:

  • name -- Name of the Membership. Can be any small string of text.
  • price -- Price of the Membership. Can be any number in decimal format without a currency symbol -- for example: 5.99 ...
  • period -- Number of weeks, months or years. Can be any valid whole number if the period_type='months' or period_type='weeks' but anything else, this can only be 1.
  • period_type -- This is the period type. Can be 'weeks', 'months', 'years' or 'lifetime'.

Optional Columns:

  • trial -- Sets whether or not the Membership has a trial period. Can be 1 for true or 0 for false. Defaults to 0.
  • trial_days -- Number of days the trial will last. Can be any whole number. Defaults to 0.
  • trial_amount -- The amount that will be charged to start the trial. Can be any number in decimal format without a currency symbol -- for example: 5.99 ...
  • group_id -- The group_id (which should already exist in MemberPress) of the group that the Membership should belong to. Must be the ID of a valid memberpress group. Defaults to 0 (which indicates no group).

Rules CSV Format

Please be extremely careful to follow the formatting listed below EXACTLY. Failing to do so EXACTLY will result in your file failing to import correctly. 

Rules must be imported first, then followed by Access Conditions (see below). Access conditions are used to define what Memberships or Users etc have access through the rules.

Required Columns:

  • type -- The type of the rule. Can be 'single_post', 'category', 'tag', 'all_posts', 'single_page', 'parent_page', 'all_pages', 'partial', 'custom' or any number of custom post type rule types in the format 'single_forum' / 'all_forums' ...
  • target -- The text that goes along with the rule, for 'single_*' it should be the ID of an existing post or page, for 'all_*' or 'partial' should be blank, for 'category' or 'tag' should be the text of the tag or category, for 'custom' should be a request_uri or the regexp of a request_uri.

Optional Columns:

  • regexp -- Only applicable if type="custom" ... if set to 1 it will interpret the target as a regular expression. If set to 0 the target will be interpreted as a normal string. Defaults to 0.
  • drip -- Controls whether or not there's a drip for this rule. Can be 1 for true or 0 for false. Defaults to false.
  • drip_type -- Drip type can either be 'days', 'weeks', 'months' or 'years'. Defaults to 'days'.
  • drip_duration -- The duration of the drip (number of days, weeks, months or years). Can be any whole number. Defaults to 0.
  • drip_trigger -- The event that triggers the drip. Can be 'registers', 'fixed', 'rule-products' or a valid Membership ID. Defaults to 'registers'.
  • drip_after_date -- If drip_trigger is set to 'fixed' then this is required and must be set to a fixed date in the format of YYYY-MM-DD.
  • expire -- Controls whether or not there's an expiration for this rule. Can be 1 for true or 0 for false. Defaults to false.
  • expire_type -- Expire type can either be 'days', 'weeks', 'months' or 'years'.
  • expire_duration -- The duration of the expiration (number of days, weeks, months or years). Can be any whole number. Defaults to 0.
  • expire_trigger -- The event that triggers the expiration. Can be 'registers', 'fixed', 'rule-products' or a valid Membership ID. Defaults to 'registers'.
  • expire_after_date -- If expire_trigger is set to 'fixed' then this is required and must be set to a fixed date in the format of YYYY-MM-DD.

Access Conditions (See Rules) CSV Format

Please be extremely careful to follow the formatting listed below EXACTLY. Failing to do so EXACTLY will result in your file failing to import correctly.

Rules (above) must exist before you can import Access Conditions.

Required Columns:

  • rule_id -- The ID of the Rule these Access Conditions should apply to.
  • access_type -- The type of access being imported. Can be 'membership' or 'member'.
  • access_condition -- The value of the access_type above. So for example, if 'membership' is the access_type, then a Membership ID should be used here. Or if 'member' is the access_type, then the username or email address for the existing user should be used here.

Coupons CSV Format

Please be extremely careful to follow the formatting listed below EXACTLY. Failing to do so EXACTLY will result in your file failing to import correctly. 

Required Columns:

  • type -- The discount type of the coupon. Can either be 'dollar' or 'percent'.
  • discount -- The discount that will be charged to start the trial. Can be any number in decimal format without a currency symbol or percent symbol -- for example: 5.99 ...
  • product_id_0 -- An ID of a Membership that this transaction is for. Must be the ID of an already existing Membership in the database.

Optional Columns:

  • code -- The coupon code. This defaults to a randomly generated coupon code.
  • usage_amount -- Number of times the coupon can be used. Can be any valid, whole number. Defaults to 0 (which means unlimited).
  • trial_days -- For auto-recurring membership payments only. Specify the number of trial days the user gets by using this coupon before their regular payments begin. Defaults to 0 (no trial override).
  • trial_amount -- For auto-recurring membership payments only. Specify the amount the user will pay for their trial override days (see above). Defaults to 0.00.
  • expires_at -- The expiration date of the transaction. Must be in the format "YYYY-MM-DD hh:mm:ss". Defaults to null.
  • product_id_N -- This actually represents a dynamic number of columns ... it is an ID of a Membership that this transaction is for. The 'N' references any whole number. The first product_id_0 is a required field but many columns that are numbered can be present.

Uploading the File

To upload the file(s) that you have created, simply follow these steps:

  1. Go to the MemberPress Plugin > Import. Once there, select your file type (either Memberships, Rules, or Coupons) from the type of file to import drop down menu:
  2. Next, use the "Choose File" button to upload your file (you can only import one file at a time). 
  3. Finally, click the upload button.

Importer Messages

After you import your file, the importer will show you a couple of different lines and boxes to let you know how your import went. Below these are outlined.

X Rows Successfully Imported - Here, the importer will tell you how many rows (in the place of X) were successfully imported.

X  Rows Failed to be Imported - Here, the importer will tell you how many rows (in the place of X) failed to import.

X Total Rows Processed - Here, the importer will tell you how many total rows (in the place of X) were processed.

Row Success Messages: - In this box you will see any success messages related to your most recent import. 

Row Errors: - In this box you will see any errors related to any rows from your most recent import. The message should be detailed enough for you to be able to know what you need to fix so your file works properly upon import. 

CSV for failed rows ... copy these, fix and reimport: - Here you will be given the exact rows that need to be fixed. Make note of them to fix the rows with the errors.