<title> builder for blog, author, and topic listing pages


There has been a lot of chatter regarding using reporting services like SEMRush and Moz which will give you site audits. Usually, these reports give back information such as errors and issues One of the major errors I've seen reported on a lot of HubSpot sites are the Duplication errors for things such as:


  • Duplicate content: This is usually caused by the /page/1 not being properly redirected from the start. You have to create three directs total to fix that. Another cause for duplicate content is that listing pages do not have the ability to have a self-referencing canonical (which is fixed with some quick HubL in the blog template header).
  • Duplicate Titles: Caused by all the paginated pages showing the same title.
  • Duplicate Meta Descriptions: Same cause as above

The first bullet, as mentioned, can be fixed with using URL mapping tool and HubL, the last two, however, we have zero control over. I know we can use JS to change the titles and meta's for the listing and Google's searching should be ok with checking those differences on the page. This can be tedious to do and a much better way would be to allow us to have a "Page Title Builder" in the SEO & Crawlers Tab. This can let us fi page titles and have them render server side rather than relying on JS to fix things and hoping they will be picked up during the next Google crawl.   


I have created a mockup below for this (based on Yoast's SEO WP Plugin) to better explain a possible solution:




Also, I think it would be awesome to have Description fields added to the blog topic's so we can create custom Meta Descriptions based on those topics and not have to rely on just the default blog meta description or one that Google pulls automatically (which is usually the post excerpt of the most recent post for that page). 

26 Replies
HubSpot Employee

Hi, Everyone,


While this is still in the planning phase, I have a workaround for you that will allow you to swap out meta description for blog listing pages based on the type of listing page. To do this navigate to settings > website > blog and use the following as an outline for your meta description.

{% if blog_author %}
{{ blog_author.bio }}
{% elif topic == 'topic1' %}
This is a meta description for the topic "topic1" in the example blog
{% elif topic == 'topic2' %}
This is a meta description for the topic "topic2" in the example blog
{% else %}
Example blog meta description for page {{ current_page_num }}. This is a description of what the blog listing pages are. 
{% endif %}

You can use the same logic in the title section. For example


Example blog - Page Number ({{ current_page_num }})




Upvoting and following


I agree that this is a very frustrating issue and one that is quite surprising that it is not resolved, yet. Please keep us posted about your development progress. Appreciated!

Status updated to: Being Reviewed
HubSpot Product Team

This issue remains one that we plan to fix, but since we don't currently have a clear timeline on the development I'm going to mark it as 'being reviewed'. I will post another update when we have more to share.


- Snaedis


This is a much needed solution. And just like MOZ, SEMRUSH also flags listing page duplicates. 


On the SEMrush tool, we see a list of pages which have a url slug .com/author & .com/all. So though it doesnt list the pagniated pages and system generated topic pages, it still list the system generated pages blog listing page for the author and all. 




It's now August 2020 and still no solution to this issue. That's a very awesome mockup that @AJLaPorte_diagr  came up with.


I tried using custom HubL language to change these descriptions but no merit, as blog_author pages are still considered "listing pages". I have the following code added to markup:



<!-- `is_listing_view` is a HubL variable in the developer info pane that checks if the page is a listing view such as blog listing page -->
{% if is_listing_view %}

	<!-- Add Canonical to paginated pages, topics, authors, and main blog listing page -->
	<link rel="canonical" href="{{canonical_url}}">

	<!-- Nested IF statement. -->
 	{% if current_page_num > 1 %}
	    //Append page num to title so you don't have duplicate title tags
	    document.title += " | Page {{current_page_num}}";
	    // Replace Current Meta Description with new one that appends page num before it.
	    document.querySelector('meta[name="description"]').setAttribute("content","Page {{current_page_num}} - {{content.meta_description|escapejs}}");

	{% endif %}
	<!-- /Nested IF Statement -->

{% endif %}
<!-- /End listing view IF -->

<!-- `if blog_author` is a HubL variable in the developer info pane that checks if the page is a an author page such as author listing page -->
{% if blog_author %}

	    // Replace Current Meta Description with new one that appends page num before it.
	    document.querySelector('meta[name="description"]').setAttribute("content","{{content.meta_description|escapejs}} | {{ blog_author.display_name }}");

              {% endif %}
            <!-- /End listing view IF -->


@AJLaPorte_diagr Do you think there may be a custom fix for this?