Import and export users and customers


Try it out on your free dummy site: Click here =>

Clean and easy-to-use import and export users and customer plugin, for WordPress and WooCommerce. It includes custom user meta to be included automatically from a CSV file and delimitation auto-detector. It also is able to send a mail to each user imported and all the meta data imported is ready to edit into user profile.

  • Import CSV file with users directly to your WordPress or customers into WooCommerce
  • Import thousends of users or customers in only some seconds
  • Export users or customers to a CSV file, filtering by role or registered date
  • You can also import meta-data like data from WooCommerce customers
  • You can assign roles while importing
  • Send a mail to every new user, this mails can be saved as templates and are fully customizable, before sending you can test it
  • Use your own
  • You can also update users if the user is already in your WordPress
  • Create a cron task to import users periodically
  • Edit the metadata (you will be able to edit the metadata imported using metakeys directly in the profile of each user)
  • Extend the plugin using the hooks we provide
  • Compatible with WPML read the documentation to see how you can translate the front-end import and export users page and send translated email notifications to users

Moreover this plugin is compatible with many other plugins to be able to import and include them data, subscriptions, memberships, etc. Take a look:

  • WooCommerce: to import the customer data
  • WooCommerce Memberships: to import memberships
  • WooCommerce Subscriptions: to create subscriptions associated with users while they are being imported
  • BuddyPress: to import custom BuddyPress avatars, fields, groups and roles
  • Advanced Custom Fields: to import data to the fields you define there
  • Paid Membership Pro: to import memberships
  • Indeed Ultimate Membership Pro: to import memberships
  • Paid Member Subscriptions: to import memberships
  • Allow Multiple Accounts: plugin will allow the same rules importing than this plugin
  • Groups: to assign users to groups while importing
  • New User Approve: you can import users and approbe/wait for approve them
  • Users Group: to assign users to groups while importing
  • WP LMS Course: to enroll users in the courses while importing
  • WP Members: to import memberships
  • WP Users Group: to assign users to groups while importing
  • WooCommerce Membership by RightPress: to create memberships while users are being imported
  • WP Private Content Plus: To import and export the groups to which users are assigned

If you have some problem or doubt:

  • Read our documentation
  • Ask anything in support forum, we try to give the best support

In Codection we have more plugins, please take a look to them.


  • Import users and customers from a CSV easily
  • And also extra profile information with the user meta data (included in the CSV with your custom fields)
  • Just upload the CSV file (one included as example)
  • All your users will be created/updated with the updated information, and of course including the user meta
  • Autodetect delimiter compatible with comma ,, semicolon ; and bar |
  • Export users and customers choosing delimiters and using some filters
  • Create a cron task to do the import periodically in order to integrate WordPress with an external system
  • Interaction with lots of other plugins like WooCommerce, BuddyPress, Paid Membership Pro, WooCommerce Memebership, WooCommerce Subscriptions and many others
  • Import users from frontend using a shortcode


Once the plugin is installed you can use it. Go to Tools menu and there, there will be a section called Insert users from CSV. Just choose your CSV file and go!

CSV generation

You can generate CSV file with all users inside it, using a standar spreadsheet software like: Microsoft Excel, LibreOffice Calc, OpenOffice Calc or Gnumeric.

You have to create the file filled with information (or take it from another database) and you will only have to choose CSV file when you “Save as…” the file. As example, a CSV file is included with the plugin.

Some considerations

Plugin will automatically detect:

  • Charset and set it to UTF-8 to prevent problems with non-ASCII characters.
  • It also will auto detect line-ending to prevent problems with different OS.
  • Finally, it will detect the delimiter being used in CSV file


  • Plugin link from dashboard
  • Plugin page
  • CSV file structure
  • Users imported
  • Extra profile information (user meta)



  • Install Import and export users and customers automatically through the WordPress Dashboard or by uploading the ZIP file in the plugins directory.
  • Then, after the package is uploaded and extracted, click Activate Plugin.

Now going through the points above, you should now see a new Import users from CSV menu item under Tool menu in the sidebar of the admin panel, see figure below of how it looks like.

Plugin link from dashboard

If you get any error after following through the steps above please contact us through item support comments so we can get back to you with possible helps in installing the plugin and more.

Please read documentation before start using this plugin.


Columns position

You should fill the first two columns with the next values: Username, Email.

The next columns are totally customizable and you can use whatever you want. All rows must contains same columns. User profile will be adapted to the kind of data you have selected. If you want to disable the extra profile information, please deactivate this plugin after make the import.

id column

You can use a column called id in order to make inserts or updates of an user using the ID used by WordPress in the wp_users table. We have two different cases:

  • If id doesn’t exist in your users table: WordPress core does not allow us insert it, so it will throw an error of kind: invalid_user_id
  • If id exists: plugin check if username is the same, if yes, it will update the data, if not, it ignores the cell to avoid problems


We can use a column called “Password” to manage a string that contains user passwords. We have different options for this case:

  • If you don’t create a column for passwords: passwords will be generated automatically
  • If you create a column for passwords: if cell is empty, password won’t be updated; if cell has a value, it will be used

Serialized data

Plugin can import serialized data. You have to use the serialized string directly in the CSV cell in order the plugin will be able to understand it as an serialized data instead as any other string.


Plugin can import lists as an array. Use this separator: :: two colons, inside the cell in order to split the string in a list of items.

WordPress default profile data

You can use those labels if you want to set data adapted to the WordPress default user columns (the ones who use the function wp_update_user)

  • user_nicename: A string that contains a URL-friendly name for the user. The default is the user’s username.
  • user_url: A string containing the user’s URL for the user’s web site.
  • display_name: A string that will be shown on the site. Defaults to user’s username. It is likely that you will want to change this, for both appearance and security through * obscurity (that is if you don’t use and delete the default admin user).
  • nickname: The user’s nickname, defaults to the user’s username.
  • first_name: The user’s first name.
  • last_name: The user’s last name.
  • description: A string containing content about the user.
  • jabber: User’s Jabber account.
  • aim: User’s AOL IM account.
  • yim: User’s Yahoo IM account.
  • user_registered: Using the WordPress format for this kind of data Y-m-d H:i:s.

Multiple imports

You can upload as many files as you want, but all must have the same columns. If you upload another file, the columns will change to the form of last file uploaded.


You can export a file with all your users data using “Export” tab. There you will be able to find some filters and options to prepare your export.

Hooks: actions and filter

If you want to extend this plugin or use this plugin with any other, here you have a list with all hooks available in the plugin.

This plugin saved me a lot of time and work. Where can I donate?

Thanks, donations help us to continue improving our plugins and allow us to give the best support in the forums Donate Here via PayPal.

I’m not sure I will be able to import all users with correct data and roles. Will you do it for me?

Of course! In Codection we help you to import, migrate, synchronized, update or any other operation you will need to do with your users. Contact us at for more information.

Free and premium support

You can get:

Customizations, addons, develops…

Write us directly to


January 10, 2024 1 reply
I tried 4 plugin for harvesting "User" e-mail addresses from Wordpress and could not get any of them to work. THIS plugin worked perfectly right out of the box so to speak. I'm impressed ! Looking forward to working with its other functions. GREAT work folks !
January 5, 2024 1 reply
I reported a possible issue with placing multiple Extract buttons on a singular page and got response back, just about instantaneous, informing me that doing that was not thought of when the code was developed. He stated that he will look into it for next update but could not promise anything. Lo and behold next morning he had an update ready for download and better still it worked without a glitch. We have 10 buttons on our page for customised download options. I highly recommend the developer as he provided Superb service.
January 5, 2024 1 reply
How cool was that! I reached out to the developer of Import and Export to suggest that they place an Import button at the top of the screen, as well as at the bottom of all of the options, requiring a lot of scrolling. Twenty four hours later, there it is! I don't think I can recall ever having service and follow-up like that from a software developer. So when loyal users see the Start Importing button at the top of their displays, they can thank me for that. Okay, and Javier. Mostly Javier. Okay, it's all Javier!
January 2, 2024 1 reply
Loved the plugin. simple and easy to use. helped to export all the fields that i needed. thank you πŸ™‚
January 2, 2024 1 reply
So far I just used it to export user data and custom fields saved in the user profile. It worked well.
December 6, 2023 1 reply
Just two days ago, on the night of December 4, 2023, I reached out to the support team regarding a critical issue with the Import and Export Users and Customers plugin for WordPress. In the dead of night, I detailed the problem, expressing my frustration with discrepancies in user data post-import after a recent plugin update. Remarkably, within 24 hours, the developer not only acknowledged my concerns but also worked through the night to rectify the issue. The dedication displayed was extraordinary. This swift response culminated in the release of version 1.24.2 of the plugin, and today, on December 6, 2023, I eagerly updated to this latest version. I am thrilled to share that version 1.24.2 has proven to be a game-changer, successfully addressing and resolving the issues I encountered. The plugin is now performing seamlessly, and I'm once again enjoying its reliable functionalities. I extend my heartfelt appreciation to the developer for their dedication and rapid response to my support request. Their ability to turn around a fix within such a short timeframe has left me deeply impressed. In recognition of this exceptional support experience, I will be providing a full and positive rating for the Import and Export Users and Customers plugin. This recent encounter reaffirms my confidence in the product and showcases the development team's commitment to delivering a superior user experience. To the entire team behind the Import and Export Users and Customers plugin, thank you for the prompt resolution and for transforming a frustrating experience into a positive one. Best regards, Jan Salma
Read all 225 reviews

Contributors & Developers

“Import and export users and customers” is open source software. The following people have contributed to this plugin.


“Import and export users and customers” has been translated into 9 locales. Thank you to the translators for their contributions.

Translate “Import and export users and customers” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • On the home page, for importing users we now show the buttons to start the process or save the settings at the top, to facilitate cases where the same options are used repeatedly


  • You can now use multiple user download buttons on the front end. Each with its own options.


  • Changed the way charsets are converted
  • Fixed a problem in select2 selector with AJAX call
  • Fixed an issue when passing the value of which user to assign tickets to when users are deleted


  • Cron call using endpoint of REST-API now can only be done by users that can create users


  • Included new options in the shortcode to export users


  • Fixed a problem with a preg_match detecting commas


  • Improved the way input strings are treated to UTF-8
  • Variables displayed in the shortcode are cleaned up before printing to allow only correct values for them


  • In the cron settings, when it comes to URLs or paths, if it comes to paths and any with a different ending than “.csv” is included, we return a blank string to avoid problems


  • Fixed a problem when choosing to delete users not present in the CSV that caused more users to be deleted than it should


  • Improved multisite support, multiple roles can now be added to sites instead of just one as before


  • Included ActionScheduler for cron task
  • Added the word ‘all’ to use in the column named ‘blogs’ in multisite installation, users it will be added to all the blogs in the network
  • Rewritten a large part of the user importer to improve the code and make it more modular and maintainable.
  • Improved compatibility with PHP 8.2
  • Fixed typos


  • Ready for WordPress 6.4
  • New shortcode import-users, we keep the old one, import-users-from-csv-with-meta, to assure compatibility
  • Fixed an issue with the export users shortcode not working when the theme did not load jQuery in the front end
  • Including the possibility to choose a comma-separated list of user roles when using the export in the front end using a shortcode


  • Replaced the blanks in the label identifiers in the “Custom profile fields” with underscores to make the generated identifiers valid, the identifiers are also converted to lowers
  • New option in export tab that allow you to export arrays as separated list of values, separated by commas; it will only work with: 1 dimension arrays with correlative indexes that does not contain inside any WP_Error object
  • Save settings problem in Export tab fixed


  • Export preferences are now saved when an export is executed
  • New button to save export preferences without having to run an export


  • Fixed a problem that caused that in certain installations with some data when exporting, an error appeared that stopped the process.


  • The plugin now supports reading external files directly created from Google Drive using export CSV option in URL


  • The plugin now supports reading external files using a URL when a path is chosen for importing


  • BuddyPress/BuddyBoss documentation improved
  • Advanced Custom Fields (ACF) addon now includes the ability of uploading images


  • Fix a problem when importing BuddyPress/BuddyBoss data in some installation where the class BP_Groups_Member did not exists
  • New hook to be able to update users without mail


  • Fix a problem when exporting users that ignores the convert timestamp to dates setting thanks to @little_bird for reporting
  • Improved the use of the ACUI_Helper with new methods that call directly the instance


  • Now when you create a customer importing it, it will also appear in wc_customer_lookup table
  • Ready for WordPress 6.3


  • Removed a duplicated hook thanks to @ko31
  • Ready for WordPress 6.2.2


  • Fixed a bug in export when all columns were selected


  • When choosing columns to export, the spaces at the beginning and end of each chosen column are now removed to avoid problems such as “user_login, user_email” not returning data in the second column because the ” user_email” column did not exist as such.


  • Fixed a problem that appeared when you chose to delete users not present in the CSV and at the same time checked do not update users. Users that already existed were not updated and were not marked not to delete, so they were deleted incorrectly.


  • Addon for MelaPress Login Security improved
  • Transient with users created, updated, deleted and ignored added after import


  • Ready for WordPress 6.2
  • New addon for MelaPress Login Security, now when a user is registered and this plugin is activated, if the option of “Reset password in first login” of the MelaPress Login Security is activated, it will be applied the same for new users imported as it were created manually
  • Changed delimiter to import checkbox values in BuddyPress/BuddyBoss, instead of using commas, now the delimiter is ## to avoid problems with values that include commas


  • New filter added to allow to override the default roles that cannot be updated by the plugin
  • Fixed problem that makes appears title “Extra profile information” when there were no fields to show


  • Changed the way that BuddyBoss is detected in BuddyPress Addon to avoid problems with paths


  • New hooks added in documentation
  • Documentation tab improved


  • Included a new way to manage the passwordreseturl wildcard in emails


  • Fixed warning about not defined default value in settings class
  • Now the date filter when exporting users is inclusive, so that the days selected in the search are included in the search and not excluded as before
  • Fixed a problem in export that sometimes generate problems different number of columns in headers and in every user
  • Fixed a problem with the keys to reset password of users included in the emails


  • Improved compatibility with ACF, now the fields of type image or file, generate in the export a new field, with the suffix _url where to show the url of the content and not only the identifier of the attachment in the database as before that was not representative.
  • Improved user interface


  • Fixed a problem when sending email content, which caused the password to always appear as if it had not been changed even though it really had


  • Export results included after export is done, including if some value has been altered because it can contains some spreadsheet formula characters at the beginning
  • You can use now all the wildcards in subjects that were available in body
  • Fixed some issues when exporting data using filtered columns, now source_user_id is filled correctly


  • Fixed a problem with BuddyBoss when exporting users if groups were getting used


  • Improved the way the plugin sanitize values when exporting data to avoid any formula (for spreadsheets) to be exported


  • Improved error handling to avoid the use of wp_die in some error handling and allow for better UX.

  • When choosing a file to import in the frontend import, the name of the file appears, this is something that was lost in yesterday’s graphical improvement of this part of the import


  • Changed the way the button to choose files in the import from front end is displayed to make it easier to apply styles to it
  • Improved error detection when importing users from the front end


  • Improved section on forcing password reset, including new explanations in the documentation and a tool to reset user data in case a redirection loop problem is encountered


  • Fixed an issue that caused the new import screen to be displayed as part of the import results screen
  • Improved the way this plugin displays with the other WordPress export tools
  • Notice improved when an email exists in the system with other username


  • New settings API in plugin
  • Settings API working in backend import (in other tabs it will be working in next versions)
  • Fixed a mispelling in texts
  • New hook to manage if a email is sent to an user (

  • Added a message when an email already exists in the system but is used by a different user than the one indicated in the CSV
  • Fixed error in documentation when WooCommerce Subscriptions was active


  • Now you can choose to delete roles when importing (creating or updating) users
  • Fixed problem with select2.js in homepage tab

  • Fixed issue in BuddyPress integration when exporting data

  • Default values in select change to user the “safer” choice when assigning default values

  • Ready for WordPress 6.0
  • Fixed a problem when no selecting a default role ( and roles was not being updated
  • Roles are now translated when showing

  • Fixed a notice in the new user page if you are using custom fields created by the plugin

  • Improved the WooCommerce addon when working with force reset new password

  • Fixed an issue in the export function when using the BuddyPress addon and not all columns are exported.

  • Escaped all exists to prevent any XSS execution after CSV import


  • New hooks added to override the button text in both shortcodes import and export
  • New addon for WP Private Content Plus to import and export the groups to which users are assigned
  • Revised WPML support

  • New hook added in export before deleting the file from the server

  • Improved some labels to avoid misunderstandings with email options, thanks to @blakemiller

  • Fixed warnings in “Meta keys” tab

  • New hooks added to homepage tab to include more options using addons

  • New hooks to filter username and password of every users being imported

  • Improved BuddyBoss compatibility, now when we include class-bp-xprofile-group.php, we check if BuddyPress is the plugin active or BuddyBoss

  • Changed appearence of some buttons in the right panel
  • Included new strings to localize

  • Improved ACF addon, now you can use relationships with IDs in addition to slugs

  • Fixed fatal error

  • Fixed warning in screen with import results
  • Ko-fi donation link added


  • Export now allow to choose which columns export also in “Export” tab and not only in frontend


  • New class to create diffent HTML elements to standarize plugin code
  • Different fixes in export function to avoid errors
  • New secondary tab section prepared

  • Force version update

  • New hook added: do_action( ‘acui_after_import_users’, $users_created, $users_updated, $users_deleted, $users_ignored ); with 3 variables passed with a list of user IDs with users created, updated, deleted and ignored in the process
  • Fixed bad error thrown when empty role was selected in error

  • Fixed bug in batch_exporter when using PHP 8

  • Fixed bug in batch_exporter that could create fatal errors on executing


  • Improved problem when deleting users, if errors happens but they are notices, we can delete now. Many of the users who have problems with deleting users not present in CSV, was created by the old conditional that checked any kind of error (including notices).


  • Problem solved converting data that has a format date but that is not wanted to be converted, to timestamps when exporting
  • Fixed problems in standard import, in very big databases, there was a problem creating the list of users to assign deleted posts, now this list is created and managed using select2 and AJAX to improve performance and usability

  • Problem solved converting timestamps when exporting
  • If an error raise in the server while exporting, instead only showing the error in the console, we throws an alert to improve user experience

  • Included a note to prevent misunderstandings when testing emails

  • Tested up to 5.8.1
  • Fixed problem with roles export


  • New hooks added to manage extra profile fields
  • Problem solved in BuddyPress addon


  • Fixed problem after 1.18 when exporting users


  • Export in backend and frontend now works using step by step process using client calls to avoid gateway timeouts and other kind of timing limits in very long process
  • Addon for WP User Manager improved to avoid redirection loop


  • Export now can be ordered using an attribute in the shortcode

  • Bug fixed in WP User Manager addon

  • Export shortcode parameter column now also defines the order of the columns

  • Password documentation updated
  • New hooks added for filtering from and to user_registered date in export acui_export_user_registered_from_date and acui_export_user_registered_to_date

  • Ready for WordPress 5.8


  • Array with string keys now can be imported using this syntax inside your CSV cell: key1=>value1::key2=>value2::key3=>value3
  • Improved the way that “Extra profile information” is shown in users profiles to be able to show arrays without notices


  • New option in export to prevent problems when exporting serialized values: serialized values sometimes can have problems being displayed in Microsoft Excel or LibreOffice, we can double encapsulate this kind of data but you would not be able to import this data beucase instead of serialized data it would be managed as strings

  • Fixed bug in WP User Manager addon

  • Objects in CSV can now be printed using serialization

  • Force users to reset their passwords is also compatible with WP User Manager forms
  • Improved the way data to replace is searched preparing the emails
  • Improved the way some data is shown to prevent notices from array to string conversions


  • Now you can filter the columns that are going to be exported using the shortcode and the attribute columns

  • Email templates are being sent translated in the current WPML language if column locale is not set
  • Warning fixed in ACF addon

  • Frontend force reset password fixed

  • Frontend settings GUI improved
  • Force users to reset their passwords after login also available for frontend import
  • Fixed issue created in saving options in frontend when import started

  • Solved this issue
  • Solved this issue
  • Others issues solved

  • You can now force the users to reset their passwords after login if you have changed the password in the import
  • Some code improvements

  • New hooks into shortcode form to enable include actions from there

  • New action class introduced to make easier to use options into the plugin
  • Path to file in homepage tab, now it is saved to prevent to rewrite it in every import


  • Fixed problems importing avatar from WP User Avatar
  • Avatars using WP User Avatar can now be exported
  • Some code improvements

  • Problems importing BuddyPress Groups solved

  • BuddyPress member type import fixed
  • Little improvement in export GUI

  • Frontend import email now can have a list of custom recipients, different to admin email

  • Process import results shown in a table at the end of process


  • New shortcode to export users

  • Fixed problem importing ACF multiple select field type, thanks to @lpointet

  • Fixed warning on export

  • Tested up to 5.7
  • New method to fix error when a WP_Error appear into an array, when the array is being printed

  • Improved messages when deleting users not present in CSV
  • Fixed error when a WP_Error appear into an array, when the array is being printed

  • Improved BuddyPress group management when importing, now you can remove users from a group
  • Improved BuddyPress import, now you can use group ids and not only group slugs

  • New filter to override default permission_callback in rest-api method to call cron


  • New feature added actions, now you can assign posts while you are importing users
  • Code improvements

  • Addon included for WP User Manager – WPUM Groups
  • BuddyPress addon improved


  • New addon included for WPML
  • Email templates are being sent translated if you use the “locale” column in your CSV, so every user will receive the email translated in their own langauge

  • Warning solved, it appears sometimes importing in strtolower operation over roles

  • Bugs fixed exporting users

  • Roles are always managed as small letters to minimize problems writing them
  • Fixed bug exporting metadata that are objects
  • Included new filter in prepare export value

  • Fixed bug in mail templates when wp_editor is disabled

  • In multisite, default role is subscriber if this is not set

  • In multisite, user is added to current blog with role subscriber if user choose to no update roles but the user does not exist there


  • New errors, warnings and notices reporting methods
  • DataTable used to improve data visualization

  • Included an addon for LearnDash to explain how to proceed with an import of students

  • Fixed problem with BuddyPress addon and BP_Groups_Member class

  • New version released

  • Bug fixed importing users


  • Many code changes, making it simpler to include more features and make it easier to debug in a future
  • Export bug fixed: the plugin exports an empty role column that breaks the CSV
  • You can now test cron task from the “Cron” settings tab

  • Fixed problem in “Mail options” that does not allow to remove attachments


  • You can choose what to do with users that being updated, their email has changed: you can update it, skip this user, or create a new user with a prefix

  • When you are exporting data we scape every first data if it starts with a +, -, =, and @ including a \ to prevent any unwanted formula execution in a spreadsheet that will be working with the CSV

  • New option in standard import to choose if passwords should be updated when updating users

  • Export data can now be ordered alphabetically

  • Extra profile fields now can be used also when registering a new user

  • Username now can be empty, in this case, we generate random usernames
  • Code improvements

  • BuddyPress/BuddyBoss avatar can now be imported
  • Code improvements


  • Now you can use HTML emails
  • Code improvements


  • Email sending function created
  • Test email button included

  • Fixed problem importing ACF textarea and other type fields

  • Fixed problem importing ACF text fields

  • BuddyPress member type is now included in the export

  • Usability improve when using delete users not present in CSV (change role options is disabled because they can’t run)
  • Performance optimization, if user is deleted, it cannot be tried to change role

  • New wildcards included in emails for WooCommerce: woocommercelostpasswordurl, woocommercepasswordreseturl and woocommercepasswordreseturllink


  • Multisite check and fix issues
  • Addon to include compatibility included Paid Member Subscriptions by Cozmoslabs thanks to Marian Lowe


  • Code is being rewritten to make it easy to update
  • New filter added to override the necessary capatibily to use the plugin

  • We try to make the plugin compatible with BuddyPress related themes and plugins that uses their functions but they are not BuddyPress really
  • Problems exporting file when a site is behind CloudFare fixed

  • You can now export data from BuddyPress groups
  • BuddyPress addon is now a class instead of different methods


  • You can now export data from BuddyPress fields

  • Added shipping_phone as non date key to avoid datetime conversion


  • REST API endpoint added to execute cron calling the site remotely

  • Problems with apostrophes solved

  • Tested up to WordPress 5.5
  • Improvements in timestamp data export

  • UTF-8 fixed exporting users

  • Bug fixed: after importing new customers, new WooCommerce tables was not populated properly and they were not shown in the “Customers” list into WooCommerce, thanks for reporting @movementoweb (


  • Addon included to import data defined by WooCommerce Custom Fields by Rightpress

  • Cron import fixed. It failed because of get_editable_roles was not declared in cron import
  • Check if role exists in order to show a better message when importing

  • A non-user admin could delete himself automatically deleting users not present in CSV (thanks again to @nonprofitweb
  • Improved “Users only can import users with a role that they allowed to edit” thanks also to @nonprofitweb
  • Forms has now classes to be able to customize the way they are shown using CSV thanks again to @nonprofitweb

  • Added multiple hooks to filter all about emails being sent when importing
  • Included new variables in hooks that already exists in emails being sent when importing

  • Users only can import users with a role that they allowed to edit (thanks to @nonprofitweb

  • Now you can use variables also in Subject, thanks to @vbarrier (

  • Problems with roles being updated that should not be updated in multisite fixed

  • Export checkbox included to avoid conversion to date format to prevent problem with some data converted that should not be converted

  • ACF addon now append values instead of replacing it


  • ACF compatibility included

  • var_dump forgotten
  • Up to version updated

  • Bug fixed in BuddyPress importer
  • Little improvement in extra profile fields

  • Deletion process performance improved
  • Now you can specify if only want to delete users of specified role using a new attribute in the frontend import

  • Extra profile fields now can be reseted

  • Array to string conversion fixed in emails being sent
  • Problems importing data from WooCommerce Membership fixed (thanks to grope-ecomedia)

  • Export improved to avoid more data to be exported as date
  • Tested up to WordPress 4.0

  • List of hooks created and included

  • In export, now user id is called “source_user_id” to avoid problems importing

  • Groups can be now imported by their name instead only of their ids

  • Bug fixed in frontend import, roles being updated when it shouldn’t be updated thanks to @widevents for reporting (

  • Email notification can be sent to administrator of the website when someone use the frontend importer
  • Code improvement

  • Bug found on export fixed

  • MailPoet addon included (in previous we forgot to include the file)


  • MailPoet addon added to include users in list when they are being imported

  • New filter to override message when file is bad formed

  • Duplicate email error thrown updating users

  • New filters added

  • Double email fixed


  • WooCommerce Subscriptions importer included to create subscriptions at the same time you are importing users
  • New hooks added
  • Code improved

  • New shortcut into WordPress importer and exporter default tools to find this one easier

  • Bug fixed in “Mail options”

  • You can now use WordPress default user edited and created emails when importing users
  • WooCommerce Membership by RightPress compatibility included, now you can assign users to their plan while they are being imported

  • WooCommerce Membership addon improved, now you can only assign users to a plan using the membership_plan_id

  • Bug fixed

  • Role included in export
  • test.csv improved
  • Different code improvements


  • Multisite compatiility improved now you can assign users to blogs after import

  • Fixes some issues exporting date and time values

  • Part of the code of frontend has been rewritten to improve readibility
  • New options in frontend upload

  • Changed name into repository to describe better what plugin does
  • Frontend shortcode now accepts role parameter


  • You can now select which delimiter is used in the CSV exports and also you can choose the date time format in date time and timestamps date

  • You can now filter users that are being exported by role and user registered date


  • New tab with a list of all meta keys found in the database, with the type of it and an example to be able to use it in your imports

  • Only users who can create users, can export them


  • Export option included

  • Changed the way HTML emails are declared to prevent problems with plugins like WP HTML Mail

  • Included compatibility with WP User Avatar to import avatar images while the import is being executed, thanks to the support of

  • user_login and show_admin_bar_front are included as WordPress core fields to avoid showing it as custom meta_keys thanks to
    Michael Finkenberger

  • New filters added to custom message shown in log or regular import
  • Last roles used are remembered in import, to avoid you have to choose all time different roles

  • Fixed a problem with a nonce that was bad named

  • Removed some tags when printing log in cron job
  • Improved error message with Customer Area Addon

  • Fixed other problem thanks to @alexgav (

  • Fixed some problems thanks to @alexgav (

  • Added CSS to fix table mobile view

  • Problems uploading users from fronted fixed


  • Filter added to fix CSV files upload problems

  • Typos fixed thanks to

  • Problem using “Yes, add new roles and not override existing one” was fixed

  • Change period was not working if you did not deactivate first the cron job, now it is solved and you can do it without deactivating cron job

  • Role default problem fixed thanks for all the one who notice the bug

  • Addon to import groups of Customer Area Managed Area included

  • Removed old code parts from SMTP settings that now are not available and could create warnings

  • Problem fixed deleting old CSV files

  • Problem fixed in cron job

  • HTML problems fixed

  • Global variable with url of plugin removed

  • More nonces included

  • Directory traversal attack prevented


  • Authenticated Media Deletion Vulnerability fixed in acui_bulk_delete_attachment
  • Nonces incorporated in different AJAX and forms to improve security
  • Media type of media deleted check to avoid problems deleting files
  • SMTP configuration removed completely, we recommend to use a SMTP plugin if you need it in the future, this part was deprecated some versions ago
  • plugins_url() now is well called so images, files and other assets will be shown properly in all cases
  • Data is sanitized always to prevent security and user problems

  • XSS problem fixed when displaying data imported

  • New Spanish hosting partner included
  • Link added to new review

  • We have changed some empty() check to === ” check, to avoid problems with values like blank spaces (thanks to


  • Compatibility with Groups plugin (

  • WP-CLI does not manage our previous version
  • New tab “New features” added

  • Bug fixed

  • passwordreseturllink shows reset password url with a link in HTML

  • Filter improved to avoid strange characters in emails

  • Notice fixed from last change

  • Role now is not required when importing

  • Fix to save email options bug (that appeared in last version)

  • Security fixes to prevent Reflected Cross Site Scripting (XSS) and Cross Site Request Forgery (CSRF), thanks to Application Security for reporting

  • get_users used memory improved filtering fields returned, thanks to @shortcutsolutions (

  • Echo removed from class to prevent message on activation


  • Options management improved
  • GUI improved
  • Now you can change the role of users that are not in the CSV file thanks to California Advocates Management Services


  • Attachments in email templates and mail options now can be deleted thanks to Joel Frankwick


  • Email templates loads also the attachment in Mail options when they are selected thanks to Joel Frankwick


  • Now you can delete users that are not in the CSV file, not only when you are doing an import based on a cron task, but also when you do it from the dashboard or with the shortcode in the frontend thanks to
  • Documentation improved
  • Bug fixed
  • Tested up to 5.1

  • Notices fixed
  • Some file deleted and some urls fixed

  • Plugin is now compatible with plugins that change login url, thanks to @2candela2 (


  • wpml-config.xml added to improve compatibility with WPML
  • Warnings fixed

  • Fixed some files that were not included in the trunk


  • New addon added thanks to @egraznov in order to make possible to import data from LifterLMS


  • New hooks added to make possible to include new tabs from an addon

  • Fatal error fixed in frontend tab


  • Integration with Paid Membership Pro improved thanks to @joneiseman (

  • Readme updated

  • Readme fixed

  • SMTP settings removed, old link was yet placed and caused misunderstandings, thanks to @paulabender for the notice
  • Tested up to WordPress 5.0.3


  • Extra check to avoid problems with CSV bad formed
  • Plugin can now manage attachments in email sending and email templates thanks to Immersedtechnologies
  • Part of the code has been rewritten using classes
  • We have changed the way of detecting the delimiter (thanks to @chaskinsuk


  • Filter added to avoid script inside values of each cells to prevent XSS attacks, thanks for reporting Slawek Zytko


  • Plugin can now manage email templates for managing mails which are sent to users thanks to Immersedtechnologies

  • Documentation improved with some notes about roles management thanks to @stephenfourie (

  • Redeclaration of str_getcsv removed, this is not necessary because of all new PHP versions contains it

  • Filters included for auto password generated
  • Tested up to WordPress 5.0

  • Empty email check added thanks to @malcolm-oph (

  • Mail address with data of users can now be overriden thanks to a new filter

  • Plugin is now compatible with Vimeo Sync Membership thanks to Justin Snavely

  • Now you can use the WordPress loaded schedules in the cron import instead of the three default one thanks to PM2S
  • Mail cron sending fixed issues

  • New hooks added thanks to Joel Frankwick in order to make possible to change default wp_mail() headers

  • New hooks added thanks to @malcolm-oph (

  • Fixed bug thanks to @xenator for discovering the bug (

  • Fixed mail sending in frontend import
  • Now you can activate users with WP Members in frontend import
  • Some fixes and warnings added

  • Fixes and improvements thanks to @malcolm-oph

  • Role import working in cron jobs

  • SMTP tab hidden for user which are not using this option

  • Bug fixed: thanks to @oldfieldmike for reporting and fixing a bug present when BuddyPress was active (

  • Added compatibility to import levels from Indeed Ultimate Membership Pro
  • Fixed role problems when importing

  • Patreon link included and some other improvements to make easier support this develop
  • Deprecated notices included about SMTP settings in this plugin

  • Thanks to Sebastian Mellmann(@xenator) a bug have been solved in password management in new users


  • Thanks to @xenator you can now import users with Allow Multiple Accounts with same Mail via cron


  • Problem with WordPress default emails fixed


  • Sidebar changed
  • Readme completed


  • You can now import users from the frontend using a shortcode thanks to Nelson Artz Group GmbH & Co. KG


  • You can now import User Groups ( and assign them to the users


  • You can now import WP User Groups ( and assign them to the users thanks to the support of Arturas & Luis, Lda.

  • Debug notice shown fixed (thanks for submiting the bug @anieves (


  • Administrator are not deleted in cron task
  • Some hashed passwords was not being imported correctly because of wp_unslash() function into wp_insert_user(), issue fixed


  • Thanks to Attainable Adventure Cruising Ltd now the system to import passwords hashed directly from the CSV has been fixed
  • Thanks to Kevin Price-Ward and Peri Lane now the system does not include the default role when creating a new user
  • Plugin tested up to WordPress 4.9.4

  • Thanks to @lucile-agence-pulsi for reporting a bug ( now this is solved


  • Thanks to the support of Studio MiliLand ( we can now import data to Paid Membership Pro Plugin

  • Thanks to @Carlos Herrera we can now import date fields from BuddyPress

  • Bug fixed


  • New system for include addons
  • You can now import data from WooCommerce Membership thanks to Lukas from
  • Tested up to WordPress 4.9

  • Bug solved in cron import, now mails not being sent to user who are being updated unless you activate those mails

  • Plugin now remember if user has selected or not mail sending when doing a manual import, to select by default this option next time

  • Some of the plugins options are disabled by default to prevent unwanted mail sending

  • Improve email notification disable

  • Sending mail in standard import bug solved, thanks to @manverupl for the error report.


  • New feature thanks to Todd Zaroban (@tzarob) now you can choose if override or not current roles of each user when you are updating them
  • Problem solved in repeated email module thanks to @damienper (
  • Problem solved in mail sending with cron thanks to @khansadi (

  • Thanks to Peri Lane from Apis Productions you can now import roles from CSV. Read documentation to see the way to work.

  • Thanks to @fiddla for debugging all this, as update_option with a value equals to true is saved as 1 in the database, we couldn’t use the ==! or === operator to see if the option was active or not. Sorry for so many updates those days with this problems and thanks for the debugging

  • Bug fixed (now yes) when moving file including date and time thanks to @fiddla

  • Bug fixed when moving file including date and time

  • Bug fixed thanks to @ov3rfly (
  • Documentation also included in home page of the plugins thanks to suggestions and threads in forum

  • If multisite is enabled it adds the user to the blog thanks to Rudolph Koegelenberg
  • Tested up to 4.8

  • Documentation fixed: if user id is present in the CSV but not in the database, it cannot be used to create a new user

  • New hook added do_action(‘post_acui_import_single_user’, $headers, $data, $user_id );

  • Added documentation about locale and BuddyPress Extendend Profile
  • Header changed to avoid any problem about plugin header

  • Fix error in importer.php about delete users (


  • Now you can hide the extra profile fields created with the plugin thanks to Steph O’Brien (Ruddy Good)


  • Now you can import list of elements using :: as separator and it can also be done in BuddyPress profile fields thanks to Jon Eiseman
  • Fixes in SMTP settings
  • SMTP settings now is a new tab


  • Now you can assign BuddyPress groups and assign roles in import thanks to TNTP (
  • Import optimization
  • Readme fixed

  • Bug fixed in SMTP settings page


  • Plugin is now prepared for internacionalization using

  • German translation fixed thanks to @mfgmicha
  • locale now is considered a data from WordPress user so it won’t be shown in profiles

  • German translation fixed thanks to @barcelo
  • System compatibility updated


  • New User Approve support fixed thanks to @stephanemartinw (


  • Plugin can now import serialized data.
  • New filter added: $data[$i] = apply_filters( ‘pre_acui_import_single_user_single_data’, $data[$i], $headers[$i], $i); now you can manage each single data for each user, maybe easier to use than pre_acui_import_single_user_data

  • Now you can automatically rename file after move it. Then you won’t lost any file you have imported (thanks to @charlesgodwin)

  • Password bug fixed. Now it works as it should (like it is explained in documentation)

  • Bug fixed in importer now value 0 is not considered as empty thanks to @lafare (

  • From now we are going to keep old versions available in repository
  • We don’t delete loaded columns (and fields) when you deactivate the plugin
  • Password is not auto generated when updating user in order to avoid problems (missing password column and update create new passwords and use to create problems)

  • Now you can set the email to empty in each row thanks to @sternhagel

  • German language added thanks to Wolfgang Kleinrath
  • Added conditional to avoid error on mail sending

  • Now you can choose if you want to not assign a role to users when you are making an import cron

  • Now you can choose if you want to assign to some user the posts of the users that can be deleted in cron task

  • French translation added thanks to @momo-fr


  • Plugin now is localized using i18n thanks to code provided by Toni Ginard @toniginard

  • Bug fixed in cron import, nonce conditional check, thanks to Ville Kokkala for showing the bug


  • Password reset url is now available to include in body email thanks to Mary Wheeler (


  • Thanks to Bruce MacPherson we can now choose if we don’t want update users roles when importing data if user exist
  • Clearer English thanks to Bruce MacPherson


  • Thanks to Jason Lewis we can now choose if we don’t want update users when importing data if user exist


  • Important security fixes added thanks to

  • New filter added, thanks to @burton-nerd

  • Renamed function to avoid collisions thanks to the message of Jason Lewis

  • Fix for the last one, we set true where it was false and vice versa

  • We try to make it clear to choose if mails (the one we talked in are being sent or not

  • Automatic WordPress emails sending deactivated by default when user is created or updated, thanks to Peter Gariepy

  • wpautop added again


  • user_pass can be imported directly hashed thanks to Bad Yogi


  • Now you can move file after cron, thanks to Yme Brugts for supporting this new feature


  • New hook added, thanks to borkenkaefer


  • Fix new feature thanks to bixul ( )


  • New feature thanks to Ken Hagen – V3 Insurance Partners LLC, now you can import users directly with his ID or update it using his user ID, please read documentation tab for more information about it
  • New hooks added thank to the idea of borkenkaefer, in the future we will include more and better hooks (actions and filters)
  • Compatibility with New User Approve fixed


  • Lost password link included in the mail template thanks to


  • Checkbox included in order to avoid sending mail accidentally on password change or user updated.

  • Documentation updated.

  • Autoparagraph in email text to solve problem about all text in the same line.
  • Tested up to 4.5.1

  • Bug in delete_user_meta solved thanks for telling us lizzy2surge

  • Bug in HTML mails solved


  • You can choose between plugin mail settings or WordPress mail settings, thanks to Awaken Solutions web design (


  • Bug detected in mailer settings, thanks to Carlos (


  • Include code changed, after BuddyPress adaptations we break the SMTP settings when activating


  • Labels for mail sending were creating some misunderstandings, we have changed it


  • Deleted var_dump message to debug left accidentally


  • BuddyPress fix in some installation to avoid a fatal error


  • Now you have to select at least a role, we want to prevent the problem of “No roles selected”
  • You can import now BuddyPress fields with this plugin thanks to AndrΓ© Ihlar


  • Email template has an own custom tab thanks to Amanda Ruggles
  • Email can be sent when you are doing a cron import thanks to Amanda Ruggles


  • Now you can choose if you want to send the email to all users or only to creted users (not to the updated one) thanks to Remy Medranda
  • Compatibility with New User Approve ( included thanks to Remy Medranda


  • Metadata can be sent in the mail thanks to Remy Medranda


  • Bad link fixed and new links added to the plugin


  • Capability changed from manage_options to create_users, this is a better capatibily to this plugin


  • Bug solved when opening tabs, it were opened in incorrect target
  • Documentation for WooCommerce integration included


  • Bug solved when saving path to file in Cron Import (thanks to Robert Zantow for reporting)
  • New tabs included: Shop and Need help
  • Banner background from updated


  • Users which are not administrator now can edit his extra fields thanks to downka (


  • Plugin is now compatible with WordPress Access Areas plugin ( thanks to Herbert (
  • Added some notes to clarify the proper working of the plugin.


  • Bug solved. Thanks for reporting this bug:


  • New GUI based on tabs easier to use
  • Thanks to Michael Lancey ( Mckenzie Chase Management, Inc. ) we can now provide all this new features:
  • File can now be refered using a path and not only uploading.
  • You can now create a scheduled event to import users regularly.


  • Bugs detected and solved thanks to a message from Periu Lane and others users, the problem was a var bad named.


  • Default action for empty values now is: leave old value, in this way we prevent unintentional deletions of meta data.
  • Included donate link in plugin.


  • Thanks to Carmine Morra ( for reporting problems with


p> and
tags in body of emails.


  • Thanks to Matthijs Mons: now this plugin is able to work with Allow Multiple Accounts ( and allow the possibility of register/update users with same email instead as using thme in this case as a secondary reference to the user as the username.


  • Now options that are only useful if some other plugin is activated, they will only show when those plugins were activated
  • Thanks to Carmine Morra ( for supporting the next two big features:
  • New role manager: instead of using a select list, you can choose roles now using checkboxes and you can choose more than one role per user
  • SMTP server: you can send now from your WordPress directly or using a external SMTP server (almost all SMTP config and SMTP sending logic are based in the original one from WP Mail SMTP – When the plugin finish sending mail, reset the phpmailer to his previous state, so it won’t break another SMTP mail plugin.
  • And this little one, you can use email in mail body to send to users their email (as it existed before: loginurl, username, password)


  • Thanks to idealien, if we use username to update users, the email can be updated as the rest of the data and metadata of the user and we silence the email changing message generated by core.


  • Thanks to Mitch ( mitch AT themilkmob DOT org ) for reporting the bug, now headers do not appears twice.


  • Thanks to Adam Hunkapiller ( of ) have supported all this new functionalities.
  • You can choose the mail from and the from name of the mail sent.
  • Mail from, from name, mail subject and mail body are now saved in the system and reused anytime you used the plugin in order to make the mail sent easier.
  • You can include all this fields in the mail: “user_nicename”, “user_url”, “display_name”, “nickname”, “first_name”, “last_name”, “description”, “jabber”, “aim”, “yim”, “user_registered” if you used it in the CSV and you indicate it the mail body in this way FIELD_NAME, for example: first_name


  • Due to some support threads, we have add a different background-color and color in rows that are problematic: the email was found in the system but the username is not the same


  • Thanks to Peri Lane for supporting the new functionality which make possible to activate users at the same time they are being importing. Activate users as WP Members plugin ( consider a user is activated


  • Thanks to Kristopher Hutchison we have add an option to choose what you want to do with empty cells: 1) delete the meta-data or 2) ignore it and do not update, previous to this version, the plugin update the value to empty string

  • Previous version does not appear as updated in repository, with this version we try to fix it

  • In WordPress Network, admins can now use the plugin and not only superadmins. Thanks to @jephperro

  • Solved some typos. Thanks to Jonathan Lampe

  • JS bug fixed, thanks to Jess C


  • List of old CSV files created in order to prevent security problems.
  • Created a button to delete this files directly in the plugin, you can delete one by one or you can do a bulk delete.


  • Fixed a problem with iterator in columns count. Thanks to alysko for their message:


  • After upload, CSV file is deleted in order to prevent security issues.


  • Thanks to idealien for telling us that we should check also if user exist using email (in addition to user login). Now we do this double check to prevent problems with users that exists but was registered using another user login. In the table we show this difference, the login is not changed, but all the rest of data is updated.


  • Bug in image fixed
  • Title changed


  • Warning with sends_mail parameter fixed
  • Button to donate included


  • Screenshot updated, now it has the correct format. Thank to gmsb for telling us the problem with screenshout outdated


  • Thanks to @jRausell for solving a bug with a count and an array


  • WooCommerce fields integration into profile
  • Duplicate fields detection into profile
  • Thanks to @derwentx to give us the code to make possible to include this new features


  • This is the biggest update in the history of this plugin: mails and passwords generation have been added.
  • Thanks to @jRausell to give us code to start with mail sending functionality. We have improved it and now it is available for everyone.
  • Mails are customizable and you can choose
  • Passwords are also generated, please read carefully the documentation in order to avoid passwords lost in user updates.


  • Extra format check done at the start of each row.


  • Thanks to twmoore3rd we have created a system to detect email collisions, username collision are not detected because plugin update metadata in this case


  • Thanks to Graham May we have fixed a problem when meta keys have a blank space and also we have improved plugin security using filter_input() and filter_input_array() functions instead of $_POSTs


  • From this version, plugin can both insert new users and update new ones. Thanks to Nick Gallop from Weston Graphics.


  • Donation button added.


  • Fixed problems with \n, \r and \n\r inside CSV fields. Thanks to Ted Stresen-Reuter for his help. We have changed our way to parse CSV files, now we use SplFileObject and we can solve this problem.


  • From this version, plugin can both insert new users and update new ones. Thanks to Nick Gallop from Weston Graphics.


  • Donation button added.


  • Fixed problems with \n, \r and \n\r inside CSV fields. Thanks to Ted Stresen-Reuter for his help. We have changed our way to parse CSV files, now we use SplFileObject and we can solve this problem.


  • You can import now user_registered but always in the correct format Y-m-d H:i:s


  • Now plugins is only shown to admins. Thanks to flegmatiq and his message


  • Problem solved appeared in 1.1.3: sometimes array was not correctly managed.


  • As fgetscsv() have problems with non UTF8 characters we changed it and now we had problems with commas inside fields, so we have rewritten it using str_getcsv() and declaring the function in case your current PHP version doesn’t support it.


  • fgetscsv() have problems with non UTF8 characters, so we have changed it for fgetcsv() thanks to a hebrew user who had problems.


  • Some bugs found and solved managing custom columns after 1.1.0 upgrade.
  • If you have problems/bugs about custom headers, you should deactivate the plugin and then activate it and upload a CSV file with the correct headers again in order to solve some problems.


  • WordPress user profile default info is now saved correctly, the new fields are: “user_nicename”, “user_url”, “display_name”, “nickname”, “first_name”, “last_name”, “description”, “jabber”, “aim” and “yim”
  • New CSV example created.
  • Documentation adapted to new functionality.


  • Bug with some UTF-8 strings, fixed.


  • The list of roles is generated reading all the roles avaible in the system, instead of being the default always.


  • Issue: admin/super_admin change role when file is too large. Two checks done to avoid it.


  • Issue: Problems detecting extension solved (array(‘csv’ => ‘text/csv’) added)


  • Issue: Existing users role change, fixed


  • First release