Importundo

Guide · about five minutes

Getting started

This walks through one complete import, start to finish, on a site where nothing has been set up yet.

If you want to try it without touching real data, download the sample CSV from Importundo → Settings → Sample file. It imports cleanly on a fresh install and can be rolled back afterwards.

1. Prepare the file

Any CSV works. The first row should be a header row naming the columns — the importer uses those names to guess the mapping for you.

Header names are matched loosely, so Post Title, post_title and post-title are all recognised as the title. Case, spaces, underscores and hyphens are all ignored.

A minimal file looks like this:

title,content,status,categories
"Hello world","<p>My first imported post.</p>",publish,"News"
"Second post","<p>Another one.</p>",draft,"News, Updates"

Two things worth knowing before you export:

2. Choose the file

Go to Importundo in the admin menu (it is also listed under Tools → Import).

Pick the post type you are importing into, then drop the file onto the page or use the file picker.

If the file is bigger than your server's upload limit, the page tells you what that limit is. Upload the file to wp-content/uploads with FTP or your host's file manager, then open My file is too big to upload and enter the full server path instead. Nothing is copied — the importer reads it where it sits, and never deletes a file you supplied that way.

3. Check the mapping

The importer reads the header row, guesses what each column is, and shows you the guess next to the first three real values from that column. Reading down the sample column is the fastest way to spot a mapping that went to the wrong field.

For each column you can:

If the columns look wrong entirely — everything crammed into one column, or garbled characters — open Do the columns look wrong? and set the delimiter or encoding by hand, then press Re-read file. That resets the mapping, because the columns themselves change.

4. Decide create versus update

Under Create or update, pick what identifies an existing post:

Matching keyUse it when
NothingYou are importing new content and there is nothing to match against. Every row creates a post.
Post IDYour file came from an export of this same site.
SlugYour file has a stable, unique URL slug per row.
TitleTitles are unique and stable. Be careful — titles change.
A custom fieldBest option for recurring imports. Map a column such as sku or external_id to a custom field, then match on it.

Then choose the behaviour:

This is what makes an import repeatable. With a matching key set, running the same file twice changes the same posts rather than creating a second copy of everything.

5. Read the preview

Press Preview import.

The preview resolves the first ten rows the same way the import will, and shows you what each one does. Nothing is written to your database at this point — the preview performs no writes at all.

Each row shows:

If the preview says something you did not expect, go Back to mapping and change it. You can go back and forth as often as you like without re-uploading the file.

The retention window is shown here too, so you know how long this import can be undone for before you commit to it.

6. Run it

Press Import.

The import runs in background batches on your server. You can close the tab, navigate away, lose your connection or restart PHP — it keeps going and resumes from the last committed row without repeating anything.

The progress screen shows rows processed and remaining, live counts of created, updated, skipped and failed, a rows-per-second rate, and an estimate of the time left. Pause stops it after the current batch; Resume continues from where it stopped. Cancel stops it for good, and everything it already wrote remains rollback-able.

You can leave and come back through Importundo → History.

7. Afterwards

When it finishes you get a summary and, if any rows failed, the error log below it.

Failed rows

Each one lists its row number, error type, reason and raw content. Filter by type using the chips. Two ways forward:

Rollback

The Roll this import back button undoes the whole thing:

Rollback is also available from Importundo → History, where each import shows the date its rollback window closes.

8. Save the mapping

If you will import a file with these columns again, press Save as template on the mapping step. The template stores the mapping, transforms, matching key and behaviour settings.

Next time, upload the new file and apply the template from the dropdown at the top of the mapping step. If the new file is missing a column the template expects, you are told which one — the mapping is not silently dropped.