Blog Porter LogoBlog PorterBack to Home
  1. Home
  2. /
  3. Guides

How to Migrate a HubSpot Blog to WordPress

By João Piedade · Updated 13 November 2026

To migrate a HubSpot blog to WordPress, set up WordPress on your own hosting, import the posts and their images, keep or redirect every old URL, then point your domain at WordPress and tell Google. HubSpot can export your posts as a spreadsheet or as HTML files, but WordPress can't import either on its own, so the real choice is how you get the posts in. Keep HubSpot running until the new site checks out, and downgrade it last.

We checked every claim about HubSpot, WordPress, Google and the other tools on this page on their own websites on 13 November 2026. Menus, plans and plugins change, so check again before you pay for anything.

Which route fits you?

  • A handful of posts: copy and paste them into WordPress. It's free.
  • A whole blog, without a HubSpot login or token: Blog Porter reads your public blog and imports the posts with their images, dates, authors and tags. It costs $0.20 per post.
  • You already have a HubSpot private app token: the free Blog Importer for HubSpot plugin reads your posts through HubSpot's API.
  • You're happy to map spreadsheet columns: HubSpot's blog export and a CSV import plugin such as WP All Import.
  • Your whole website, landing pages and design: an agency or migration service, or rebuild the pages yourself. No blog tool moves those.

Every way to move a HubSpot blog, compared

RouteWhat movesWhat you needMain limits
Copy and pasteWhatever you pasteTimeDates, slugs, authors and tags set by hand. Images stay on HubSpot until you upload each one.
HubSpot export + CSV import pluginWhatever the export's columns holdHubSpot Super Admin or Publish permission, and an import pluginHubSpot doesn't list the columns. Images in the post body stay on HubSpot.
Blog Importer for HubSpotPosts, tags, authors (optional) and inline imagesA HubSpot private app access tokenHubSpot no longer lets you create new legacy private apps.
Your own script and HubSpot's APIEverything the API returns, drafts includedA developer and an access tokenAuthors, tags and images each need extra work.
Agency or migration serviceWhatever you agree, which can include pages and designA budget and a written scopePrice and scope vary. Ask about images, redirects and DNS.
Blog PorterPublished public posts: body, slug, date, author, tags, meta description, featured and inline imagesWordPress 6.4+ where you can install plugins, and your blog's public addressNo drafts, members-only posts, comments, CTAs, forms, pages or redirects. $0.20 per post.

A few details behind the table:

  • HubSpot's exports. HubSpot exports blog post data as CSV, XLS or XLSX, or every page and post as HTML files, and emails you a link. WordPress's own import tools have no CSV or HTML importer, and point you to WP All Import for CSV files. WP All Import's WordPress.org page lists importing images into the media gallery among its Pro features.
  • Blog Importer for HubSpot. This free plugin asks for a private app access token with the CMS content scope. It imports posts with their tags and inline images, and can match authors or create them. HubSpot stopped letting existing accounts create new legacy private apps on 26 October 2026. Apps you already have keep working, and HubSpot recommends service keys for new integrations. The plugin's page doesn't say whether a service key works, so ask its developer if you don't have a token yet.
  • HubSpot's API. The Blog Posts API returns each post's HTML, slug, publish date, tag IDs, featured image and meta description, drafts included. Its authorName field is the user who last published the post, not the blog author, and images stay as links to HubSpot.

How to export your HubSpot blog covers each export and route in more detail.

Before you start

  1. Decide what leaves HubSpot. Many teams move the blog but keep HubSpot for their CRM, email or forms. List what you're moving: blog posts, website pages, landing pages, CTAs and forms, comments and files. A blog migration tool moves posts, not your whole site. Why: it decides which HubSpot plan you still need afterwards, and which pages you'll rebuild.
  2. Count your posts and save your URLs. Note how many published posts each blog has in HubSpot. Save a copy of yourdomain.com/sitemap.xml, where HubSpot adds every live page and blog post. For a blog subdomain, save that subdomain's sitemap. Then, in HubSpot's settings, go to Content → Domains & URLs → URL Redirects and click Export to save your redirects as a CSV file. Why: the count proves nothing went missing, the sitemap is your list of URLs to test after launch, and HubSpot's redirects stop working once your domain leaves HubSpot.
  3. Run HubSpot's exports. Go to Content → Blog (under More on some accounts), open Actions, and run Export blog posts and Export all pages and blog posts (HTML). Both need Super Admin or Publish permission. Then go to Content → Files, select your files and folders, and click Export (ZIP). That one needs Super Admin permission. Why: they're a free backup of your posts, pages, templates and files, even though WordPress can't import them directly.
  4. Find your blog's exact address. In HubSpot's settings, go to Content → Blog and note the Blog root URL, such as www.yoursite.com/blog or blog.yoursite.com. If you have several blogs, note each one. If Use language slug in URL is ticked, the language code is part of the address. Why: it's the address a migration tool needs, and it decides your WordPress permalinks.
  5. Make sure every post is public. In the same settings, Access control should be Public, and posts shouldn't be limited to members. HubSpot can restrict a blog to access groups or SSO, or show full posts only to members. Why: Blog Porter only reads posts that anyone can open.
  6. Check that your posts carry their dates and authors. Open a post, view its page source and search for datePublished. If it's missing, HubSpot's Structured Data switch in the same settings adds BlogPosting schema. HubSpot says it's on by default for blogs created after 4 August 2022, and warns against turning it on if your template already has its own schema. Why: Blog Porter reads each post's publish date and author from this data. Without it, Blog Porter takes the publish date from your RSS feed, which lists only your most recent posts. For older posts it uses the date in your sitemap, which is when the post was last changed.

Set up WordPress

  1. Get hosting and install WordPress. WordPress recommends PHP 8.3 or later, MySQL 8.0 or MariaDB 10.11 or later, and HTTPS support. Many hosts install WordPress for you. Make sure you're an administrator who can install plugins. Blog Porter needs WordPress 6.4 or later and PHP 7.4 or later. Why: the posts need somewhere to land, and you can build and check the new site before any domain moves.
  2. Choose a theme and rebuild what your HubSpot template showed. Your HubSpot theme, templates and modules stay in HubSpot. The HTML export puts your template files in a Styles folder, which is useful as a reference. List what appeared around each post: subscribe form, author bio, related posts, sidebar CTAs and sharing buttons. None of it is in the post body, so rebuild each piece with a WordPress theme, blocks or plugins. HubSpot doesn't allow smart content in the Blog content module, so it was never part of the post either. Why: the posts move, but the page around them doesn't.
  3. Keep the site out of search while you build. Under Settings → Reading, you can tick Discourage search engines from indexing this site, which asks search engines not to index it. Untick it at launch. Why: a half-built copy of your blog shouldn't appear in search next to the real one.

Move the posts

  1. Import the posts. Copying posts by hand is free and fine for a small blog. For a bigger one, install the Blog Porter plugin, enter your blog's address from step 4, and run the free analysis. It lists every post it found and the exact price before you pay: $0.20 per post, minimum 5 posts, paid once, so a 300-post blog costs $60. You can leave posts out, and the import runs in resumable batches. For each post, Blog Porter imports the title, the formatted body as editable blocks, the original slug, publish date, author, tags and meta description, plus available featured and inline images. The meta description goes into the fields Yoast SEO, Rank Math and SEOPress use, so install one of them if you want it shown. If your blog is on its own subdomain, review the list and leave out anything that isn't a post. See what Blog Porter moves from HubSpot. Why: comparing the post count with the number from step 2 before you pay tells you nothing is missing.
  2. Move every image off HubSpot. Search your WordPress posts for hubfs and hubspotusercontent. Every result still loads something from HubSpot. HubSpot serves files from its CDN and from your connected domains, so yoursite.com/hubfs/... images break as soon as your domain points to WordPress. Blog Porter copies available inline and featured images into your Media Library and lets you retry any that fail. It doesn't copy linked files, such as PDFs. For anything left, select the image in the editor and use Upload to Media Library, or upload the file from your ZIP export and update the link. Why: anything left on HubSpot depends on a domain and an account you're leaving.
  3. Check authors, tags and categories. Blog Porter matches each author to a WordPress user with the same name, or creates a user without sending them an email. Check Users and add bios and photos. HubSpot groups posts with tags, which it used to call topics. Blog Porter reads them from the structured data or, without it, from the tag links on each post, so add any that are missing, using the slugs from your HubSpot tag pages. HubSpot has no categories, and WordPress files a post with no category under the default post category, so rename that or add your own. Why: tag and author pages have their own URLs, which you'll want to keep.
  4. Replace CTAs, forms and embeds. Blog Porter removes forms, buttons and scripts from the post body. CTAs you added with Insert → Call-to-action are HubSpot features, so note where each one appeared and add a WordPress button or link. Search your posts for hubspot to find leftover links and embeds. Why: a CTA that depends on HubSpot can stop working when you change plans.
  5. Keep HubSpot's CRM and forms, if you're staying. HubSpot's WordPress plugin connects WordPress to HubSpot's CRM, forms, live chat and email, and its core tools are free. HubSpot says external pages need its tracking code to show CTAs, and the plugin adds it. Check your forms first: HubSpot says you can add forms built in its legacy editor to WordPress posts and pages, but not forms built in its updated editor. Why: leads keep reaching your CRM after the blog moves.
  6. Fix links inside your posts. Blog Porter imports links as they are, so links between your posts still point at their HubSpot addresses. If your URLs stay the same, they keep working. If they change, they go through your redirects, and Google suggests updating your own links to the new URLs as well. Why: every internal link that skips a redirect is faster for readers and clearer for Google.
  7. Set your permalinks. Match your WordPress URLs to your HubSpot ones, such as /blog/%postname%/, or plan a redirect for every URL that changes. Posts with an extra slash in their address, such as /blog/bid/12345/post-title, always need a redirect. Keep your HubSpot blog URLs in WordPress shows how. Why: if the URLs match, old links and search results keep working.
  8. Spot-check a sample of posts. Compare a few old and new posts side by side: title, date, author, tags, formatting, tables, videos and links. Include your oldest posts and your most visited ones. Why: problems are easier to fix before visitors and Google arrive.

Launch

  1. Set up redirects for any URL that changes. Google recommends permanent server-side redirects straight to the new URL, kept generally for at least a year. Add the HubSpot redirects you exported in step 2 too. Skip the rest if your URLs match. Why: without redirects, old links lead to "not found" pages.
  2. Move the domain or subdomain. Google suggests lowering your DNS TTL to a few hours at least a week before the switch. Then change the DNS records with your domain provider, following your WordPress host's instructions. HubSpot says a domain or subdomain can host content in only one location, so any HubSpot pages left on it stop loading. If you're keeping your website on HubSpot, move the blog to its own address, such as a subdomain. Once WordPress answers on the domain, you can disconnect it in HubSpot's settings under Content → Domains & URLs. HubSpot says to move primary content types, such as website pages, to another domain first, or a system domain will be used for them. Why: until the domain points at WordPress, visitors still see the HubSpot blog.
  3. Test your old URLs. Open the URLs from the sitemap you saved: your oldest posts, any with /bid/ in them, a tag page, an author page and the blog page. Each should load the same content, or redirect to it in a single step. Why: it's the quickest way to catch a missed redirect or a permalink that doesn't match.
  4. Tell Google. Untick Discourage search engines if you ticked it. While it's on, WordPress turns off its sitemap, which otherwise lives at /wp-sitemap.xml unless an SEO plugin replaces it. In Search Console, submit the new sitemap. If your URLs changed, Google's site move guide suggests submitting the old sitemap you saved as well. If the blog moves to a new domain or subdomain, read about the Change of Address tool and its requirements. Why: sitemaps help Google find your new URLs and follow the redirects from the old ones.

After launch

  1. Watch Search Console for a few weeks. Look for pages Google can't find or index, and fix the old URLs behind them. Why: Google says it can take a few weeks or more before new URLs replace the old ones in search, so a dip isn't always a problem, but a growing list of errors is.
  2. Downgrade HubSpot last. Wait until every post, image and redirect checks out, and a search of your WordPress posts for hubfs comes back empty. HubSpot recommends exporting your content, CTA data and URL redirects before a downgrade. It also says CTAs created in HubSpot stop working when Marketing Hub drops from Professional or Enterprise to Starter or the free tools, and that after a downgrade to Starter or free you can no longer view, create or update redirects. If your redirects still run in HubSpot, keep the plan that pays for them. Why: HubSpot is your fallback copy until the new site is proven.

Frequently asked questions

Can I export my HubSpot blog straight into WordPress?

No. HubSpot's blog export gives you a CSV, XLS or XLSX file of post data, or HTML files of your pages and posts. WordPress has no built-in importer for either. You need a CSV import plugin and a column mapping, or another route from the table above. HubSpot's help page doesn't list the columns in its export, so open the file before you plan around it.

Will I lose my Google rankings?

Not if old URLs keep working. If your blog keeps the same address, match your permalinks and Google treats it as a move without URL changes. If the address changes, redirect each old URL to its new one. Google says that after a move with URL changes, it can take a few weeks or more before the new URLs replace the old ones in search. Keep your HubSpot blog URLs in WordPress covers both cases.

How long does a HubSpot to WordPress migration take?

The import is the quick part. Plan the calendar around the rest: Google suggests lowering your DNS TTL at least a week before the switch, HubSpot says new redirects can take up to 48 hours to take effect, and Google can take a few weeks or more to show your new URLs. Building the theme and rebuilding CTAs and forms takes as long as your design needs.

Can I keep HubSpot's CRM, forms and email if my blog moves to WordPress?

Yes. Install HubSpot's WordPress plugin, which connects WordPress to HubSpot and adds its tracking code. Forms built in HubSpot's legacy form editor can go into WordPress posts and pages. HubSpot says forms built in its updated editor can't be embedded there.

What happens to images in HubSpot's file manager?

They stay in HubSpot until you move them. HubSpot hosts files on a hubspotusercontent CDN address and on your connected domains. Copies on your own domain break when the domain moves, and the rest depend on your HubSpot account. Blog Porter and Blog Importer for HubSpot both download inline images into your Media Library. With other routes, upload them yourself. To back up everything, use Export (ZIP) in HubSpot's file manager.

What happens to my HubSpot blog after I move?

Nothing, until you change it. HubSpot says that after a downgrade, existing blog posts stay live, though some downgrades stop you creating new tags or authors. Some downgrades also end your access to your hs-sites.com system domain. HubSpot keeps the content there for 90 days, then moves static content to a hubspotpagebuilder.com domain and deletes dynamic content. HubSpot says content on its system domains won't benefit your SEO, because search engines won't find it.

Can I move my HubSpot blog comments?

Not with HubSpot's export. Its export help page covers posts and pages, not comments. HubSpot's developer docs list a Blog Comments API that a developer could use. Blog Porter doesn't import HubSpot comments.

Should HubSpot tags become WordPress categories or tags?

Tags. HubSpot tags have their own pages under your blog root, such as /blog/tag/news, and WordPress tags can keep the same paths. Use categories for a few broad sections, and set the default category in Settings → Writing so new posts don't land somewhere odd.

Can I move my website pages and landing pages too?

Not with a blog tool. Rebuild them in WordPress, using HubSpot's HTML export as a copy of the content, or ask an agency. If you keep them on HubSpot, your blog must move to its own domain or subdomain, because a domain can only host content in one place.

Do I need a HubSpot API key or private app?

Not for Blog Porter, copy and paste, or HubSpot's own exports. Blog Importer for HubSpot and custom scripts use HubSpot's API, which needs an access token. HubSpot no longer lets you create new legacy private apps, and it recommends service keys for new integrations.

Can I keep my blog on its blog subdomain?

Yes. Point the subdomain at your WordPress site and use the Post name permalink setting, and your post addresses stay the same. Any other HubSpot pages on that subdomain stop loading. Keep your HubSpot blog URLs in WordPress covers subdomains and moves to a /blog folder.

How much does it cost to move a HubSpot blog to WordPress?

Copy and paste, HubSpot's exports and Blog Importer for HubSpot are free. WP All Import has free and paid versions. Agencies quote per project. Blog Porter costs $0.20 per post, with a minimum of 5 posts, paid once, and the free analysis shows the exact price first. You also pay for WordPress hosting, and for HubSpot for as long as you keep it.

Every HubSpot guide, in order

  1. How to export your HubSpot blog: HubSpot's exports, the other ways to get posts out, and what each one misses.
  2. Keep your HubSpot blog URLs in WordPress: match your old URLs or redirect them, including blog subdomains.
  3. Install the Blog Porter plugin: run the free analysis on your HubSpot blog.

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.

Download Blog Porter pluginView on WordPress.org
“Amazing service and works like an absolute charm, just imported 109 posts in minutes! saved me days of work.”
Volksman
“Thank u so much, it saved me a lot of time 🙏”
Liliana Castaneda
“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.”
Sheelagh Caygill
Blog Porter LogoBlog Porter
Featured onProduct Hunt

How to

  • Installation guide
  • Bulk edit migrated posts in WordPress
  • How Blog Porter moves images
  • Wix to WordPress checklist
  • All guides

Supported platforms

  • Migrate Wix to WordPress
  • Migrate Blogger to WordPress
  • Migrate Medium to WordPress
  • Migrate Squarespace to WordPress
  • Migrate Webflow to WordPress
  • Migrate HubSpot to WordPress

Blog Porter

  • About
  • Contact
  • CMS2CMS alternative
  • Privacy Policy
  • Terms and Conditions

© 2026 Blog Porter. All rights reserved.

A product byAzor Studio