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.
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
| Source | What you give | What you get |
|---|---|---|
| WordPress file | The .xml file from Tools → Export in WordPress, with Posts chosen | Posts only. Pages, attachments and menu items are left out, and so are posts in the WordPress trash |
| CSV file | A file with a header row that has title and body at least | One post per row that has a title |
| Shopify or BigCommerce store | The store address and, if needed, an API token | The blog posts in your store |
| Other blog feed | A blog address or a feed address | The 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.
| Column | Notes |
|---|---|
title | Required. A row without a title is skipped |
body | The post text, as HTML |
slug | Empty means CMSKite makes one from the title |
status | published imports as published. Anything else imports as a draft |
publishedAt | A date. Used only for a post that imports as published |
excerpt, category | Text. A category that does not exist yet is created |
tags | Separate 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.comaddress, 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 theread_contentscope and paste its Admin API token. - BigCommerce: type the store hash, which is the code in your admin address (
store-abc123xyz.mybigcommerce.comgivesabc123xyz). 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
Read the file or feed
Choose Read posts, or pick your file. The page lists the posts it found.
Pick posts
Posts whose address already exists in your website are marked Already here and are not picked at first.
Choose how to save
Tick Save everything as drafts to review every post before it goes live.
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.







