Skip to content

Import your blog from any CMS with smart copy

Last updated: August 3, 2021

Applies to:

Marketing Hub Professional, Enterprise
CMS Hub Starter, Professional, Enterprise

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

The smart copy feature 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 properties, then import your existing posts into a new HubSpot blog.

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.
  • The smart copy feature isn't compatible with blogs hosted on these domains:,,,,,,,,,
  • If you're importing a WordPress blog, try the WordPress Connect feature instead.
  • Only 400 blog posts can be included in a single import. You can repeat the import process multiple times for the same scan. 

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 Website Blog.
  • In the upper right, click Import blog
  • In the upper right of the blog importer dashboard, click Import new blog.
  • Select the Smart Copy option, then click Next.
  • In the Blog homepage field, enter the URL of your blog's main page. 

Please note: if some posts aren't imported to HubSpot, repeat this process and leave the Blog homepage field blank. This will allow the blog importer tool to crawl more pages to find all your blog content. 

  • In the Recent blog post field, enter the URL of a recent blog post from the blog you're importing. 
  • Click the Which blog platform are you currently using? dropdown menu and select the platform that the blog you're importing is currently hosted on, like WordPress.
  • Click the HubSpot blog 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.

  • 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. To avoid importing 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. This field is required. Confirm the text that appears in the first paragraph of your blog post body. 
  • 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. 

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.


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


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


Learn more about identifying CSS selectors in this Community post with additional details and examples.

Finish your import

After your mappings are completed, your blog import status will change to Preparing posts for import.  You can now 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: the blog post preview will load your image URLs, rather than the images themselves. 

  • All blog posts are selected for import by default. Clear the checkbox next to 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: