How to import or export blog posts
In TeleportHQ, you bring posts in from a spreadsheet or another blog with the Import Posts button (the upload arrow) at the top of the Blog panel. A CSV or JSON file holds one post per row; a Markdown file is one post; a ZIP of Markdown files brings in a whole folder of articles with their pictures. You download all your posts with More → Export Posts, as CSV or JSON. The Help Center has the same buttons (Import Articles, Export Articles).
Before you start
- Your project needs the Blog or the Help Center switched on. See How to add a blog to your site or How to add a help center to your site.
- Import isn't tied to a plan. Export needs a Trial, Pro or Premium workspace. See What's the difference between Trial, Pro and Premium?
- There is no direct import from WordPress or other platforms. Export your posts from there as CSV or Markdown, then shape the file the way the import panel's guide shows.
- For Markdown files and ZIPs (folders, front matter, pictures, links), see How to import Markdown files into your blog or help center. This article covers CSV and JSON.
Import posts from a CSV or JSON file
- In the left sidebar (the icon column), click Blog, or Help Center.
At the top right of the panel, click the upload arrow (tooltip Import Posts, or Import Articles). A panel with an empty list also offers Import posts below Create Post.
In the Import Blog Posts panel, click Format requirements & examples, then the CSV or JSON tab. The guide lists every column the import reads. Click the copy button next to the example to start your file from it.
- In your file, fill at least the title of each post. The most useful columns:
status:draft(the default) orpublished. Apublished_atin the future schedules the post.dateorpublished_at: the date your site shows for the post, for example2024-03-15.created_at: keeps an imported archive in its original order.content: the post's text, as HTML.featured_image_urlfor the main picture, andgallery_imagesfor a list of more pictures.category: a category name. A name your blog doesn't have becomes a new top-level category.sort_order: the post's place in your own order of the whole blog,1first, for Manual Order. Posts without one come after the posts that have one, newest first. See How to put posts or articles in your own order.no_index,canonical_url,redirect_url,redirect_type: the post's SEO settings.
- Drop your
.csvor.jsonfile on the box ("Drop a .csv, .json, .md or .zip of Markdown files here"), or click it to choose the file. - Read the check: "Found 24 valid posts ready to import", with any errors and warnings below it.
- Click Import followed by the number, for example Import 24 Posts. Wait until the progress reaches 100%.
Export your posts
- At the top right of the Blog panel, click More (the three dots).
Click Export Posts (Export Articles in the Help Center).
In the Export Blog Posts window, under Choose format, pick CSV (Spreadsheet-compatible) or JSON (Developer-friendly).
- Click Export as CSV or Export as JSON. A file named
blog-posts-export-followed by today's date downloads.
Check that it worked
- After an import, a message says, for example, "Successfully imported 24 posts". If some rows couldn't be imported, the panel stays open and lists them; click Done to close it. Posts without a
statusin the file show in the panel with a Draft badge. - After an export, the message "Exported 24 posts as CSV" appears, and the file is in your downloads.
Troubleshooting
Imported posts don't appear on my site Posts without a status in the file are imported as Draft, and drafts aren't shown. Open each post and set Status to Published, or add a status column with published before importing. To publish many at once, see How to publish, move or delete several posts at once.
"File is too large. Maximum size is 10MB." CSV, JSON and Markdown files are limited to 10 MB (a ZIP to 250 MB). Split your posts into several smaller files and import them one by one.
"Please upload a .csv, .json, .md or .zip file" Only those files are accepted. Save your spreadsheet as CSV first.
"CSV file contains only a header row with no data" The file has column names but no posts. Add at least one row with a title.
"JSON must be an array of blog post objects" The file must start with [ and hold one { … } object per post. Compare it with the JSON example in the guide.
A warning says Unknown status, defaulting to "draft" The status in that row isn't one TeleportHQ knows. Use draft, published, scheduled or archived.
A row reads Unreadable publishedAt or Unreadable createdAt The date in that row couldn't be read, so it was left out. Write dates as 2024-03-15.
Export Posts shows a PRO label and opens an upgrade window Your workspace's trial or subscription has ended. Subscribe to export. See How to subscribe to Pro or Premium.
"No posts to export" The blog has no posts yet, so there is nothing to download.
Good to know
- Import has no limit on the number of posts. Files with more than 500 posts can take a few minutes ("Large import detected.").
- In a CSV or JSON import, a row whose
sluganother post already has gets a new address ending in-1,-2: it doesn't replace that post. To update posts in place, import them as Markdown. See How to import Markdown files into your blog or help center. - A date without a time is stored at noon (UTC), so the post shows the same day for visitors in almost every time zone.
- In JSON, the same fields are written in camelCase (
featuredImageUrl,readingTimeMinutes); the snake_case names work too. - Export includes posts of every status: draft, scheduled, published and archived. A JSON export imports back as it is.
- On a site with several languages, import and export use one column per language and field, named with the language code, for example
fr_titleores_content. A field left empty uses the main language. See How to translate blog posts. - Blog and Help Center use the same panel and the same file format. The window and the file still say "Blog Posts" when you export from the Help Center.