Picture a shopper on a clothing store with 800 products. They want a cotton shirt, size L, in blue, under ₹1,500. If the store lets them filter by those things, they find what they want in seconds. If it doesn’t, or if the filters show “Blue”, “blue”, “Navy Blue” and “BLUE” as separate options, they give up. Good filtering is one of the most underrated parts of e-commerce, and in WooCommerce, it depends almost entirely on how you set up WooCommerce attributes.
This article explains the difference between global and custom attributes, how to decide what should be a category and what should be an attribute, how filtering works in modern WooCommerce and how to keep filters fast and search-friendly.
Attributes, categories and tags
WooCommerce gives you three main ways to classify products:
- Categories describe what a product is: Shirts, Trousers, Shoes. They usually form your main navigation and have their own landing pages.
- Attributes describe properties of a product: size, colour, material, brand, fit. They’re used for filtering and for creating variations.
- Tags are informal labels, such as “summer collection” or “bestseller”. They’re less structured and often less useful for shoppers.
A simple test helps decide which to use. If a shopper would browse by it as a destination, such as “show me all shirts”, make it a category. If they would narrow down within a destination by it, such as “only blue ones”, make it an attribute.
Avoid using categories for things that are really attributes. A category structure like Shirts > Blue Shirts > Blue Cotton Shirts creates endless duplication and thin pages. Keep categories for product types and use attributes for properties.
Global versus custom attributes
WooCommerce has two kinds of attributes.
Global attributes are created under Products, Attributes. Each one is a taxonomy, such as pa_color or pa_size, with a defined list of terms. You assign them to products and choose values from the list.
Custom attributes are created on an individual product and exist only there. Values are typed as text.
For anything you want to filter by, use global attributes. They give you:
- Consistent values across products, so “Blue” is always the same term
- Filtering through WooCommerce’s filter blocks and widgets
- Better performance, because filtering uses taxonomy queries
- The ability to manage values in one place, such as renaming or merging
Custom attributes are fine for one-off details that are never filtered, such as a product’s specific dimensions shown in the Additional Information tab.
Planning your attributes
Before creating attributes, plan them like a data model:
- List the properties shoppers care about when choosing products in each category. Customer questions, search terms and competitor filters are good sources.
- Decide which are useful filters. Size, colour, brand, material and price are typical. Internal codes and details few shoppers use are not.
- Define the allowed values for each attribute and how they’ll be named.
- Decide which attributes create variations, such as size and colour, and which are only descriptive, such as material.
Keep values consistent and limited. A colour attribute with 140 shades is hard to filter. Many stores use a simplified “colour family” attribute for filtering, such as Blue, Red and Green, alongside a more specific colour name shown in the product description.
Cleaning up existing attributes
On older stores, attributes are often messy: duplicate values with different capitalisation, custom attributes on some products and global ones on others, misspellings and values nobody uses.
A cleanup plan:
- Export products and list every attribute and value in use.
- Define the clean set of global attributes and values.
- Map old values to new ones, for example “navy”, “Navy Blue” and “NAVY” to “Navy”.
- Update products, by bulk edit, CSV import or a script.
- Delete unused terms.
Do this on staging first. Changing attributes used in variations can affect existing variations and orders, so test thoroughly.
How filtering works in modern WooCommerce
WooCommerce provides filter blocks for block themes and the block-based product collection:
- Filter by attribute
- Filter by price
- Filter by rating
- Filter by stock status
- Active filters, showing what’s selected with a way to clear
Classic themes use the older layered navigation widgets, which work similarly. Many themes and plugins offer their own filter systems with extra features, such as AJAX filtering without page reloads, swatches for colours and sizes, and filters for categories and custom fields.
When choosing a filter approach, check:
- Whether it uses attribute taxonomies, which perform well, or meta fields, which get slow on large catalogues
- Whether it shows counts and hides options with no results
- How it handles mobile, where filters usually belong in a slide-out panel
- How it creates URLs, which matters for SEO and caching
Filters and performance
Filtering is one of the heaviest operations in WooCommerce, because every combination of filters requires a fresh query, and filtered pages are often not cached.
Keep filtering fast by:
- Using global attributes, which use indexed taxonomy tables
- Keeping WooCommerce’s product attributes lookup table enabled, a table WooCommerce maintains specifically to speed up attribute filtering. It’s under WooCommerce, Settings, Products, Advanced. Regenerate it if counts look wrong.
- Limiting the number of filters shown, especially those that calculate counts for every option
- Using an object cache, such as Redis, to cache repeated queries
- Considering a search service for very large catalogues with complex filtering
Filters and SEO
Every filter combination creates a URL, such as /shop/?filter_color=blue&filter_size=l. A catalogue with several filters can produce thousands of combinations. If search engines crawl them all, they waste crawl budget on near-duplicate pages.
A sensible approach:
- Let filtered pages use a canonical tag pointing to the unfiltered category, which most SEO plugins and WooCommerce setups do.
- Prevent crawling of filter parameters you don’t want indexed, through robots.txt rules or by making filter links nofollow, if your filter plugin supports it.
- For filter combinations with real search demand, such as “blue cotton shirts”, create proper landing pages with unique content instead of relying on filter URLs.
Showing attributes on product pages
Attributes also help shoppers on product pages. WooCommerce shows visible attributes in the Additional Information tab. Make sure “Visible on the product page” is ticked for attributes customers care about. For key attributes like material or fit, consider showing them more prominently near the price, because many shoppers never open tabs.
A quick checklist
- Categories for product types, attributes for properties.
- Global attributes for anything filterable.
- Consistent, limited values with clear names.
- Variation attributes planned separately from descriptive ones.
- Filter blocks or a plugin that uses taxonomies and the lookup table.
- Canonical tags and crawl control for filter URLs.
- Regular cleanup of unused and duplicate values.
Getting WooCommerce attributes right takes some planning, but it pays back in every shopper who finds the right product in a few taps instead of scrolling until they give up.
Swatches and visual filters
For attributes like colour, pattern and size, visual swatches are easier to scan than dropdowns or text lists, especially on mobile. Many themes and plugins add swatches to both filters and product pages, using the colour or image set on each attribute term. Assign an image or colour to each term when you create it, and keep swatch sets consistent across categories, so shoppers learn to recognise them.
Accessibility matters here too. Colour swatches need text labels for screen readers and visible selected states that don’t rely on colour alone, such as a border or check mark.
Review filters with real shoppers
Watch a few people use your filters on a phone, or review session recordings. You’ll quickly see which filters get used, which get ignored and where shoppers get stuck, such as a filter that returns no results or a size list in an unexpected order. Sort size values logically, like XS to XXL, rather than alphabetically, using the term order settings. Remove filters that nobody uses, because every extra option makes the panel harder to scan. Small adjustments based on real behaviour usually improve filtering more than adding new features.
Revisit as the catalogue grows
As new product lines arrive, check whether existing attributes still fit, and add new ones deliberately rather than as quick custom fields.
Frequently asked questions
Can I convert custom attributes to global ones?
Yes, but not automatically in core. Create the global attribute, then reassign products by bulk edit, CSV or a script. Some plugins help with conversion.
How many attributes can a product have?
There’s no strict limit, but each attribute adds data and potential filter complexity. Keep to what shoppers actually use.
Should brand be an attribute or a taxonomy?
WooCommerce now includes a Brands feature as a separate taxonomy, which gives brand pages and filtering. For older stores, a global brand attribute also works.
Why do filter counts look wrong?
Usually the product attributes lookup table is out of date. Regenerate it in WooCommerce’s advanced settings.




