Import any XML or CSV File to WordPress


WP All Import – Simple & Powerful XML / CSV Importer Plugin

“It’s a wonderful plugin that does so much, so well that it’s hard to list all of the features. But I’ll tell you this, I was able to import the content of a pair of websites running the ModX CMS into a WordPress install in less than 30 minutes. No joke!”
Alex Vasquez – DigiSavvy Co-Founder & WordCamp Los Angeles Organizer

WP All Import has a four step import process and an intuitive drag & drop interface that makes complicated import tasks simple and fast.

There are no special requirements that the elements in your file must be laid out in a certain way. WP All Import really can import any XML or CSV file.

WP All Import can be used for everything from migrating content from a legacy CMS to WordPress to building a store with an affiliate datafeed to displaying live stock quotes or sports scores to building a real estate portal.

Check out our documentation and video tutorials to make the most of WP All Import.

WP All Import integrates with our companion plugin, WP All Export. You can export posts, WooCommerce products, orders, users, or anything else with WP All Export. Then you can edit in Excel and re-import to the same site or migrate the data to another site with WP All Import.

For technical support from the developers, please consider purchasing WP All Import Pro.

WP All Import Professional Edition

WP All Import Pro is a paid upgrade that includes premium support and adds the following features:

  • Import data to Custom Fields – used by many themes, especially those using Custom Post Types – to store data associated with the posts.

  • Import images to the post media gallery – WP All Import can download images from URLs in an XML or CSV file and put them in the media gallery.

  • Cron Job/Recurring Imports – WP All Import pro can check periodically check a file for updates, and add, edit, and delete to the imported posts accordingly.

  • Import files from a URL – Download and import files from external websites, even if they are password protected with HTTP authentication. URL imports are integrated with the recurring/cron imports feature, so WP All Import can periodically re-download the files and add, edit, and delete posts accordingly.

  • Execution of Custom PHP Functions on data, i.e. use something like [my_function({xpath/to/a/field[1]})] in your template, to pass the value of {xpath/to/a/field[1]} to my_function and display whatever it returns.

  • Guaranteed technical support via e-mail.

Upgrade to the Pro edition of WP All Import.

Need to import XML and CSV to WooCommerce? Check out our WooCommerce add-on.

WordPress CSV Imports

Read on to learn more about the CSV importer functionality of WP All Import. Importing CSVs with WP All Import is exactly the same as importing XML files, because internally, WP All Import actually converts your CSV file to an XML file on the fly. You can use the same XPath filtering options and all the same features you have when importing XML files.

CSV imports don’t require your CSV file to have a specific structure. Your CSV file can use any column names/headings. You can map the columns in your CSV file to the appropriate places in WordPress during the import process.

When importing CSV files, your CSV should have UTF-8 encoding if you are having trouble importing special characters.

In step 2 of a CSV import, you can specify an alternative delimiter if you aren’t using a comma. WP All Import can import CSVs that are pipe-delimited, # delimited, or delimited/separated by any other character.

For CSV import tutorials and example files, visit our documentation. Please keep in mind CSV imports with WP All Import are just like XML imports – you have all the same functionality, and the process is exactly the same. Any of our tutorial videos that apply to XML files also apply to importing CSV files, so if you see a tutorial with us importing an XML file, know that you can follow the exact same steps for a CSV import.


A number of premium add-ons are available to add functionality to the importer and make XML & CSV import tasks to complex plugins simple.

  • Advanced Custom Fields Add-On – ACF XML & CSV importer
  • WooCommerce Add-On – XML & CSV importer for all WooCommerce product types
  • User Import Add-On – XML & CSV importer for users, including user_meta
  • Link Cloak Add-On – Auto-create redirects for links present during an XML or CSV import

Learn more about our add-ons at

A developer API (action hooks) is also available.

Premium Support

Upgrade to the Pro edition of WP All Import for premium support.


Import To WooCommerce

Need to import XML and CSV to WooCommerce? Check out our WooCommerce add-on.

WooCommerce XML & CSV Import Pro Version


  • Choose file.
  • Filtering options.
  • Choose where to import your data.
  • Manage imports.


What Size Files Can WP All Import Handle?

It depends on your hosting provider’s settings. We’ve imported files of 200Mb and up, even on shared hosts. WP All Import splits your file into manageable chunks.

Various settings are available to make it possible to import larger files or speed up your import.

The answer to all of the following questions is yes:

Does this really work with ANY XML or CSV file?
Can WP All Import get ALL of the data out of the file? Even attributes?
Does it work with special character encoding like Hebrew, Arabic, Chinese, etc?


Imports for People Who Want to Save Time

Look –
I know WordPress and WooCommerce and I was somewhat reticent in buying this plugin. But when I looked at what I needed to do

  • migrate in products from a legacy website (letting me take simple products
  • and turn them into variable ones)
  • migrate in multiple images from AWS (which works like a charm)
  • migrate in Yoast SEO content

There was really no other option unless I wanted to go out and hire someone. You might think that’s what you’d do (go to a developer because it’s cheap).

Problem is that is not going to be right and you’ll do it over and over again and pay through the nose. Best bet, spend some time figuring out the imports and it will be amazing.

Pro-tip. AMAZING SUPPORT! If you run into an issue, they will get back to you with a thoughtful, comprehensive solution (not a note saying “a ticket has been logged”) but a solution.

My advice – do it, take the data seriously, take your time, and own your data with this toolset (the plugins make sense), Top notch.

Oh, if you’re experimenting and hate to ask for help. Remember to backup your work!

Pro version is amazing

With the pro version was able to import multiple checkbox entries… so many other things I tried to do that for didn’t work. So impressed. The mapping in the pro is so good too! Well worth the price!

Mixed feelings because posts import deletes categories 🙁

I am not the type giving 1 star reviews just because sth doesn’t work while the rest does. So for now, 3 stars. In case s.o. points out a plugin correction/feature I’d happily change that rating though.
So why 3 stars not five or whatever? Because when you export via wp an xml file that includes all your posts with associated categories, and you now use/test/try WP ALL IMPORT…
…you assume that ANY import to EXISTING POSTS will never DELETE wp items that you aren’t even importing ie over-writing! But this plugin does/did! And worse, that is NOT even logical based on the plugin’s own design:

WP ALL IMPORT everywhere(?) imports only what you “drag & drop” because you WANT it imported. EXCEPT for categories (at a minimum, I haven’t tried tags etc).

I had not chosen to import categories because they stayed the same! I ONLY updated post content, which in the xml file is the item <content:encoded>.
And yet, I noticed that ALL CATEGORY ASSOCIATIONS GOT DELETED by the plugin when it imported the post content to EXISTING posts!

Immensely shocked, I looked through the (great!) help docu the authors provide, here
because guess what, exactly the import of … CATEGORIES again, yes! … is everything but intuitive:

– “Each Post has multiple Categories” – yes, easy
– “Separated by” – what??
– Looking at the exported xml file, I give you what “separates” the categories:

What, you didn’t see it? A simple RETURN separates the categories, look:
<category domain=”category” nicename=”2-inch-heels”><![CDATA[2 Inch Heels]]></category>
<category domain=”category” nicename=”3-inch-heels”><![CDATA[3 Inch Heels]]></category>

Now tell me, how do you “drag” that RETURN into the provided “drop” field?
Prefer typing too? Fine. How do you type that RETURN into the provided “drop” field?

I can’t figure out either, and their linked docu sadly doesn’t help there where you need it.

Also, do they expect me to “drag & drop” or to type all categories individually? When the xml file so nicely lists them out(!), why can’t an otherwise at first sight excellent plugin like this READ the xml file’s category node without further ado??
I don’t get it! Like I said, not intuitive this part. While everything else is, it seems. Pity!

I am left wondering if any of the many 5 star reviewers here have even noticed that their category associations got DELETED from the posts when they too didn’t import all categories because they too thought “why would I? I didn’t change them!”.

And get that, you have to import ALL categories (if you can figure out HOW, I can’t!) because else the plugin DELETES the ones you leave out. It’s beyond me!

Any plugin so powerful to import into existing posts (or pages) should of course NOT DELETE what you don’t import, what you don’t overwrite. To DELETE existing content deserves a special, its own, tickbox (at the very minimum!), like “Delete any not imported category, tag,… associations?”. That’s plain common sense, or not?

To wrap up my review, if the authors could give the category import some attention and fix that, I feel this plugin WP ALL IMPORT would truly deserve 5 stars, hey, I would probably buy it! But the way it is, it has wrecked HAVOC on our site! 🙁

Quality plugin with Outstanding Support

I’m using this plugin on several sites and it has been an invaluable tool. Very well put together and well designed too. On top of this the support is first class, these guys even responded on a Saturday. This is how plugins should be built and this is how support should be provided – good work guys.

Read all 917 reviews

Contributors & Developers

“Import any XML or CSV File to WordPress” is open source software. The following people have contributed to this plugin.


“Import any XML or CSV File to WordPress” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Import any XML or CSV File to WordPress” into your language.

Interested in development?

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



  • improvement: added timestamp to import log lines
  • improvement: added support for bmp images
  • improvement: added new action pmxi_before_post_import_{$addon}
  • security fix: patch XSS exploit
  • bug fix: import pages hierarchy
  • bug fix: error in pclzip.lib.php with php 7.1
  • bug fix: import taxonomies hierarchy
  • bug fix: json to xml convertation
  • bug fix: removed SWFUpload


  • improvement: custom fields delection
  • improvement: new action wp_all_import_post_skipped
  • improvement: updated history page title
  • improvement: optimize large imports deletion
  • improvement: added import friendly name to confirm screen
  • improvement: sql query optimization on manage imports screen
  • bug fix: generation image filename
  • bug fix: wp_all_import_specified_records filter


  • bug fix: import template not worked when downloaded via Import Settings
  • bug fix: updating user login
  • bug fix: import images with encoded quotes
  • improvement: added hungarian translation


  • improvement: new filter ‘wp_all_import_phpexcel_delimiter’
  • improvement: new filter ‘wp_all_import_is_trim_parsed_data’
  • improvement: added new filter ‘wp_all_import_skip_x_csv_rows’
  • improvement: added csv delimiter setting to import options screen
  • bug fix: import duplicate tags


  • bug fix: conflict with the event calendar plugin
  • bug fix: import images for newly created products


  • improvement: Stop parsing data which is not going to be updated
  • improvement: added new filter wp_all_import_phpexcel_object to modify excel data before import
  • bug fix: search for images ending with underscores in media
  • bug fix: import hierarchical posts/pages
  • bug fix: import cpt page templates


  • improvement: compatibility with PHP 7.x


  • improvement: new re-import option ‘is update post type’
  • bug fix: hierarchy taxonomies preview
  • bug fix: empty logs folder generation
  • bug fix: ‘Keep images currently in Media Library’ option for add-ons
  • bug fix: import bundles with gz files
  • bug fix: custom functions for attachments


  • improvement: ‘Force Stream Reader’ setting
  • improvement: new filter ‘wp_all_import_auto_create_csv_headers’
  • improvement: new filter ‘wp_all_import_is_base64_images_allowed’
  • improvement: new filter ‘wp_all_import_set_post_terms’ to leave a specific category alone when a post is being updated
  • bug fix: nodes navigation for xpath like /news/item
  • bug fix: frozen import template screen for cyrillic XML feeds
  • bug fix: conflict between taxonomies & user import
  • bug fix: creating users with the same email
  • bug fix: enable keep line breaks option by default
  • bug fix: composer namespace conflict
  • bug fix: images preview when wp is in subdirectory
  • bug fix: ‘Instead of deletion, set Custom Field’ option for users import


  • added new option ‘Use StreamReader instead of XMLReader to parse import file’ to fix issue with libxml 2.9.3
  • execute ‘pmxi_article_data’ filter for all posts ( new & existing )


  • added de_CH translation
  • added support for .svg images
  • added possibility for import excerpts for pages
  • added new filter ‘wp_all_import_specified_records’
  • added new filter ‘wp_all_import_is_post_to_delete’
  • disable XMLReader stream filter for HHVM
  • improve search for existing images in media gallery


  • fixed ‘Use images currently in Media Library’ option


  • fixed error messages on step 1 in case when server throws fatal error e.q. time limit exception
  • fixed option “Delete posts that are no longer present in your file”, now it works with empty CSV files which has only one header row
  • fixed custom php functions in images preview
  • fixed detecting root nodes with colons in names
  • added es_ES translation
  • added de_DE translation
  • added iterative ajax delete process ( deleting associated posts )
  • added feature to download template/bundle from import settings
  • added new option for importing images “Use images currently in Media Library”
  • added new action ‘pmxi_missing_post’


  • fixed duplicate matching by custom field
  • fixed converting image filenames to lowercase
  • fixed import html to image description
  • fixed import _wp_old_slug
  • added Post ID to manual record matching
  • added ‘Comment status’ to ‘Choose data to update’ section


  • fixed fatal error on saving settings


  • fixed parsing CSV with empty lines
  • fixed parsing multiple IF statements
  • fixed preview in case when ‘Disable the visual editor when writing’ is enabled
  • fixed conflict with WooCommerce – Store Exporter Deluxe
  • added notifications for required addons
  • added support for wp all export bundle
  • added support for manual import bundle
  • added feature ‘click to download import file’
  • added validation for excerpt and images sections
  • added auto-detect a broken Unique ID notification
  • added import template notifications
  • removed support for importing WooCommerce Orders
  • changed absolute paths to relative in db


  • added new options to taxonomies import ‘Try to match terms to existing child Product Categories’ & ‘Only assign Products to the imported Product Category, not the entire hierarchy’
  • added support for Excel files ( .xls, .xlsx )


  • load ini_set only on plugin pages
  • fixed saving import template


  • fixed Apply mapping rules before splitting via separator symbol for manual hierarchy
  • fixed path equal or less than
  • fixed changing unique key when moving back from confirm screen
  • fixed override page template
  • updated wp_all_import_is_post_to_update filter with second argument XML node as array
  • added a second argument to pmxi_saved_post action ( SimpleXML object ) of current record


  • fixed enum fields mapping rules feature


  • Compatibility with 3rd party development:


  • Important security fixes – additional hardening, prevention of blind SQL injection and reflected XSS attacks


  • critical security fix – stopping non-logged in users from accessing adminInit


  • fixed re-count record when a file has been changed at an import setting screen
  • fixed unlink attachment source when posts updated/deleted
  • added a limit 10 to the existing meta values


  • fixed database schema
  • uploading large files


  • fixed updating import settings


  • IMPORTANT: WP All Import v4 (3.2.0) is a MAJOR update. Read this post before upgrading:
  • speed up the import of taxonomies/categories
  • added taxonomies/categories mapping feature
  • added custom fields auto-detection feature
  • added custom fields mapping feature
  • added images/taxonomies preview feature
  • added unofficial support for more file formats – json & sql
  • added new setting (secure mode) to protect your files
  • better import logs
  • updated design


  • fixed pmxi_delete_post action
  • fixed import menu order & post parent for pages
  • fixed import log for continue import feature
  • added is update author option
  • fixed post formats
  • fixed UTC dates on manage imports page


  • changed support email


  • fixed import pages


  • added compatibility with WP 3.9
  • added autodetect session mode
  • updated convertation CSV to XML with XMLWriter
  • fixed import *.zip files
  • fixed xpath helper on step 2
  • fixed showing zeros in XML tree
  • fixed deleting history files
  • fixed autodetect image extensions
  • fixed increasing SQL query length
  • allow post content to be empty on step 3
  • delete deprecated settings “my csv contain html code” and “case sensitivity”


  • Fixed compatibility with addons
  • Fixed “download image” option for import products
  • Fixed CSS for WP 3.8
  • Fixed dismiss links


  • Compatibility with WP 3.8
  • Compatibility with WPAI WooCommerce add-on (paid) 1.2.4
  • Performance Improvements
  • Improved UI
  • Lots of bug fixes
  • New Record Matching section
  • Added option to set Post Status with XPath (the value of presented XPath should be one of the following: publish, draft, trash)
  • Preview navigation


  • Fixed import categories;
  • Updated UI/UX;
  • Added import/export templates feature;
  • Added enhanced session functionality;
  • Added option to set post status with XPath;
  • Added feeds encoding feature;


  • Added support for the WooCommerce add-on


  • Free edition of 3.0 pro release


  • Category list delimiter bug fix


  • Tons of bug fixes, updates, and additional features.


  • Initial release on