Faceted navigation without duplicate content chaos
Filters are non-negotiable UX - nobody browses 400 shirts unfiltered. But every filter combination is potentially a URL, and the combinatorics get absurd fast: 6 colors × 8 sizes × 5 materials × 3 fits is thousands of URL variants per collection, each a thin near-duplicate of the parent. This is the crawl-waste engine from earlier in this phase, and the reason faceted navigation is a design problem and an indexing problem.
The framework that resolves it
One principle sorts nearly every case: filters serve narrowing; collections serve demand. A filter combination is navigation state - useful to the person filtering, meaningless as a destination. A collection is a page - built for a query family people actually search. So: "black + linen + relaxed fit" stays an unindexed filter state. "Linen shirts" - real demand, per your Phase 4 keyword mapping - gets a real collection at a real URL with real content. When a filter value shows consistent search demand, that's your signal to promote it to a collection. The filter UI and the collection can even coexist pointing at the same products; they're serving different visitors.
How Shopify implements this - and what to check
Shopify's Search & Discovery app provides native filtering built on your data - product options and metafields - rendered as ?filter.v.option.color=black style parameters that canonicalize to the base collection. Correct default behavior: filter states collapse to the parent, invisible to indexing. Your checks: that filtered URLs do canonicalize to the clean collection URL (view source on a filtered page), and - if you use a third-party filtering app - the same check with more suspicion, because filter apps rewriting URLs with their own logic are a recurring source of indexation chaos in audits. A filter app that generates crawlable, indexable, self-canonicalizing URLs for every combination is manufacturing thin pages at industrial scale.
The part nobody frames as SEO: filters run on your data
Here's this phase's recurring theme wearing its UX costume. Filters draw their options from structured attributes. Products with an empty material metafield simply don't appear when customers filter by material - functionally out of stock for every filtering customer, invisibly. A filter showing "Cotton," "cotton," and "100% Cotton" as three options is your consistency debt (Phase 2) rendered directly in the customer's face. The completeness audit you built isn't hygiene; it's whether your navigation works.
So the faceted navigation checklist is short: filter states canonicalize away, demanded combinations get promoted to collections, and the attribute data underneath is complete and clean. Two parts indexing, one part - as always - the catalog.