Import your blog into HubSpot

Last updated: October 15, 2020

In Beta

Applies to:

Marketing Hub  Professional, Enterprise
CMS Hub  Professional, Enterprise

To migrate your existing blog content into HubSpot, all you need is the URL of a live post.

The smart copy tool analyzes your blog post template to identify your blog post titles, authors, content, and tags. After your entire blog is scanned, you'll confirm the mappings for these features, then import your existing posts into a new HubSpot blog.

Please note: if you want access to this BETA feature, reach out to HubSpot's Product team on the Community.

Before you get started

  • When you create your HubSpot account, there will be a new default blog in your account you can use to import your blog posts. 
  • You'll use a URL from an existing blog post to import all of your existing blog content into your HubSpot blog. To make the import process easier, use a sample blog post with a distinctive title, featured image, and opening paragraph so these elements are easy to recognize when you confirm your blog post mappings.
  • The smart copy feature isn't compatible with blog posts that include a hashtag in the URL structure. For example, wouldn't work with this feature.

Enter your blog post URL into the smart copy tool

  • In your HubSpot account, click the settings icon settings in the main navigation bar.
  • In the left sidebar menu, navigate to CMS Blog.
  • In the upper right, click Import blog. This will bring you to the blog importer dashboard.
  • In the upper right, click Import new blog.
  • Select the Smart Copy option, then click Next.
  • Recent blog post: paste the URL of a recent blog post from the blog you're importing. Then click Copy blog posts.
  • Which blog platform are you currently using: click the dropdown menu and select the platform the blog you're importing is currently hosted on, like WordPress.
  • HubSpot blog: click the dropdown menu and select the HubSpot blog you want to import your blog content into.
  • In the lower right, click Copy blog posts.

It will take some time for your blog posts to be scanned and copied into the importer tool. Check back in about an hour to complete the process. You'll also receive an email to confirm the scan is complete.

Review your blog post mappings

After the tool has finished scanning your blog posts, you'll see Scan completed in the Status column. If your blog encountered any errors or hit the limit of 10,800 pages, you'll see details about your import in the Status column. To import more than 10,800 pages with the blog importer tool, import an XML file instead.

To finish the import process, click Review results to confirm the mappings for your blog content. The smart copy tool will suggest any field mappings it can find, based on the HTML of your live blog post.

If the correct content isn't displayed, select [Mapping] exists but it's not listed as an option. You can tell the smart copy tool exactly where to locate this feature of your blog using a CSS selector from the live blog post for the HTML element you want to target.

Please note: learn how to identify and submit the CSS selector for each blog mapping in the Troubleshoot mappings: add HTML or CSS Selector section below.

  • Title: select the title of the blog post. This is a required field.
  • Author: select the author of the blog post. This is a required field. If you prefer to not display your blog post authors, you can select Author isn't displayed, use "Admin" instead. You can customize this default value before you import your posts.
  • Publish date: select the publish date of the blog post. This is a required field. If you prefer to not display your blog post publish date, you can select Publish date isn't displayed, use [Today's Date] instead. You can customize this default value before you import your posts.
  • Featured image: the tool will identify any images in your blog post body that might be the featured image. Select the featured image for this blog post to tell the smart copy tool where to locate the featured image for the rest of your posts. If you don't want to import any featured images for your blog posts, select Featured image isn't displayed, don't import it.
  • Post body: the tool will scan different bodies of text on your blog post. Confirm the text that appears in the first paragraph of your blog post body. This field is required.
  • Categories/Tags: select the categories or tags applied to this blog post. If you don't want to import the categories or tags of this blog post, select Category/tag isn't displayed, don't import it.

To scan a different blog post as the source for your blog import, select Change URL and enter a new blog post URL. This will restart the field mapping process from the beginning.

Troubleshoot mappings

If the blog import tool doesn't map parts of your blog post content correctly, you can tell the smart copy feature exactly where to locate the information on the live blog post. Learn how to inspect your live blog post and identify the CSS selector for a specific HTML element on the page.

Please note: for more help with CSS selectors, see this Community post with details and examples. Add comments to the post if you have more questions.

The instructions below document how to find the CSS selector on your blog post in a Chrome browser. For instructions on Safari, Firefox, or any other web browser, see their respective developers documentation.

  • Navigate to the URL of the live blog post you submitted during the Import process.
  • Right-click your cursor directly on the blog post, then select Inspect element.


  • To identify the CSS selector for an HTML element:
    1. In the upper left, click the selector arrow to isolate a specific element on the page.
    2. Click the blog post title, author, publish date, featured image, post body, or categories/tags on the live blog post to inspect it. You'll see this element highlighted on the live page, and within the Elements panel.
    3. Right click the highlighted element in the inspector, the select Copy Copy element. This action automatically copies the CSS selector to your clipboard.


  • Within HubSpot, paste this element in the Add CSS and or HTML element field. Then click Next to continue your mappings.

enter-selectorFinish your import

After completing all your mappings, your blog import status will change to Preparing posts for import. Then you can review and finalize your blog import. If you selected default values for your blog post author or publish date during the field mapping process, you can customize those default values at the top of the dashboard.

  • To complete your import, click Review results. You'll see a listing of blog posts, and any other web content scanned on your website.
  • Click Preview to see a simplified preview of your blog post content, image URLs, and a listing of the values the importer tool identified for that post. 

    Please note: images from your blog post won't render in the blog post preview, you'll see the image URLs appear in the preview instead.

  • All blog posts are selected for import by default. Deselect the checkbox on the left for any blog posts that you want to omit from your import.
  • After you've finalized your selection, click Import.
  • In the Publishing status dialog box, select whether to import these blog posts as drafts or as live published posts. Then click Save.

Your blog import will update to Import in progress status. Once the import is complete, the status will update to Import completed. 

If there are any errors during the import process, the status will update to Import succeeded with some errors. You can review the details by clicking More > View details. If you retry the import process with a new blog post link, any errors from the original import will be reset.

Next steps: set up your blog in HubSpot

After you've imported your blog posts, finish setting up your blog in HubSpot: