Filtering from A to Z: the Holy Grail of SEO e-shops

Autor Michal Doskočil Michal Doskočil

Filters or so-called faceted navigation can be found in most e-shops or websites with multiple products or services. Its main function is to sort products according to various preferences. But how to use filters to get relevant traffic to the e-shop? Let’s take a look at it together from A to Z.

Table of Contents

  • Results and increase in search engine visibility
  • What are filters and what is their importance not only in SEO?
  • The main steps in working with filters
  • Discovering and understanding the search patterns of filters
  • Technical solutions for filters
    • Category vs. filter aka. Avoid the duplicates
    • Combination of filtering values and their indexing
    • Slide filters (slide bars)
    • URL address and parameter order
    • Indexing and crawling of filtering
    • Internal filter interlinking
    • Custom sitemap.xml file for parametric URLs
  • The content and (semi-)automatically generated texts
  • Conclusion – End of the story

Results and increase in search engine visibility

Let’s first take a look at why we should be dealing with filtering in the first place. The results achieved on the website of our client will help us with this.

Logo of AutoPalace

It is a well-known fact that SEO is a long-term commitment and the return on investment takes time. Nevertheless, organic traffic can bear fruit for many more years without the need for major interference.

Especially the organic results coming from the implementation of the basic elements of a proper filtration solution did not take long to appear. They immediately resulted in increased visibility of the website in the search engines.

Keywords in TOP 3: 180 → 381

Keywords in TOP 10: 400 → 1 351

Keywords in TOP 100: 4 500 → 13 079

Organic keywords on Ahrefs

Also, looking at Google Search Console and Google Analytics, the increase in organic traffic is more than clear.

Google Seach Console
Source: Google Search Console

In a year-on-year comparison over the past 3 months (March-May 2023) and since the six months long active cooperation, this means in numbers (I chose this period to easily demonstrate the results on the GSC data, which are limited to a 16-month horizon):

117% increase in clicks from Google Search (GSC)

353% increase in impressions from Google Search (GSC)

100% increase in total organic traffic (GA)

Example of web growth on non-branded keywords. Queries that we could realistically influence.

308% increase in clicks from non-branded queries from Google Search 

528% increase in impressions from non-branded queries from Google Search

Approximate value of organic non-branded traffic delivered over three months:

149 110 Kč = 6110 €

Calculation: increase on non-branded queries multiplied by the average cpc of non-branded campaigns in Google Ads Search for the given period.

This has resulted in a 36.7% year-on-year increase in leads from organic for Q1 2023. Also when we have information from the client that they have already fully covered the cost of SEO in this period. We know this based on the leads won from organic traffic and their margins.

All this in half a year since the start of active work on the project. The data above provide enough arguments why should filtering be considered at all. Now let’s see step by step what is exactly hidden behind the results.

What is filtering and what is its importance (not only) in SEO?

Imagine you’re buying a used car and already have a basic idea of how the car should look like. You go online to check how much such a car costs and what the current offers are. If you know a particular car dealership, with a website, you just type the URL into the command line. However, in most cases you type your question into an internet search engine such as the all-knowing Google.

In the Czech Republic, the most searched car model is Škoda Octavia. After entering your query into the search engine, you click on the first non-paid result and visit the landing page. Precisely on it, there are several dozen to hundreds of advertisements. But how to choose an offer that suits your needs the best? You go to the filters section and select your requirements – vehicle’s condition, year of manufacture, fuel, bodywork and other various specifications. The more, the better! Ideally, there will be just a few advertisements left on the page. And you still rank them by the cheapest price, because why would you pay more when you can pay less?

Stocked Cars in Brno Škoda Octavia on
Stocked cars in Brno Škoda Octavia

In short, filtering is a very simple and clever navigation tool for e-shops visitors. The actual potential of filtering from the perspective of a search engine has been highlighted in the text above, when the user didn’t know which e-shop to visit in advance. The user only got options in the search results under certain keywords, in this case “Škoda Octavia”, and filtered the rest on the selected landing page. It is exactly this keyword and its variations you want to be searchable. And what if I told you that there can be up to several hundred thousand keywords depending on the product range of your e-shop? To cover these searched combinations, we use filtering.

The main steps in working with filters

  1. Detection of the search patterns
  2. Hierarchy – category x filter
  3. Filter selection and definition of their creation
  4. Indexing and browsing restrictions
  5. Internal interlinking filter
  6. Content creation
  7. Monitoring and evaluation

Identifying and covering search patterns using filters

Ideally, filtering should be used to cover broad search patterns and long tail phrases that are not as widely searched, but have high search rankings in total. Moreover, they are all more conversional.

To identify search patterns, it is generally necessary to rely on keywords analysis. For example, by the previously mentioned car dealership, we found out that the most searched pattern is the “brand + model” of the car. However, we would have come to this conclusion without much consideration and thoughts. But the fact that users are looking for car brands in combination with a certain bodywork, transmission and fuel may not be so clear anymore. In short, keyword analysis provides important information about the potential of relevant keywords that we use for the broader index filtering. That means that for searched combinations of keywords we will want to generate indexable landing pages created by filtering. 

Technical solutions for filters

Category vs. filter aka. Avoid the duplicates

For the main search patterns, it is recommended to create static category pages that will be a fixed part of the web structure. These are the main product categories and subcategories, on which the relevant filters are placed. But be extra careful so that filtering doesn’t create other duplicated pages of the categorical ones.

Before we dive into the following chapters, it’s important to point out the user and SEO perspective. Filtering must work on both levels and make sense to both visitors and the search engine. In other words, so that we keep SEO fed and UX intact.

Combination of filtering values and their indexing

Filtering needs to be limited in its scope of indexing. Let’s look at the basic recommendations.

  • Multiple values in the same filter – noindex

We are talking about a case involving a combination of two car brands. These combinations are not searched for in the search engines, but we do want them on the web. For example, in the section of used cars, where:

stocked cars = category

used cars = subcategory

Citroën = brand filter

Ford = brand filter

Filtered used cars Citroën, Ford
Filtering of “Used cars Citroën, Ford”

We do not index pages for selecting multiple values (combination of 2 or more) within one filter.

  • Multiple values out of various groups of filters – index, but …

Now this is a different situation, since keyword analysis has revealed which combinations are searched for across the groups of filters. Let’s take an example of keyword “used cars škoda octavia”, where:

stocked cars = category

used cars = subcategory

Škoda = brand filter

Octavia = model filter

Filtered used cars ŠKODA Octavia
Filtering of used cars ŠKODA Octavia

Those are various groups of filters that are searched for. That’s why we want to index combinations across filters.

A limitation of indexing is also approached across different filters to a certain number of parameters. As a general rule, combinations of 3 or more different filters are not indexed. But the depth of indexing, of the number of various filters, is individual and the interplay with keyword analysis is necessary. Without this measure, there would be a large number of indexed pages unnecessarily overloading the search engine robots. 

Nonetheless, the best is to use your common sense and follow search patterns to limit indexing. Through the situation may vary within each industry.

Slide filters (slide bars)

From a user’s perspective, there are very nice options for filtering products, but they’re not very useful within the search engines. Therefore, the slide bars such as the option to limit the price, are also not indexed.

Often, there is a situation, where product queries are searched in combination with price, for example “a used car under 300 000”. We can just avoid the slider type of filters and create an indexable filter in the form of clickable fields.

Filter "Von bis"
Bis 50 000 CZK
Bis 100 000 CZK
Bis 200 000 CZK
Andere Preise
Von – Bis

Example of Slide bars

URL address and parameter order

Filtering saves time with manual creation of static websites, since it generates so-called parametric websites. Parametric URLs are usually not very user-friendly. Filters are identified by a character in the URL, often with a question mark or underscore.

The filter parameter for a brand in the URL can look like this:


After the underscore is a value of the corresponding filter. If the name of the parameter consists of two words, it is divided by a dash (more precisely, hyphen). However, it is entirely up to you and the developers, what form you choose. The key is clarity and readability. It is good to think about an easy way to create conditions to prevent indexing and passability (e.g. in the files robots.txt). For this purpose, I solely recommend creating a so-called nice URL, as the example above.

An important condition for proper functioning of the filtering is fixed order of parameters in the URL. Every parameter has its fixed position so it can’t happen that when you click on the filters in a different order, they appear in a new place in the URL. If this were to happen, a large number of duplicate websites would be created. And we obviously don’t want that.

Let’s use the example of a user on a page with used cars to show the fixed order of parameters. The user firstly clicks on the brand, then on the model and finally, on the bodywork. 

An example of filtering ŠKODA Octavia combi
Trans.: Stocked cars → Used cars → Škoda → Octavia → combi

That’s how URL is made: /stocked-cars/types_used/brand_skoda/models_skoda-octavia/bodywork_combi/

But what if the user clicked on the filters in this order?

Übersicht: Marke, Typ, Modell
Škoda → kombi → Octavia

By the logic of the correct solution, the same URL is generated again, not:


That implies that the order of parameters in the URL is truly fixed!

Indexing and crawling of filtering 

Now we clearly have defined search patterns that we want to cover by filtering. Further known as “best practise”; what combinations of filters and to what level to index and let the bots crawl. 

As mentioned before, the search engine has a limited crawl capacity for each website, so-called crawl budget, which we don’t want to waste on irrelevant websites. To prevent indexing, the HTML tag “noindex/follow” in the header is implemented for these pages. In order not to send the bot to irrelevant pages, we prevent its access by a directive in the robots.txt file.

TIP: Try out the functionality of directives in advance with the tool robots.txt Tester.

In the chapter above, we have mentioned the so-called slide filters, which are not suitable for indexing. Linking this knowledge to the chapter on parametric URLS, we can basically use a different parameter character for this type of filter, for example a question mark “?”.

Used cars category

Based on this distinct parameter, it will no longer be a problem for developers to set up a condition to prohibit indexing of all URLs created just after the question mark.

As SEO specialists, we can easily generate directives for robots.txt, which forbids passing off the search engine to the web section behind the parameter.

The condition may look like this:

Robots.txt Parameter

Internal filter interlinking

Since we want the search engine to easily get to the authorized parametric pages and crawl them regularly like a motor mouse, we need to clean up the path and show it the way.                                                                            

  • Linking from hrefs filter links

You shouldn’t use only JavaScript (as many developers like to do). Use old but gold href links. The type of linking can also be manually checked in the Chrome browser. When the filter box is selected, you right-click and select option “Explore”.

Linking from hrefs
Linking from hrefs filter

If the code shows  <a href=“URL“anchor text </a>, you’re on a right path.

Just insert the correct anchor text in keyword form directly. There is still room for improvement in the example above.

Some search engines are capable of getting to the site without this form of link, however href link will guarantee you certainty and peace of mind.

The crawling tool is very useful for mass checking of the search engine passing. We in eVisions use primarily Screaming Frog, which simulates website traffic of search engines, where you can crawl the whole web (or limit it to the parametric sites) and see if an href link leads to the site as well. 

You can still try clicking through the filter without active JavaScript. An active JavaScript can be switched off in a Chrome browser: Settings → Privacy and Security → Default behavior → JavaScript.

Turning off the JavaScript

After switching off JavaScript, it should be still possible to access the parametric site. But you should be careful, links can be hidden in JavaScript, but it has to be placed directly in HTML. That’s why a rule “Better to be safe than sorry” exists. 

Lastly, you can check internal links in Google Search Console in the section “Links”. Simply filter out the parametric sites and see if they’re internally linked to.

  • Other ways of linking to parametric sites

Parametric sites with greatest potential of organic traffic should be supported by other links within the site. This is also to facilitate the user’s orientation on a web. On AutoPalace it is solved by adding a link footer with TOP searched queries:

Most searched on

Then a signpost was created out of the partial offers of the specific cars, which links to the models of each brand. Thus, on every product page of a Škoda car, there is a signpost of models created:

The offer of stocked models

There are many options for internal linking, for example the breadcrumb navigation is one of the most basic ones. In addition to SEO, think again about the user-friendliness and relevance of internal links.

Custom sitemap.xml file for parametric URLs

Ideally, create a separate sitemap, which aggregates all indexed parametric URLs. Don’t forget to upload the sitemap to the Google Search Console and insert the link in robots.txt. A separate sitemap allows users to efficiently find parametric sites and understand their structure and role within the web. Additionally, a separate sitemap enables efficient handling with parametric sites, which is also better than if all sites were all together.

The content and (semi-)automatically generated texts

Pages created by filtering should have a unique content and not create duplicates. At least at a level of meta-titles, descriptions and H1 headlines. The basic logic is very simple; automatically inserting filters into texts. And that includes unindexed combinations. Yes, again the user’s perspective.

An actual implementation is once again, in the hands of developers (what would we do without them), but it is up to you to provide them with the necessary notes to create the text.

Let’s look at the example URL again:

Tasks for automatic text creation in the category of used cars – with selected filters – can look like the following:

  • Subcategory: Used cars
  • Brand filter: Škoda
  • Model filter: Octavia
  • Bodywork filter: combi

This is the category of used cars in the “stock” category. This category creates its own “supercategory”, so what’s why we wouldn’t describe it with more unnecessary text. We place a parameter into the text template, which says that on a certain point, all of the checked filters should be written off. Then the template for used cars can look like this:

  • Headline

Used cars [selected filters] for sale – AutoPalace

Based on this, a title is generated for a given URL:

Used cars ŠKODA Octavia combi for sale – AutoPalace

Example of generated title for URL
Example of a title for the given URL
  • H1 headline

In a case of H1 headline, we will stay a bit more conservative and design the template as:

Used cars [selected filters]

That’s how H1 headline is created:

Used cars ŠKODA Octavia combi

Headline example
  • Meta-title

You can be a little more creative in a meta-title and use other parameters, like for example the price. We need to take into account the possible creation of longer meta-titles, therefore we shall choose a shorter template.

With us, you won’t get burned when buying a used [all non-sliding filters]. With the price of [price1] you get a guarantee of mileage and the complete service history.

An example of a generated meta-title for the specific URL:

With us, you won’t get burned when buying a used Škoda Octavia kombi. With the price of 119 900 Kč, incl. VAT, you get a guarantee of mileage and the complete service history.

It is no secret that Google especially takes its meta-titles out from different content areas of the page according to the searched query. Nonetheless, it is still good to have a defined default meta-title.

  • Automated content of the page

We will use the same principle to create content for parametric pages in particular categories. Text is not created manually, but semi-automatically. That means that the principle contains a static (filling) and a dynamic part (variables). Let’s say that every category/subcategory should have its filling and defined relevant variables. The same filling should not be in the section of new and used cars.

More examples of variables in the section of used cars:

[number] – number of ads for given URL

[brand] – represents only brand: Audi, BMW, Škoda, …

[model] – represents only model: A3, Octavia, …

[mileage1] – lowest mileage for a given filter

[mileage2] – highest mileage for a given filter

For the creation of these texts, I personally use so-called division into introductory and background texts. Introductory text is usually one paragraph, which contains the most important information and keywords. Background text usually contains other relevant information with more keywords and can be hidden under the button “see more”. Commonly, FAQ is also added to the end.

Template of text category of used cars can look like this:

  • Introductory text

AutoPalace offers you a [number] of used stock cars of model [brand] [model] with bodywork [bodywork]. The offered cars are in a price range [price1] to [price2] CZK.

  • Background text

Is similar to the introductory text, but extended in text and parameters. In short, be creative, the more original and with added value to the user your text is, the better!

TIP: Generate your trial text for a category using AI. Do you have information in your know-how that AI wasn’t capable of generating? Then, definitely use it and add more value to your content!

  • Section of FAQ

H2: We are often asked

What is the warranty for a used car?

Because all of our used cars undergo a thorough inspection before they go on sale, we aren’t afraid to give our customers the option to extend their warranty up to 3 years. 

How to insure a second-hand car?

Before you take your used car on a road, you must have compulsory insurance. That’s why we in AutoPalace offer our clients to arrange insurance under the most favourable conditions directly on the spot when purchasing.

The result on the web looks like this:

Result of filtered search
Results of the search [1]
Results of search
Results of the search [2]

Bonus: Section of FAQ can be tagged with relevant structured data. The result may be worth it!

Conclusion – End of the story

Filtering is the basis of almost all e-shops and working with it surely brings the desired results. It is important to stick to the logic that filtering helps users as well as the search engines. A website that makes its way through the search results with filtering, gains a big competitive advantage in the form of “unpaid” organic traffic for a long period of time. There are a lot of steps within the AutoPalace project demonstration, which can be improved. However, the important part is the start, where you’re testing if you’re going the right way and getting some results as well.

The cooperation with developers is the key, without them, you can just throw everything in the trash. Make sure to maintain a good relationship with them and regularly consult about implementations. Every e-shop is built on a different solution, so there are going to be several obstacles in your way that you will need to intensively discuss with the developers. But there’s nothing that a good conversation over a cup of coffee can’t solve. 🙂

The technical solution always depends on a specific situation in a given industry, but the know-how presented in this article can have a very positive impact on your project as well. I believe that the provided, almost step-by-step, manual will help to put more than one smile on the clients’ and e-shop owners’ faces. So, let’s go for it!

Thank you for the pleasant cooperation of all partners involved in the project:

Client: AutoPalace Group 

Technical development of the solution: Sassy Group s.r.o. 

Strategy: s.r.o. 

Témata: Uncategorized