How to Export HubSpot Blog Posts
By João Piedade · Updated
HubSpot has two blog exports: a spreadsheet of post data (CSV, XLS or XLSX) and a set of HTML files for your pages and posts. Your images and other files have a third export, a ZIP from the file manager. Each arrives as a download link by email. WordPress has no built-in importer for any of them, so getting the posts into WordPress takes another step: an import plugin, copy and paste, HubSpot's developer API, or a migration tool such as Blog Porter.
This guide is about getting your content out of HubSpot. For the whole move, from hosting to DNS, see how to migrate a HubSpot blog to WordPress. We checked every claim about HubSpot, WordPress and the other tools below on 13 November 2026, on their own websites or on live HubSpot blogs.
The short answer
- A copy for your records: run both HubSpot blog exports and the file manager export. They're free and take a few minutes.
- A handful of posts: copy and paste them into WordPress.
- A developer and a custom destination: HubSpot's CMS Blog Posts API.
- An existing HubSpot private app token: the free Blog Importer for HubSpot plugin.
- Dozens or hundreds of posts going into WordPress: Blog Porter. It reads your public blog and imports the posts with their formatting, slugs and images.
HubSpot's blog exports
Both are on the same page in HubSpot. HubSpot says you need Super Admin access or Publish permission to run them.
Export blog posts (spreadsheet)
- In HubSpot, go to Content → Blog. On some accounts it sits under More.
- Open the Actions menu at the top left and choose Export blog posts.
- Pick a file format, such as CSV, XLS or XLSX, and click Export.
- HubSpot emails you a download link, which also appears in your notification center.
HubSpot's help page describes this as a way to export data about your posts. It doesn't list the columns the file contains. Open it before you rely on it for anything more than an inventory of your posts. Even if it holds everything you need, WordPress's import tools don't include a CSV importer for posts, so you'd still need a third-party import plugin and a column mapping. WordPress's import page points to WP All Import for CSV files. Its WordPress.org page lists importing images into the media gallery among its Pro features, so without Pro, images in your posts keep loading from HubSpot.
Export all pages and blog posts (HTML)
The same Actions menu has Export all pages and blog posts (HTML). HubSpot says these files are meant for moving content to another platform, and that your template files sit in a Styles folder inside the download.
It's a useful backup, and worth keeping. But it's a set of HTML files, and WordPress's import tools don't read those either, so you'd copy each post's content out of its file by hand.
Export your images and files (ZIP)
Neither blog export includes your images. They live in HubSpot's file manager:
- Go to Content → Files. On some accounts it sits under More.
- Select the files and folders you want, or drag a box around them. You can keep selecting as you move between pages.
- At the bottom, click Export (ZIP) and choose who gets the download link.
HubSpot says you need Super Admin permission to export files. The ZIP is a backup. It doesn't change the image addresses inside your posts, which still point to HubSpot (see "Where your HubSpot images live" below).
Option 1: the RSS feed
Every HubSpot blog has a feed at its blog address with /rss.xml on the end, such as www.yoursite.com/blog/rss.xml. WordPress's RSS importer can read a feed.
The catch is length. HubSpot sets the number of posts in the feed in your blog settings, with a maximum of 50. We opened the feeds of five HubSpot blogs that each had between 359 and 1,638 posts in their sitemaps. Three feeds showed 10 posts and two showed 50.
So the feed brings over your latest posts at most, not your archive.
Option 2: copy and paste
Open each post on your live blog, copy it, and paste it into a new WordPress post. It's free, it works for any blog, and it's slow. For every post you also set the date, slug, author and tags by hand. Our estimate is 10 to 15 minutes per post, so a 300-post blog takes roughly 50 to 75 hours.
Watch the images. Pasted images keep loading from HubSpot (see below). In WordPress, select each image and use Upload to Media Library in the block toolbar, or the image may stop displaying when the original file goes away.
Copy and paste makes sense for a few posts, and for the website pages that no blog tool moves.
Option 3: HubSpot's API, for developers
HubSpot's CMS Blog Posts API lists your posts with their HTML body (postBody), slug, publish date, tag IDs and featured image. It's a route only if you write code:
- You need an access token for your HubSpot account. HubSpot stopped letting existing accounts create new legacy private apps on 26 October 2026, and recommends service keys for new integrations. Apps you already have keep working.
- The
authorNamefield isn't the blog author. HubSpot warns that it returns the user who most recently published the post, so you look up the real author separately. - Tags come back as IDs, which you turn into names with another request.
- Images stay as links to HubSpot. You download each one and rewrite the links.
- Then you write each post into WordPress with its date, slug, author and tags.
It reaches every post, drafts included, but it's a small software project, not an export. HubSpot's developer docs also list a Blog Comments API, the only route we found to your blog comments.
Option 4: Blog Importer for HubSpot
Blog Importer for HubSpot is a free WordPress plugin that reads your posts through HubSpot's API. Its page says it imports posts with their tags and inline images, can match each post to its HubSpot author or create a WordPress user for them, and can sync on a schedule.
It needs a HubSpot private app access token with the CMS content scope, and HubSpot says only Super Admins can access private apps. Since HubSpot no longer lets you create new legacy private apps, this route suits you if you already have one. The plugin's page doesn't say whether a HubSpot service key works instead, so ask its developer before you rely on one.
Option 5: Blog Porter
Blog Porter is a WordPress plugin. You install it on your WordPress site and enter your HubSpot blog's public address. It doesn't need a HubSpot login, an API key or an export file.
It confirms the blog through its RSS feed, then lists the posts from your domain's sitemap, where HubSpot adds every live blog post. So it isn't limited to the 50 posts in the feed. For each post it imports:
- the title and the formatted post body
- the original slug
- the publish date and author, read from the post page's structured data
- available inline and featured images, downloaded into your WordPress Media Library, with a retry for any that fail
Tags come from that structured data or, when it has none, from the tag links HubSpot's standard blog templates show on each post. Custom templates may not show them, so check a few posts after the import and re-add any missing tags in WordPress.
The analysis is free. It lists the posts it found and shows the exact price before you pay, and you can leave posts out. Blog Porter costs $0.20 per post, with a minimum of 5 posts, paid once. A 300-post blog costs $60. The import runs in resumable batches, so an interruption doesn't send you back to the start.
Two things to get right first:
- Enter the blog's address, not your home page or a post. That's the address your blog listing lives at, such as
www.yoursite.com/blogorblog.yoursite.com. You'll find it under Blog root URL in HubSpot's blog settings. If you have more than one blog, run one analysis per blog. - Posts must be published and public. Blog Porter can't read drafts, or posts behind a membership or SSO login.
Where your HubSpot images live
HubSpot hosts files you upload on a public CDN address, and also creates working copies of each file's address on every domain you've connected. On the HubSpot blogs we checked, post images loaded from addresses like these:
www.yoursite.com/hubfs/image.pngwww.yoursite.com/hs-fs/hubfs/image.png?width=128012345.fs1.hubspotusercontent-na1.net/hubfs/12345/image.png
The first two matter most. They sit on your own domain. Once that domain points to WordPress, those addresses are answered by WordPress, not HubSpot, so any image still linked there breaks on the day you switch.
After any import, search your WordPress posts for hubfs and hubspotusercontent. Every post that turns up still loads at least one image from HubSpot.
What none of these moves
These routes are about blog posts. Plan for the rest separately:
- CTAs and forms. Blog Porter strips forms, buttons and scripts from the post body. Replace HubSpot CTAs with WordPress buttons or links. If you keep HubSpot for marketing, its WordPress plugin adds HubSpot forms and live chat to WordPress.
- Comments, contacts and subscribers. Blog Porter doesn't move them, and HubSpot's export page doesn't cover comments.
- Website and landing pages. Rebuild them in WordPress, or copy them from the HTML export.
- Design. Your HubSpot templates stay in HubSpot. You choose a WordPress theme instead.
- Redirects. None of these routes creates them. Keep your HubSpot blog URLs in WordPress shows how.
Before you downgrade HubSpot
Keep your HubSpot blog live until every post and image is in WordPress and your URLs work. Before you downgrade, export your URL redirects. HubSpot says that after a downgrade to its free tools you can no longer view, create or update them. How to migrate a HubSpot blog to WordPress lists every step in order.
Move your HubSpot blog into WordPress
Install the Blog Porter plugin, enter your HubSpot blog's address, and the free analysis shows the posts it found and the exact price. Read more about moving from HubSpot to WordPress.
Ready to migrate your blog?
Don't stay stuck on your current platform. These are a few Blog Porter customers that already saved time moving their content.
“Amazing service and works like an absolute charm, just imported 109 posts in minutes! saved me days of work.”
“Thank u so much, it saved me a lot of time 🙏”
“Wow, fast response! And thank you. I discovered you on Reddit. So glad I did because I'm busy and moving a site is a lot of work.”