SEO

Use filters to generate high organic traffic.

SEO is one of the most important challenges for any online store. Good SEO can help your store reach higher positions in search engines. Conversely, poor optimization, or worse, none at all, can mean that Google will severely penalize your store.

At FiboFilters, we take SEO very seriously. See what measures we take so that we can confidently declare that FiboFilters is an SEO-first filtering solution.

We carefully studied Google’s guidelines about Faceted navigation best (and 5 of the worst) practices and other reliable sources. Based on these insights we’ve devised additional tools and solutions to maximize FiboFilters’ potential.

See what benefits come from integrating these principles into our plugin:

Google’s guidelines and other good practicesFiboFilters supportsNote
Avoid duplicated contentSource link
Avoid non-standard URL encoding for parametersSource link
Avoid appending URL parameters without logicSource link
Not offering further filtering when there are zero resultsSource link
Proper page structure despite using JavaScript for loading productsSource link. For further information, click the link → scroll down to the section “Be sure that if using JavaScript to dynamically…”.
Proper internal category linksSource link
SEO paginationSource link
SEO infinity scrollSource link
SEO “Show more products” buttonSource link
Allowing indexing specific filter combinationscoming soon

Avoiding duplicated content

Faceted navigation, like filtering by attributes, prices, and so on, can enhance user experience but often poses challenges for search engines. This is because it generates numerous URLs with similar content, which can lead to search engines being slower to crawl new or updated unique content. Additionally, it can cause indexing issues, as the presence of multiple duplicated pages can dilute the signals needed for accurate indexing.

Only one representative URL for the product archive should be indexed. Unfortunately, product filtering will result in numerous URLs for the same page. In this article Google lists 6 reasons against displaying the same products on different URLs.

To tackle this, FiboFilters adds rel=”canonical” to pages that contain URL parameters related to product filtering. The canonical URL address points to the parent page (a “filter-free” page) – for example, a category page.

For example, on a page with this URL address:

example.com/product-category/caps/?price=30-40&color=blue

The following addition will appear within the <head> tag:

<link rel="canonical" href="https://example.com/product-category/caps/" />

Avoiding non-standard URL encoding for parameters

Interpreting URL parameters implemented in a non-standard fashion is simple to decode for humans. However, it causes significant issues for crawlers.

Mehmet Aktuna, a software engineer in Google’s Crawling Team, says that  “(…) using non-standard encoding is just asking for trouble.” Instead, a good practice is to connect key-value pairs with an equal sign (=) and append multiple parameters with an ampersand (&).

We’re proud to announce that FiboFilters adheres to this principle 100%. Below you can see this on an example from our demo page:

https://demo.fibofilters.com/?price=25-40&color=green&stock-status=in-stock

Avoiding appending URL parameters without logic

External URL parameters only increase the risk of URL duplication. This results in subpar crawling and indexing. Therefore, before generating the URL, FiboFilters ensures that the parameters are coherent. We avoid duplication and shape URLs to be semantically sound for both humans and robots.

Not offering further filtering when there are zero results

With FiboFilters, users can only select filters with a positive value (your store offers items that will be displayed with a filter applied). So, filters that do not present any items are grayed out. We have also added item counters next to each filter to improve readability.

Grayed out items with zero resutls
Grayed out items with zero results

Duplicate HTML rendering by JS and PHP

The process of filtering and loading products takes place dynamically on the browser side, with the use of JavaScript. To see this in examples, please read our posts on in-browser filtering and product grid rendering.

Even though products are loaded via JS, accurate HTMLs with products will be visible in the page source. This allows Google’s indexing bots to index store pages properly, including product archive pages and pagination pages.

To look up the non-editable HTMLs source code for the current page, press CTRL + U in your browser.

With FiboFilters we developed a unique filter type: “Category links”. This feature improves internal linking and navigating between your store’s branches, for example categories.

The biggest advantage of the Category links filter is contextual linking. This filter presents your customers with all categories that they might be interested in, depending on the search context. On the store page, it will display links to top-level categories. On a category page, there will be a link to the parent page as well as links to the child categories.

A common mistake is using incorrect anchor texts for internal linking, which may include, for example, a counter.

Mix category names and counters
It was shown how tricky it can be to mix category names and counters in link anchors eg. “Fiat 600 500”.

In this example, the left column lists the category names, and the right column features the product counters. FiboFilters automatically exclude counters from the anchor texts. This way, Google will recognize the anchor text as “Fiat 600” and not “Fiat 600 500“. In this case, your products can be easily identified and help you position them properly.

SEO-friendly numerical pagination

Pagination can cause many SEO issues. This entry focuses on traditional numeric pagination. SEO for other types of pagination available in FiboFilters, such as “Infinity Scroll” and the “Show more products” button, are described in the following sections.

Properly optimized numeric pagination will significantly impact how effectively indexing bots can crawl. Proper pagination affects not only the pagination pages themselves, but also all the links contained on those pages.

Pagination pages are indexed

Duplicate content is not a concern with pagination because each paginated page showcases unique content compared to the others in the sequence.

For instance, the second page (/product-category/caps/page/2/) will display a different set of products or articles than the first page and it should be indexed. This is automatically optimized by WordPress.

Ensure your store meets the following requirements:

  1. Display category page content only on the first page of a paginated sequence.
  2. Meta titles should include the page number at the beginning of the tag (a built-in WordPress functionality).

Although pagination in FiboFilters is rendered with JavaScript, the same HTML structure appears in the page source. This structure includes the correct links and allows indexing bots to navigate the pagination pages easily. The advantage is that Google doesn’t need to render JavaScript to follow the internal links.

Note:
It is good practice to index all pagination URLs.

Self-referencing canonical URLs

To meet Google standards, subsequent pages have self-referencing canonical URLs. That means that the second page with a URL of https://xample.com/shop/page/2/ will have an additional snippet added to its <head>:

<link rel="canonical" href="https://example.com/shop/page/2/">

Pagination pages with filters applied are not indexed

Let’s assume that your customers are looking for XXL-size T-shirts and they have selected the respective filters. If your store offers many products that match this search, a pagination will be displayed. The second and subsequent pagination pages shouldn’t be indexed – Google already has access to these products by indexing them directly from the primary category structure. This approach is in accordance with Google’s rule Avoid indexing URLs with filters or alternative sort orders.

FiboFilters sorts this by running  rel=”canonical”, which points to the parent page (a “filter-free” page) – for example, a category page. 

For example, on a page with this URL address:

https://xample.com/shop/page/2/?size=xxl

a following addition will appear within the <head> tag:

<link rel="canonical" href="https://example.com/shop/page/2/">

SEO for infinity scroll and the “Show more products” button

The Google bot neither interacts with “Show more products” buttons, nor generates scroll events to load more products. However, it is possible to improve SEO for such paginations. In FiboFilters both the “Infinity scroll” and “Show more products” types of pagination are optimized for the Google search bot.

The solution is to present users with the “Infinity scroll” or “Show more products” buttons, but in the background render HTML with classic numeric pagination in the page source. This allows the Google bot to easily navigate to subsequent pages and index them properly.

URL structure

Using the “Infinity scroll” or clicking on the “Show more products” button changes the URL address. For example, if the page presents 10 products, loading subsequent 10 products will add /page/2/, to the URL, and then /page/3/, and so on.

After reloading the page, customers no longer have to click the “Show more products” button to see more results. They’re presented with the product pool that was browsed before the reload. However, earlier products won’t be presented. 

For example, if your customers have already clicked the “Show more buttons” twice, they’ll be browsing products from the range of 21-30 (of all the relevant results). After refreshing the page, the same range will be presented. To browse products that appeared earlier in the results, a new button labeled “Show previous products” will appear. By clicking this, your customers can browse products from the range of 11-20 and 1-10.

Allowing indexing specific filter combinations (coming soon)

We’re developing a feature that will let you create dedicated pages, containing predefined sets of filters. These pages can be indexed by search engines. Moreover, you can add your own description and change the pages’ URLs.

We’ll announce the launch of the feature and include it in the upcoming revisions of FiboFilters.