Import WP – Export and Import CSV and XML files to WordPress


Our optimised WordPress importer makes it easy to export and import CSV and XML files into WordPress posts, pages, categories, tags, custom post types, and custom taxonomies. We have simplified the process to Import attachments, images, and any WordPress data using our custom visual data selection tools that make it straightforward to import XML or CSV files from any data feed.

Our WordPress exporter allows you to export CSV, XML or JSON files with data from any wordpress post type or taxonomy, including exporting custom fields, images, attachments, and related terms. This means you can easily export CSV, XML or JSON files containing only the WordPress data and structure you need.

Import CSV and XML files to WordPress posts, categories and users

To create a csv importer or xml importer the steps are the same, except that xml files contain a nested data structure, instead of csv files that containing rows and headings.

  1. Choose Import file – Import an XML or CSV file by either uploading a file, downloading from a remote url, or from a remote FTP.
  2. Map data – Select what parts of your import file should be used to create and update a WordPress record.
  3. Set Permissions – Set what is used to identify each record, and select what the importer can insert, update and delete.
  4. Run the importer.

Import WordPress Attachments from XML / CSV files

Import WordPress attachments from CSV and XML files from either a remote url, an ftp server, the websites filesystem, or the WordPress media library.

Attachments can be downloaded every time the importer runs, or can check the media library to use an existing version if it exists already, saving media from downloading duplicate images.

WordPress CSV and XML Importer features

  • Simple XML data selection tool to Import XML files.
  • Easy to use CSV data selection tool to import CSV files.
  • Import data from remote urls and data feeds.
  • Import data from an FTP server
  • Import data from files stored on the web server.
  • Import data to WordPress posts, pages and custom post types
  • Import categories, tags and custom taxonomies.
  • Import Attachments from Remote URL
  • Import Attachments from FTP server
  • Import Attachments from local filesystem
  • Import Attachments from Media Library.
  • Import Attachment title, caption, alt tag metadata.
  • Import custom fields

WordPress Exporter features

  • Export all available fields, or select which WordPress data to export.
  • Create nested XML files containing repeating data.
  • Customise CSV file headings
  • Customise XML node names and attribute labels.
  • Filter which records are exported

Product Import Export for WooCommerce Add-on

The free Import WP WooCommerce add-on extends Import WP’s XML and CSV import capabilities allowing to Export and Import WooCommerce products.

  • Export WooCommerce products into CSV, XML or JSON files
  • Import WooCommerce products from CSV and XML
  • Import and Export simple, grouped, external, variable and variation products.
  • Export and import WooCommerce products and images including featured product images and gallery images.
  • Export and Import product categories including hierarchy.
  • Export and Import WooCommerce product attributes, categories and tags
  • Export and import product prices and stock levels.

A number of add-ons are available to add functionality to the importer / exporter.

  • Advanced Custom Fields ACF Add-on – ACF XML & CSV data importer and exporter.
  • JetEngine Add-on – JetEngine XML & CSV data importer and exporter.
  • WooCommerce Add-on – XML & CSV Importer and Exporter for all WooCommerce product types.
  • Rank Math SEO Add-on – XML & CSV Importer for Rank Math SEO metadata.
  • Yoast SEO Add-on – XML & CSV Importer for Yoast SEO metadata.
  • Polylang Add-on – XML & CSV Importer for Polylang translations.
  • BLM file importer Add-on – BLM file and media Importer.

Find out more about Import WP Add-ons.

What is Import WP Pro?

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

  • Import data to custom fields – used by themes and plugins to store custom data associated with posts.
  • Import data to WordPress custom post types.
  • Import data to WordPress custom taxonomies
  • Schedule importers

Find out more about Import WP Pro on our website.


  • Import WP, New importer screen
  • Import WP, Post template setup screen
  • Import WP, Run import page
  • Import WP, Import history page


  1. Upload ‘jc-importer’ to the ‘/wp-content/plugins/’ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. A new menu item under Tools > Import WP should appear where you can access the plugin.

For further documentation on installing and using Import WP features can be found here.


How to Import XML files using our XML Importer

Our XML importer allows you to easily import xml files made up from any XML schema / structure.

When importing XML files you first need to set the document base path, the XML base path defines what makes up a record and is used when calculating how many records will be imported.

Using our XML visual data selector you can choose what data to be imported from each record’s XML nodes attributes or text, or you can manually select data using custom written XPath queries.

How to Import CSV files using our CSV Importer

Our CSV importer makes it possible to import CSV files containing any number of columns or rows, with settings to set the CSV delimiter character that is used to separate each data cells defaulting to a comma, set the CSV enclosure character that is used to wrap around each data cell defaulting to a quotation mark, and set what character encoding was used when creating the csv.

Using our CSV data selector you can visually choose what columns should be used when importing each record.

What documentation is available

Documentation can be found online on

What add-ons are available

A full list of available addons can be found here.


March 11, 2023
This plugin is great. And if you have a wish or question, James will help you. He is a true expert. Thanks!!!
August 29, 2022
Great plugin. The free version has good features for most of the tasks. The premium version has good features and excelent support. It is easy to use to import and export spreadsheets and update data. The best plugin I tried for these tasks.
Read all 17 reviews

Contributors & Developers

“Import WP – Export and Import CSV and XML files to WordPress” is open source software. The following people have contributed to this plugin.




  • FIX – Error displayed when removing custom field during loading of its data.
  • ADD – Show unique identifier field for term import template.
  • ADD – Allow for term perents to reference a custom field.
  • FIX – Normalize exporter file path to fix failed download of file on windows.


  • FIX – Issue with parsing xml file swith duplicate node names.
  • ADD – Allow importing of attachments from zip files using ‘iwp_zip’.
  • ADD – New Attachment template allows you to import and update attachment files and meta data.
  • ADD – New url field when exporting attachment post type, contains full url of file.
  • ADD – New term type field on post template.
  • ADD – Merge zip archive import code into core plugin.
  • ADD – Attachments can now be imported from the main zip file by setting the attachment base url/path to iwp_zip.
  • FIX – Reduce plugin size by using @wordpress/scripts.
  • ADD – New import setting to automatically download new files before being manually run.
  • ADD – New Comment import template.


  • FIX – Ftp username and passwords needed to be url encoded if they contain special characters.
  • FIX – Add filter iwp/ftp/passive_mode to enable/disable ftp passive mode.


  • FIX – Parsing of FTP connection strings when using Remote Url to download csv/xml files.


  • FIX – Stop XML File reader parsing tags as xml in CDATA tags.
  • FIX – Importer history date previously recording date as NaN…
  • FIX – Exporter status throwing DivisionByZeroError.
  • FIX – Issue exporting User, Tax, and Comment Exports.


  • FIX – Issue with ImporterRunner being passed to filter instead of Importer.


  • ADD – Update Exporter and Importer Runner.


  • FIX – Exporter issue caused by property access level.


  • FIX – Changing delimiter or enclosure was previously not reindexing the temp config file.
  • ADD – Allow csv exporter to add subrows.


  • ADD – Add continue button to manually ran imports.
  • ADD – field map ability to all fields, mapped field type has been deprecated.


  • FIX – Importer PostMapper version tag breaking when using multiple post types.
  • FIX – Issue with running importer not checking server limits.
  • FIX – Issue with memory limit reading -1 as no memory, insead of unlimited.
  • ADD – Add iwp/importer/init action when importer is being started.
  • Add – Schedule exporter upgrade message.


  • FIX – issue with reading memory_limit set using G suffix
  • FIX – issue with post_date not setting post_date_gmt.


  • FIX – issue with schedule interface, once saved you were not able to add new rows.
  • ADD – Add filters to modify export query.
  • ADD – Add helper function iwp_fn_prefix_items


  • ADD – exported CSV files with default column names will autofill template fields when creating a new importer.
  • FIX – fixed issue with addon data being cleared.
  • FIX – fixed issue with importer status not being displayed correctly.


  • ADD – new delimiter field to attachments and taxonomy settings.
  • FIX – fix UI speed issue.


  • FIX – Revert default exporter delimiter back to “,”


  • ADD – Extend exporter field select options with ability to rename and structure output.
  • FIX – Multiline custom method matching.
  • FIX – Fix missing wp_read_audio_metadata dependency when importing audio files.


  • ADD – new helper function iwp_fn_get_posts_by.
  • FIX – Add memory usage escape check, hard limit of 90%.


  • FIX – Importer CSV file settings page disable flag not changing when fields are updated.
  • ADD – Imported Record tracking is moved from meta tables to own table.
  • ADD – Allow custom text entry on repeater base node field.


  • FIX – Importer session has changed fatal importer error during import initialization.


  • FIX – AddonBasePanel save callback was not following permission rules.
  • FIX – PHP error caused by , at end of arrays.
  • FIX – Importer session has changed fatal importer error during import initialization.


  • FIX – Importer state to work with WP Multisite.


  • ADD – Simplified importer runner, import chunks removed in faviour of state locking.


  • ADD – New action iwp/importer/mapper/init run before a record has been imported.
  • ADD – New action iwp/importer/mapper/before to modify data before importing a record.
  • ADD – New action iwp/importer/mapper/before_insert to modify data before inserting a record.
  • ADD – New action iwp/importer/mapper/before_update to modify data before updating a record.
  • ADD – New action iwp/importer/mapper/after run after a record has been imported.


  • ADD – New filter iwp/allowed_file_types to allow different file types apart from the default xml / csv.
  • ADD – New filter iwp/get_filetype_from_ext to allow setting the file type based on the attached file name.


  • FIX – Addon Panel, Core template fields are no longer excluded from processing due to missing enabled flag.


  • FIX – Hash geneartion on local files now match correctly.
  • ADD – Downloaded media without extensions, attempt to get extension from content-type header.


  • FIX – Restore old method of loading woocomerce / yoast addon
  • FIX – Only the importer that deletes a record, can restore that record unless you use the post_status field.


  • ADD – 1st release of iwp_register_importer_addon api
  • ADD – File encoding dropdown added to xml imports under file settings step.
  • FIX – Issue where 2 fields can match with the same prefix on a group e.g. gallery-id vs gallery-id-url.


  • FIX – Custom methods no longer break when the character “)” is present.


  • FIX – fix js load issue on some installs with ReferenceError: regeneratorRuntime is not defined.
  • FIX – Add missing term description field to exporter.
  • FIX – Term importer now displays list of private taxonomies.
  • FIX – Post taxonomies section hierachy follows stricter rules allowing for multiple terms with the same name if nested under a different parent e.g. “Term 1 > Term 1”


  • FIX – Update importer filter row functionality.


  • FIX – Allow for zip, and gz file extensions to work with previously forced file extensions.
  • ADD – Add new addon registration function iwp_register_importer_addon


  • ADD – New setting to limit the number of log files stored, by default this is set to unlimited.
  • FIX – Fix RCE issue by forcing correct extensions on imported data files.


  • ADD – New “Media Library” option added to attachment download field, allowing you to search for attachments previously uploaded to your media library.


  • ADD – Add filters to allow addons to extend the exporter custom field list and alter data before being exported.


  • ADD – Add contains-in, not-contains-in importer filters.
  • FIX – Fix contains and not contains filters.


  • ADD – Edit name of importer by clicking the importers name on single importer screen.


  • ADD – Attachment fields now have an option to fetch fresh images, instead of always using a found image from media library.
  • ADD – export parent id, slug, and names for taxonomies.
  • FIX – Tweak interface, and add upgrade notice to importer page.


  • ADD – Added new exporter section to interface, allowing the exporting of wordpress data to XML / CSV / JSON.
  • FIX – Fix upload error causing white screen.


  • ADD – Add option to move posts / pages to trash instead of forceful deletion.
  • ADD – Add iwp/custom_field_label filter to alter custom field label on importer log.
  • ADD – Add data mapper and serialization tool.
  • ADD – Add unique identifier field on permissions step for templates using user or post mapper.


  • ADD – Add iwp/register_events hook to allow extension of the event system.


  • FIX – Update custom method handler to work with xml with large amounts of whitespace.


  • FIX – Unable to create new importer due to null file settings merge.


  • FIX – Importer files are now prefixed with id-file_id-
  • FIX – Downloading remote files now return not found, or empty file errors.


  • ADD – New setting field for file rotation
  • FIX – Replace php data flushing with manual ajax fetching of importer status.
  • FIX – Make it easier to select csv fields with empty values.
  • FIX – Properly log skipped records
  • FIX – Fixed issue on windows file uploads causing File Not Found Error.
  • FIX – Allow ‘.’ in field name when using permissions.
  • FIX – Attempt to skip php output in ajax/rest response.


  • ADD – Ability to split imports into sections/chunks.
  • ADD – filter iwp/importer/chunk_size
  • ADD – iwp/importer/datasource
  • ADD – Ability to use custom methods when importing, [custom_fun(“arg1”, …)]
  • FIX – Fixed an issue with repeater sections displaying wrong data on front end.
  • FIX – Fixed double serialization on term meta and user meta when updating records.


  • ADD – Ability to filter records/rows before being imported.
  • FIX – Fixed post_status bugs
  • ADD – Ability to add multiple schedules per importer
  • ADD – Ability to import/export importers.
  • FIX – Fixed issue with cron scheduling, now uses local time
  • ADD – new filter to override the default timeout length


  • ADD – Update importer.custom_fields.process_field to return values
  • ADD – Send xml / csv headers when downloading file
  • FIX – Fix issue with duplicate nested xml tags prematurely closing record.
  • FIX – File process now checks x amount of records when processing file for importer editor.
  • FIX – Template fields are now fetched via REST, passing importer model to get_fields()


  • ADD – Ability to download debug log on import screen.
  • FIX – Enable field label uses Field label instead of key.


  • ADD – Rewrite of PHP code to use namespaces, and WordPress Rest API.
  • ADD – New User Interface, Moved plugin menu item from top level to under tools.
  • ADD – Update frontend code to use ReactJS library.
  • ADD – Debug panel on edit importer screen.
  • ADD – Importer logs to Debug panel.
  • ADD – Importer Settings base64 encoded string.
  • FIX – Remove taxonomy field from term template, now pick taxonomy at start.
  • FIX – AJAX load in field options.
  • FIX – Importer Speed increases.


  • FIX – Permissions bug
  • ADD – Uninstall method to clear database and files on plugin deletion (not deactivation).


  • DEL – Remove unused custom curl methods for downloading attachments
  • FIX – escape output data globally
  • FIX – sanitize data globally
  • FIX – Add nounce’s to all ajax requests


  • FIX – Post Deletion Vulnerability in Import WP.
  • FIX – Add tool to reset Import WP database.
  • FIX – Display errors when processing file fails.


  • ADD – Visual Permission editor to filter fields to be imported per insert/update
  • EDIT – Change csv column selector to show a vertical table with one record.

1.1.4 – 11/07/2019

  • ADD – Fetch files via wp_remote_get instead of curl or file_get_contents
  • ADD – Display information about custom field imports / errors
  • FIX – post_parent field for page template displays correctly
  • FIX – default value not being loaded when enabling field
  • FIX – Fetch non cached row count when selecting xml base nodes

1.1.3 – 08/04/2019

  • ADD – iwp/importer/file_uploaded action
  • ADD – set file encoding via filter iwp/importer/file_encoding
  • FIX – Change plugin support link
  • FIX – include delimiter into record size calculations

1.1.2 – 16/03/2019

  • ADD – store hash of imported attachments to compare against versions
  • ADD – Add iwp/{FIELD_TYPE}_field, iwp/{FIELD_TYPE}/{FIELD_NAME} filters
  • ADD – post date now tries to convert to correct format

1.1.1 – 22/01/2019

  • FIX – Remove whitespace before importing remote attachments.
  • FIX – Attachment Preview.
  • FIX – Preview Error when importer has been first created.

1.1.0 – 16/01/2019

  • FIX – Import WP XMLFile reader, stop xml parsing CDATA
  • ADD – Introduce new methods to make building templates easier
  • EDIT – Re-Structure libs folder.

1.0.5 – 23/10/2018

  • ADD – unique template field, set which field is used to identify a record
  • FIX – Multiple bugs fixed.
  • ADD – new filter ‘iwp/import_mapper_permissions’ to block fields from being modified
  • ADD – new filter ‘iwp/template_unique_fields’ to override the templates unique reference field

1.0.4 – 16/10/2018

  • ADD – Add aria-label to inputs.
  • ADD – Add file index cache based on amount of rows chosen

1.0.3 – 09/10/2018

  • FIX – Reduce memory load by streaming file indices.
  • FIX – Speed up Post importer for larger files.
  • FIX – Add Processing notification when file is added/updated.
  • FIX – Remove templates fetching dropdown option values to edit importer screen only.

1.0.1 – 28/09/2018

  • FIX – multiple XML import issues
  • FIX – import display to show error total
  • FIX – Preview block to hide loading text if no value

1.0 – 29/04/2018

  • Integrated new and improved XML and CSV importers

0.7 – 04/02/2018

  • Add – tooltips ot xml base node fields, Slightly simplify XML process by hiding group base nodes.
  • Fix – Run link on importer archive screen would not start new csv import if one had completed previously.
  • Fix – Change links in about block

0.6 – 22/08/2017

  • Optimise CSV Parser


  • Add tooltips to title, slug, content and excerpt fields.
  • Add the ability to import attachments from a local folder.
  • Fix – Issue with php7.1.1 and saving of template data throwing warning for type missmatch string to array.

0.4.1 – 08/06/2017

  • Fix admin redirect when uploading new file on edit screen
  • Add filter to change template name when importer is created: jci/importer/template_name

0.4 – 20/05/2017

  • Add filter to alter field data: jci/parse_csv_field and jci/parse_xml_field
  • Add filter to alter specific field data: jci/parse_csv_field/{{field_name}} and jci/parse_xml_field/{{field_name}}
  • UI Improvements

0.3.1 – 11/04/2017

  • Change Interfaces
  • Change upgrade notices

0.3 – 26/03/2017

  • Rename plugin to Import WP
  • Fix Broken unit tests, make it work with WP 4.7.3
  • Simplify Creation Process


  • fix wrong user version importer tag when adding
  • allow addition of user meta values (add/edit)


  • Improve create importer screen.
  • fix misspelled version variable causing warnings


  • Fix get_groups() issue in mapper


  • Update XML node selector modal window


  • set default options to field dropdown list
  • skip empty attachments, and taxonomies
  • move preview record box next to fields


  • Disable attachment check when switching importer file from list due to empty results
  • Add XMLReader library for creating xml node and element selectors


  • Switch saving importer files as attachments to custom post type, stopping filling media library with files
  • Clear current import status on new file upload globally


  • Add file session storage for CSV import
  • Save session between imports to keep track of file pointer position
  • Allow multiple records to be imported per ajax request


  • Improved import speed
  • Fixed attachment import error message
  • Added importer permissions to add screen


  • Allow page authors to use username, or ID
  • Fix post author and post name
  • Add Tax Template and Mapper


  • JC Importer