Zeo delivery method
Faceted Navigation & Filter SEO
Every filter state in a named class with one consistent rule, search exposure only where demand and stock hold, and no shopper control removed to tidy the crawl graph.
A shopper sees useful controls such as size, color, brand, and price. A crawler can see every selection, sort order, parameter sequence, and empty result as another URL, including thousands nobody intended to publish.
We preserve the filter journey shoppers need, rein in the URL generators behind it, and give search exposure only to combinations that earn a lasting place in the catalog.


Some of the 500+ brands we've worked with
See all referencesStages and gates
How we do it
We start by documenting how filter URLs are made, then decide which states should become durable search destinations.
Inventory the full filter grammar
We trace every facet, value, sort, multi-select, pagination state, locale, and platform layer that can create or link a URL.
A parameter register with real examples, owners, and an honest estimate of how many states exist.
- AI assist
- Crawling the live site to enumerate every facet, sort, and parameter combination actually generating a URL.
- Human gate
- Assigning a real owner to each parameter and confirming the estimate isn't missing a whole generator. Parameter register reviewed by an owner


Separate navigation from search value
We compare combinations against real demand, stable inventory, existing category ownership, and a distinct shopper task.
Each state class gets one decision (index, navigation-only, canonicalize, block, redirect, or retire).
- AI assist
- Scoring filter-state combinations against demand and inventory signals so a person reviews a ranked shortlist instead of a raw parameter list.
- Human gate
- Making the index, navigation-only, canonicalize, block, redirect, or retire call for each state class. Index decision set per state class


Align routing, links, and crawler directives
For every class, we specify how routing, internal links, HTTP status, robots, noindex, canonical, sitemap inclusion, pagination, parameter order, and empty results must work together.
One precedence-based rule matrix shows the expected treatment and examples without asking one directive to undo another.
- AI assist
- Checking sampled URLs against the draft matrix to expose contradictory routing, linking, and index directives before release.
- Human gate
- Deciding which instruction takes precedence when two rules genuinely conflict for the same URL class. Every rule-matrix conflict is resolved


Publish only combinations that can hold their value
Each approved combination receives one stable URL, a useful assortment, a clear title and heading, contextual copy, internal links, structured data, and an inventory lifecycle.
The output is a short backlog of owned landing pages. Your platform can generate every facet pairing, and should not.
- AI assist
- Preparing title, heading, and structured-data fields for approved combinations from the agreed template.
- Human gate
- Verifying that demand and stock still support a permanent, indexable page before the combination is built. Every backlog item is approved individually


Test the weird states before rollout
We run normal, reordered, multi-select, sorted, paginated, empty, low-stock, localized, and malformed examples through the live template.
A boundary report that catches traps and conflicts before a broad rule reaches the whole catalog.
- AI assist
- Generating the full matrix of edge-case URL examples, reordered, malformed, low-stock, to run through the live template.
- Human gate
- Judging whether a boundary-test failure blocks the broader rollout or is an acceptable, documented exception. Boundary report cleared before scale-out


AI enumerates and scores the URL space; people decide which states deserve a page.
AI crawls the live site to enumerate every facet, sort, and parameter combination actually generating a URL, scores filter-state combinations against demand and inventory signals so a person reviews a ranked shortlist instead of a raw parameter list, checks sampled URLs against the draft matrix to expose contradictory routing, linking, and index directives before release, prepares title, heading, and structured-data fields for approved combinations, and generates the full matrix of reordered, malformed, and low-stock edge cases to run through the live template. It never opens the index itself. We do not index an uncontrolled parameter universe or publish keyword-swapped combinations with no distinct shopper value, we do not invent product counts, availability, attributes, or hidden filter states, and we will not remove or conceal useful shopper controls to make the crawler graph look tidier.
Deliverables and acceptance
What you get
Four working artifacts turn an unruly filter system into a contract that product, engineering, merchandising, and SEO teams can maintain.


Architecture map
Facet decision register
Accepted when
Every state class includes examples, its shopper purpose, search treatment, page owner, and review owner.


Decision matrix
Crawl & index rule matrix
Accepted when
Internal links, HTTP status, robots, noindex, canonical, sitemap inclusion, parameter order, pagination, and empty-state behavior agree for every class.


Prioritized backlog
Valuable combination backlog
Accepted when
Every candidate has distinct demand, one page owner, stable product rules, a minimum inventory threshold, and a defined lifecycle.


Evaluation sheet
Boundary assertion report
Accepted when
Representative states match the expected rule live. Failures name the generator, owner, release, and rollback.
We call it done when: The facet register, rule matrix, combination backlog, and boundary report are done when every state class names its examples, shopper purpose, search treatment, page owner, and review owner, the internal links, HTTP status, robots, noindex, canonical, sitemap inclusion, parameter order, pagination, and empty-state behavior agree for every class, every backlog candidate has distinct demand, one page owner, stable product rules, a minimum inventory threshold, and a defined lifecycle, and every representative state either matches its expected rule live or names the generator, owner, release, and rollback behind the failure.
Fit and readiness
When you need this
This work suits stores that need shoppers to narrow a catalog without letting each filter choice open another uncontrolled crawl path.
A good fit when
- Facets, sort controls, query parameters, and multi-select options produce more URL variants than the team can account for.
- A few combinations could serve a clear search need, but they sit inside a much larger pool of duplicates, thin assortments, and zero-result states.
- Internal links, routing, HTTP status, robots rules, noindex, canonicals, and sitemaps give crawlers conflicting instructions for the same filter state.


Better handled as other work when
- The plan is to index every possible combination, even when it lacks distinct demand, dependable inventory, or an accountable page owner.
- You can change one directive but cannot inspect and test the links, routing, status, canonical, and empty-state behavior around it.
If one of these is closer to your situation, start here instead: E-commerce SEO
We call it done when: Every filter state belongs to a named class with one compatible crawl, index, canonical, link, and empty-state rule. Valuable combinations have real demand and stock behind them. And shoppers never lose a useful control just to save crawl budget.
The specialists behind this SEO work
Zeo's SEO work goes back to 2006, when we started what we call the first SEO blog in the MENA region. The consultants shown here are doing that work today, matched to what this page covers.

Elif Naz Akan Karakoç
Senior SEO Executive

Sinem Bakır Yavaş
Senior SEO Executive

Sena Önder
Senior SEO Executive

Ali Özgün Öz
SEO Executive

Bensu Tınastepe
Senior SEO Analyst

Ruhan Tiryaki
Senior SEO Analyst

Yağmur Bayram
Sr. SEO Analyst

Emir Kağan Kahveci
SEO Analyst

Metehan Urhan
New Business & Partnership Manager

İlker Emir
Senior Performance Marketing Executive

İpek Ezer
Performance Marketing Executive

Onur Durdağı
Performance Marketing Executive

Sevda Yurtvermez
Performance Marketing Team Lead

Serap Yurtvermez
Performance Marketing Team Lead

Abdullah Tanıdır
Performance Marketing Team Lead
Content we've produced on this topic
Tools we use
Tools behind this work
Semrushchecks durable demand before a filter becomes a landing page
Screaming Frogenumerates filter parameters, combinations, directives, and empty result states
Botifyshows which filter states consume crawl attention repeatedly
Oncrawlcompares crawler visits with indexable facet rules and inventory
Google Search Consoleidentifies filter combinations already receiving distinct search demand
Google Analyticschecks whether contained filters still help shoppers narrow products
Next step
Let's map the filter maze


Before we start



















