A wall of open bins channelling a stream of mixed products into narrowing lanes, each lane with its own small lever.

Faceted navigation — the filters down the side of a results page — looks like a front-end feature and is almost entirely a data problem. A "form: powder / capsules / liquid" filter is trivial to render and impossible to trust unless every product carries a clean, consistent value for that attribute. On a single store that is a tidy-up job. On a multi-vendor catalogue, where six vendors describe the same concept six different ways, it is the whole job. This is how we make facets that convert: build them from enriched, normalized attributes, let usage decide which survive, and control how they interact with search engines.

Filters are only as good as the attributes behind them

A facet is a promise: check this box and every product shown will have this property. The promise breaks the moment the underlying attribute is inconsistent, missing or guessed. If some products record "capsules", others "caps" and others leave the field blank, a "form" facet will silently hide products that belong in the results — and a shopper who filters to "capsules" and sees three items assumes you stock three, not thirty. So the work starts in the catalogue, not the component. Facets should be generated from attributes that enrichment has normalized to a canonical value, drawn from a deliberate product taxonomy rather than from whatever free text the vendor happened to supply.

This shared dependency is why investing in the catalogue pays twice: the same normalized attribute that powers a trustworthy facet also improves search recall and the quality of any AI feature that reasons over the data. Clean attributes are infrastructure, and facets are just the most visible thing standing on them.

The multi-vendor normalization problem

The hard part of marketplace facets is that no two vendors agree on vocabulary, units or structure. One vendor's "flavour" is another's "taste"; one records weight in grams, another in kilograms; one splits a product into variants where another uses a single listing. A facet cannot span that without a normalization layer that maps every vendor's raw attribute onto one shared field with one set of allowed values.

From production

Our "form" facet — powder, capsules, tablets, liquid — exists because enrichment normalizes that field to a canonical value across all six vendors, none of whom expressed it the same way. The facet is not something we render on top of vendor data; it is something we manufacture underneath it. A filter that spans a multi-vendor catalogue is a normalization project wearing a checkbox.

Normalization is also where you decide the vocabulary the shopper sees, which is a merchandising choice, not a data-cleaning one. "Powder", "powdered" and the local-language equivalent should collapse to one label — but which label, in which language, is a decision about how your customers think, not about which vendor supplied the most rows. Make it deliberately, and make it once, so the facet reads as one store's voice rather than six vendors' spreadsheets.

Which facets earn a place

More facets is not better. Every filter you add costs vertical space, adds decision load, and risks a low-value dimension crowding out a high-value one. Let usage decide. Instrument which facets are actually applied — the search and interaction data tells you — and keep the ones shoppers use, kill the ones they ignore, and never show a facet whose values are unreliable.

FacetKeep if…Kill if…
PriceAlways, with honest ranges
Form (powder / caps)Normalized and appliedValues inconsistent across vendors
BrandCatalogue has many brandsOne brand dominates the results
FlavourBounded set, usedHundreds of one-off values
Diet (vegan / gluten-free)Backed by a real data tagGuessed or derived
VendorShoppers filter by itUsage says they don't

Match the facet type to the attribute

Not every attribute wants the same control, and getting the type wrong is a quiet source of friction:

  • Single-select for mutually exclusive properties where picking two values makes no sense.
  • Multi-select for properties where a shopper legitimately wants several values at once — three flavours, two brands — usually OR within the facet and AND across facets.
  • Ranges for continuous values like price or weight, with sensible buckets rather than a raw slider that lands on empty bands.
  • Hierarchical for taxonomy-shaped attributes where a parent value implies its children.

The AND-across, OR-within convention is worth stating explicitly because shoppers assume it, and a store that ANDs within a multi-select facet — requiring a product to be vanilla and chocolate at once — produces baffling empty results that read as a broken store rather than a logical choice.

Facet SEO: control the crawl

Facets multiply URLs. Every combination of filters can generate a distinct address, and left unmanaged that produces millions of thin, near-duplicate pages that dilute your crawl budget and confuse indexing. The discipline has three parts. Decide which facet pages deserve to be indexable — usually a small set of high-demand single-facet combinations that match real search demand — and let those be crawlable with their own canonical. Point the long tail of multi-facet combinations back to a canonical parent so they are not indexed as duplicates. And keep filter interactions that should never be indexed (sort order, pagination beyond a point, session parameters) out of the crawl entirely. This is part of the broader marketplace SEO problem of a catalogue whose URLs churn as products and vendors change.

The UX details that decide trust

Once the data is clean and the crawl is controlled, a few interface choices decide whether facets feel trustworthy. Show result counts next to each value so shoppers know what they will get before they click, and update those counts as other filters are applied. Suppress facet values that would lead to zero results rather than letting a shopper filter their way into an empty page — an unproductive dead end erodes confidence as much as a bad no-results page does. Order facet values sensibly (by count or by a natural order, not alphabetically by accident). And be careful with price: a price facet is fine, but any "was / now" or discount framing inside it must obey the same substantiated-prior-price rules as the rest of the store, so price filtering never becomes an accidental Omnibus problem.

Key takeaways

  • Facets are a data problem — a filter is only as trustworthy as the normalized attribute behind it, so the work starts in the catalogue, not the component.
  • Normalize every vendor's vocabulary onto one shared field — a multi-vendor facet like "form" is a normalization project, not a checkbox.
  • Let usage decide which facets survive; kill the ones shoppers ignore and never show a facet whose values are unreliable.
  • Control facet SEO: index a small set of high-demand facet pages, canonicalise the long tail, and keep sort and pagination out of the crawl.
  • Show live result counts and suppress zero-result values so shoppers never filter themselves into an empty page.
  • Keep price-facet framing honest — discount language inside filters obeys the same prior-price rules as everywhere else.

Frequently asked questions

What is faceted navigation in ecommerce?
It is the set of filters — price, brand, form, colour, diet — that let shoppers narrow a results list by attribute. Each facet is a promise that every product shown has that property, which is why it depends entirely on clean, consistent attribute data underneath.
Why do my filters show wrong or missing products?
Almost always because the underlying attribute is inconsistent or blank — some products say "capsules", others "caps", others nothing. On a multi-vendor catalogue this is the default state until you normalize every vendor's values onto one shared field with a fixed set of allowed values.
How do facets affect SEO?
Facet combinations multiply URLs and can create millions of thin, near-duplicate pages that waste crawl budget. Index only a small set of high-demand single-facet pages with their own canonical, point the long tail back to a canonical parent, and keep sort and pagination parameters out of the crawl. See marketplace SEO.
Which facets should an ecommerce store show?
The ones shoppers actually use, backed by reliable data. Instrument facet usage and keep price, plus a handful of high-signal attributes like form, brand or diet where the values are normalized and real. Kill facets that are ignored or whose values you cannot trust.

Filters shoppers can trust.

Facets built from normalized, enriched attributes across every vendor are part of the marketplace we run on sites that already have traffic.

Request early access Filter the live catalogue →