View Categories

How to Import WordPress Posts from Excel

To import WordPress posts from Excel with Content Importer for WordPress & WooCommerce with Excel, go to WPFactory > Content Excel Importer Pro > Import/Update Content, choose post (or page, or a custom post type) in SELECT POST TYPE, upload your .xlsx file, map the columns and click Upload.

Before you start #

  • Put one post per row with headers in row 1. The content sample on the screen shows the layout.
  • Use user IDs in the author column and term names (comma separated) in category and tag columns.

Steps #

  1. Go to WPFactory > Content Excel Importer Pro and open Import/Update Content.
  2. In SELECT POST TYPE, choose post, page or your custom post type.
  3. Choose the .xlsx file and click Upload.
  4. Drag columns onto the FIELDS: post_title (required), post_author, post_date, url (the slug), post_status, post_parent, post_content, post_excerpt and image. Or tick Auto Match Columns.
  5. Map taxonomy columns under POST TAXONOMIES (for example CATEGORY and POST TAG) and any custom fields listed.
  6. Tick Always add new content even if title is the same only if you want duplicates instead of updates.
  7. Click Upload and keep the page open until JOB DONE!.

How each field is handled #

Field Behavior
post_title Required. Used to find an existing item: same title updates it, a new title creates one.
post_status For example publish, draft, pending, private. Published when the field is not mapped.
post_date Read with PHP strtotime, for example 2025-07-15 09:00. Empty uses the current time. A future date with status publish is scheduled by WordPress.
url The slug (post_name), cleaned with dashes.
post_content / post_excerpt HTML allowed. Script tags are removed.
post_parent Parent post ID, for hierarchical types such as pages.
image Featured image: a URL (jpg, jpeg, jpe, gif, png, webp) to download, a Dropbox link, or the Media Library slug of an image you already uploaded.
Taxonomies Comma separated term names. Missing terms are created and parent terms of assigned terms are added too.

Updating existing posts #

Leave Always add new content unticked and keep the exact titles. On update, an empty content cell keeps the existing content, and taxonomy terms are added to the existing ones, not replaced.

Important: when a post, page or custom post type item is updated, the core fields are rewritten even if you did not map them: an unmapped date becomes the import time, and an unmapped excerpt, slug or parent is cleared (the slug is rebuilt from the title). Include post_date, post_excerpt, url and post_parent columns with the current values when you update. Products are handled differently: their core fields are only updated when the content cell is filled.

Note: the title match checks all post types, not only the one you selected. If a page and a post share a title, the existing item with that title is the one updated.

FAQ #

Can I import pages and custom post types the same way? #

Yes. Every public and private post type appears in SELECT POST TYPE except system types such as attachments, revisions, menu items, orders, coupons and product variations.

How do I keep the original publish dates? #

Map your date column to post_date. Use a clear format such as 2021-03-05 10:00; an empty cell uses the import time.

Can I set categories and subcategories? #

Yes. Put the category names comma separated in one column. If a subcategory is assigned, its parent categories are assigned too. To control slugs and descriptions, import the categories first with Import Categories.

Will imported HTML keep its formatting? #

Yes. HTML in post_content and post_excerpt is kept; only <script> blocks are stripped.

Ready to set this up? #

This is part of Content Importer, a paid WPFactory plugin: every screen described here is included with your license. Get Content Importer.

Need a hand? Our team answers every ticket on the Content Importer support forum.