Back to Paid Memberships Pro Import Users from CSV
Paid Memberships Pro Import Users from CSV changelog
Release notes for every version we have on record, newest first.
Latest 1.5.3 · 13 Oct 2026
20 versions
Since Mar 2022
2026 10 versions
1.5.3 Latest 13 Oct 2026 2 fixed
Fixed
- Fixed an issue where blank CSV values overwrote existing user data when updating users using their user ID and having skipped values in other columns. Blank values are now skipped. A value of 0 can still be used to clear the first name, last name, website, and biographical info fields. #95 (@andrewlimaza)
- New users imported with a blank role are now given the site's default role instead of no role. #95 (@andrewlimaza)
1.5.2 30 Sep 2026 2 security
Security
- Removed an unused parameter on the import resume screen that could reset an in-progress import. #93 (@dparker1005)
- Improved sanitization and escaping throughout the plugin to resolve Plugin Check security findings. #92 (@dparker1005)
1.5.1 25 Sep 2026 1 improved3 fixed1 security
Improved
- The import mapping screen now groups PMPro user fields by their field group. #88 (@dparker1005)
Fixed
- Imported memberships with an inactive status or a past end date are now deactivated via pmpro_cancelMembershipLevel() so membership change actions fire, instead of a direct database update that left integrations such as LearnDash with access still granted. #89 (@andrewlimaza)
- Fixed an issue where passwords for users matched by the ID column were saved unhashed when "Update Existing Users" was not checked. #90 (@dparker1005)
- Fixed an issue where the first character of the first row in each import batch after the first was skipped, which could import users with incorrect data. #91 (@dparker1005)
Security
- Importing users now requires the manage_options capability (or manage_network_users on multisite). Use the new pmproiucsv_import_capability filter to change this. #90 (@dparker1005, @kta1kri)
1.5 14 Sep 2026 2 improved
Improved
- The membership_id column is no longer required. CSV files without a membership level can now be imported to create or update users without changing their membership. #85 (@andrewlimaza)
- Add PMPro User Fields to mapping screen dropdowns and automatically detect if header matches the User Field key. #86 (@flintfromthebasement)
1.4.1 25 Aug 2026 1 improved
Improved
- Normalize date-type User Fields to Y-m-d format when importing. #82 (@flintfromthebasement)
1.4 20 Aug 2026 3 fixed1 security
Fixed
- Fixed an issue where order timestamps would always default to current date of import. #81 (@LSNicholls)
- Fixed an issue where 'id' would not automatically map to 'ID' in the field mapper. #80 (@andrewlimaza)
- Fixed an issue where the "Skip Existing Members" option was not being honored when looping through batches. #83 (@dwanjuki)
Security
- Improved security to harden against potential vulnerabilities. Defensive coding practices have been applied to prevent XSS while importing users. #82 (@flintfromthebasement)
1.3 31 Jul 2026 1 improved
Improved
- Added compatibility for multi-value User Fields importing. If a User Field is set to allow multiple values (multiselect,checkbox_grouped etc), the import will now accept a comma-separated list of values for that field. (@flintfromthebasement,@andrewlimaza)
1.2.2 15 May 2026 2 fixed
Fixed
- Fixed an issue where imported members were expiring one full day early because their end date was stored with a 00:00:00 time and the daily expiration cron cancelled them at the start of that day. End dates without an explicit time are now padded to 23:59:59 to match PMPro core's checkout behavior. #74 (@camilolunacom)
- Fixed an issue where error log line numbers reset to 1 at the start of each batch during batched imports, making it hard to tell which CSV row produced each error. The line numbers now track the absolute file row across all batches. #73 (@JarrydLong)
1.2.1 19 Mar 2026 1 improved1 fixed
Improved
- Added additional aliases for subscription and payment ID's.
Fixed
- Fixed an issue where Custom User Meta fields were not correctly importing.
1.2 11 Mar 2026 4 improved1 fixed
Improved
- Added a field mapper logic to allow users to map their CSV columns to the correct fields in PMPro. This allows for more flexibility in the CSV format and can help avoid issues with column headers not matching expected values. (@andrewlimaza)
- Only allow AJAX import method to prevent timeouts for large CSV files. (@andrewlimaza)
- Added "DOING_PMPRO_IMPORT" constant during import process to allow for custom code to check if an import is currently running. (@andrewlimaza)
- Added better support for Paid Memberships Pro v3.5+ and utilizing the restricted folder logic to store files. (@andrewlimaza)
Fixed
- Adjusted the wp_new_user_notification as an argument was deprecated and no longer used.
2025 1 version
1.1.2 29 Oct 2025 1 improved2 fixed
Improved
- Changed importing capability check to "create_users" to allow any non-admin account that has the ability to create users to import users/members. (@andrewlimaza)
Fixed
- Fixed an issue where importing membership order information would create a $0 order. This will now import the membership_initial_payment column value if provided. (@andrewlimaza)
- Strip out any trailing spaces from CSV's column headers to avoid issues when importing. (@jarrydlong)
2024 3 versions
1.1.1 2 Apr 2024 1 fixed
Fixed
- Fixed an issue when trying to import membership_id "0" wasn't cancelling the members level.
1.1 5 Mar 2024 4 improved2 fixed
Improved
- Improved cleaning up temporary user meta during member importing.
- New hook added 'pmproiucsv_after_member_import' to allow custom code to run after membership information is imported.
- Ensure that the person running the import can 'create_users'.
- Added support for Paid Memberships Pro 3.0+ when importing subscriptions.
Fixed
- Fixed an issue where an error would be shown on importing members with subscriptions, even though the import was successful.
- Fixed warnings for missing filetype on AJAX imports in certain cases.
1.0 16 Jan 2024 8 improved1 fixed
Improved
- Refactored entire plugin to be a standalone plugin. This plugin no longer requires the Import Users From CSV plugin to work.
- Supports importing multiple memberships per user.
- Importing membership_id 0 will cancel any existing memberships for the user.
- The password reset email will only send out if the option is selected during import and the user is new. This will never send when updating users or members.
- Added batch importing for large CSV files. This defaults to 50 imports per iteration, adjust the amount by using the filter pmprocsv_ajax_import_batch.
- General improvements and warnings when importing data that is required but missing from the CSV or importing a level that doesn't exist.
- Updated the CSV sample file to have newer values.
- Improved logic around creating orders during import. See documentation for full details.
Fixed
- Fixed an issue where empty meta keys were being imported as "". This now skips and does not update the meta key if the value is blank.
2022 1 version
0.4 14 Mar 2022 5 improved1 fixed
Improved
- Added in an option to skip over members if trying to import members with their current membership level. This is helpful for large CSV files that may have duplicate records.
- Prevent subscriptions from being cancelled by incorrect imports. Keep these subscriptions in tact, but can disable this logic by using the pmproiufcsv_cancel_prev_sub_on_import filter.
- Show a notice if the Import Users From CSV (base) plugin isn't installed or activated which is required for this Add On to work.
- Improved general SQL scripts where possible by using prepare method from WPDB class.
- General improvements to localization of plugin, now translatable.
Fixed
- Fixed issue where expiration date (membership_enddate) was being set to import's date when importing pre-existing members. This now removes the expiration date for existing members if the membership_enddate column is blank or missing.
Undated 5 versions
3.4 1 improved2 fixed
Improved
- Now showing a notice if the Import Users From CSV plugin is not also installed.
Fixed
- Fixed bug with the welcome email sent if using the $pmproiufcsv_email global.
- BUG FIX/ENHANCEMENT: Setting order status to "success" by default for gateway integration. You can also now set a specific membership_order_status column for imported rows.
3.3 1 improved2 fixed
Improved
- Can now set a column with heading membership_discount_code to set the code used for a certain member. It must be an existing discount code to work.
Fixed
- BUG/ENHANCEMENT: Deleting previous import_ user meta before an import. We don't want to process old import data if the same user is imported twice with different columns.
- BUG/ENHANCEMENT: Setting a membership_code_id column now adds the code_id to the pmpro_memberships_users table and also inserts a row into pmpro_discount_code_uses.
3.2 1 fixed
Fixed
- Fixed issue where users imported with no enddate (NULL) were being expired immediately after importing.
3.1 1 new4 changed
New
- Added ability to set the timestamp of the dummy order created by setting a membership_timestamp column. Use a date format like 2014-01-01.
Changed
- Now setting blank membership_enddate values to "NULL" to avoid 0000-00-00 type dates in the database.
- If the membership_status column is inactive or the membership_enddate is in the past (from the time of import), the user will be given the specified membership level and then turned inactive. They will show up in the "old members" list of the Members List and will not have a valid membership level. Their gateway subscription if given will be assumed cancelled at the gateway. PMPro will not send...
- Adjusting format of startdate, enddate, and timestamp to date("Y-m-d", strtotime($var)).
- Setting membership_id for dummy orders based on value in import.
1.1 1 new1 changed
New
- Added ability to send custom emails after import by defining the $pmproiufcsv_email global.
Changed
- Initial version.
