Content

Import and export posts

Import posts from another blog in three ways: a WordPress file, a CSV file, or a blog’s feed. Export all your posts as one CSV file when you want a copy.

Updated 28 October 2026

3 min read

Where to find it

Open Posts and choose Import / export. The page has two cards: Import posts and Export posts.

You need permission to write content to import.

Pick a source

SourceWhat you giveWhat you get
WordPress fileThe .xml file from Tools → Export in WordPress, with Posts chosenPosts only. Pages, attachments and menu items are left out, and so are posts in the WordPress trash
CSV fileA file with a header row that has title and body at leastOne post per row that has a title
Shopify or BigCommerce storeThe store address and, if needed, an API tokenThe blog posts in your store
Other blog feedA blog address or a feed addressThe posts in the feed. A feed often holds only the latest 10 to 50 posts

The WordPress file and the CSV file are read in your browser. Only the posts are sent to CMSKite, one at a time.

WordPress

Each post keeps its title, address (slug), text, excerpt, publish date, tags and category. WordPress’s default category Uncategorized is not copied. If a post has more than one category, the first one is used.

A post that WordPress marks as published imports as published. Any other status imports as a draft.

CSV

Our own export file works as it is. These columns are read. Any other column is ignored.

ColumnNotes
titleRequired. A row without a title is skipped
bodyThe post text, as HTML
slugEmpty means CMSKite makes one from the title
statuspublished imports as published. Anything else imports as a draft
publishedAtA date. Used only for a post that imports as published
excerpt, categoryText. A category that does not exist yet is created
tagsSeparate tags with a comma, a semicolon or |

visibility, locale, seoTitle and seoDescription are in the export file, but the importer does not read them.

Shopify and BigCommerce

Choose Shopify or BigCommerce as the source and press Read every post. CMSKite reads the store's blog posts and shows how many it found.

  • Shopify: type your myshopify.com address, found in Shopify admin under Settings → Domains. If the store is connected in Settings → Connect, leave the token empty. Otherwise create a custom app with the read_content scope and paste its Admin API token.
  • BigCommerce: type the store hash, which is the code in your admin address (store-abc123xyz.mybigcommerce.com gives abc123xyz). In Settings → Store-level API accounts create an account with Content set to read-only and paste its token.

The token is used once and never saved. Then pick posts and run the import as usual.

Other blog feeds

For Wix, Ghost, Medium, Substack or any blog with a feed, use Other blog feed.

Type the address of a blog or of its RSS or Atom feed. If you give a blog address, CMSKite looks for the feed in the page and then tries a few common feed addresses. It reads up to 500 posts and up to 5 MB of feed.

It reads public pages only. An address that is not on the public internet is refused. Nothing is saved until you pick posts and start the import.

Run the import

  1. Read the file or feed

    Choose Read posts, or pick your file. The page lists the posts it found.

  2. Pick posts

    Posts whose address already exists in your website are marked Already here and are not picked at first.

  3. Choose how to save

    Tick Save everything as drafts to review every post before it goes live.

  4. Start

    Choose Import. A progress bar shows how many posts are done. Stop ends the run.

Images stay where they are now and load from the old blog.

If your plan’s post limit is reached, or you lose permission, the import stops and shows the reason. Posts that failed are listed with their reason.

Export to CSV

Choose Download CSV to save posts.csv. It has every draft, scheduled and published post in your website’s default language, newest first. It holds at most 5,000 posts.

The columns are title, slug, status, visibility, locale, publishedAt, excerpt, category, tags, seoTitle, seoDescription and body.

A cell that a spreadsheet could run as a formula starts with a ’ mark in the file. The importer takes that mark off again.

After you import

If addresses changed, add redirects. For per-platform steps, see Move your blog to CMSKite. For a full copy of your content, see Export your data.