Algolia does not rank WooCommerce search results with one blended relevance score. Its default ranking formula evaluates records against an ordered list of criteria. The first criterion that distinguishes two records determines their order; later criteria are used only when earlier criteria are tied.
For a WooCommerce catalog, this means a product with fewer typos can outrank a product with stronger merchandising rules, because typo is evaluated before custom. Understanding the order is essential when diagnosing why a product appears lower than expected.
The eight Algolia ranking criteria
1. Typo
typo measures how many spelling corrections Algolia must make to match a record. Exact spellings rank ahead of one-typo matches, and one-typo matches rank ahead of records requiring more corrections.
For example, a search for wireless headphones should generally rank a product containing those correctly spelled words above a product that is found only after correcting headphons. This helps shoppers recover from typing errors without allowing heavily corrected matches to dominate accurate matches.
In WooCommerce, make sure important product vocabulary is present in the indexed searchable fields. Product names, SKUs, brands, categories, and relevant attributes should be normalized consistently so that a typo match is based on useful catalog data rather than accidental text in a long description.
2. Geo
geo ranks records by geographic distance when the index contains geo coordinates and the query includes a location, such as a user position or a specified point. Products or offers closer to the shopper can therefore rank ahead of more distant ones.
This criterion is especially useful for agencies implementing local inventory, store pickup, regional sellers, or marketplace-style WooCommerce catalogs. A product record might include a store or warehouse location such as:
{
"objectID": "product-4821",
"_geoloc": {
"lat": 51.5074,
"lng": -0.1278
}
}
If the catalog is not location-aware, geo has no practical effect. Do not add coordinates merely to influence ranking; use them only when distance is meaningful to the buying decision.
3. Words
words compares how many query words match a record. A product matching every meaningful word in the query normally outranks one matching only part of it.
For a query such as black waterproof hiking boots, a product matching all four terms should generally rank above one matching only black and boots. This is different from typo handling: the product may contain every word correctly but still be less relevant because it matches fewer of the requested terms.
Searchable attribute configuration has a direct effect here. If important product data is not included in searchableAttributes, Algolia cannot use that data for word matching. Conversely, adding boilerplate content to searchable fields can create matches that look relevant to the engine but are not useful to shoppers.
4. Filters
filters evaluates how well records satisfy filter criteria. It is relevant when the request applies facet, numeric, tag, or other filter restrictions. A product that satisfies more of the applicable filtering logic can receive a better position when records are otherwise tied.
For WooCommerce, common filterable fields include:
categoriesbrandpa_sizeandpa_colorstock_statuspricerating
Use attributesForFaceting for fields that shoppers can filter, and keep filterable values stable. A product that is out of stock should not be made artificially competitive through ranking if the user has requested an in-stock filter and the index or query logic does not enforce that condition correctly.
5. Proximity
proximity measures how close the matched query words are to one another in the indexed text. A record where the words occur together is usually more relevant than one where the same words are scattered across unrelated content.
For example, a product titled Stainless Steel Coffee Grinder should generally rank above a product whose description mentions coffee in one section and a grinder accessory much later. This criterion makes phrase-like searches more useful without requiring every query to be an exact phrase.
Attribute ordering and content structure matter. Put the product name, brand, and high-value attributes in dedicated fields rather than concatenating the entire WooCommerce product object into one large text field. Clean, intentionally structured data gives proximity a more useful signal.
6. Attribute
attribute uses the order of searchableAttributes to prefer matches in more important fields. A match in the product name can therefore rank ahead of the same match in a description, specification, or lower-priority field.
A typical WooCommerce configuration might prioritize fields in this order:
searchableAttributes: [
"unordered(name)",
"brand",
"categories",
"sku",
"unordered(short_description)",
"unordered(description)"
]
The exact configuration depends on the catalog. SKUs may deserve high priority for professional buyers, while consumer stores may prioritize brand and category terms. Avoid placing a long description before the product name unless that is an intentional business decision.
7. Exact
exact favors exact matches over partial or broader matches. It can help a product with an exact product name, SKU, brand, or query term outrank a product that merely contains related text.
Exact matching is valuable for navigational searches. If a shopper searches for a specific model such as ABC-2000, the product whose SKU or model field exactly matches that value should not be buried beneath products that mention ABC or 2000 separately.
Be careful with inconsistent catalog formatting. Values such as ABC-2000, ABC 2000, and abc2000 may not behave as the same business identifier in your indexing and normalization pipeline. Define a canonical SKU or model field and populate it consistently.
8. Custom
custom applies the index’s customRanking settings after the preceding criteria have been evaluated. This is the main mechanism for business-specific ordering, such as promoting popular, highly rated, profitable, or recently updated products.
A WooCommerce index might use:
customRanking: [
"desc(conversion_rate)",
"desc(popularity)",
"desc(rating)",
"asc(price)"
]
These values are applied in the order listed. A product with a higher conversion rate can outrank another product with a lower conversion rate, but custom ranking cannot normally override a stronger result on an earlier criterion such as typo count or word matching.
Do not use customRanking as a substitute for query rules, filters, or inventory logic. If a campaign must promote a product for a particular query, use a query rule or merchandising strategy. If a product must never appear because it is unavailable, enforce that through indexing and filtering rather than relying on a low custom score.
How the criteria work together
Algolia evaluates the criteria sequentially rather than adding arbitrary weights. Consider two products returned for red running shoes:
- Product A matches all three words with no typo, but has a lower popularity value.
- Product B matches all three words with one typo correction, but has a higher popularity value.
Product A normally ranks first because typo is evaluated before custom. Increasing Product B’s popularity does not compensate for its weaker earlier criterion in the same way that increasing a numeric relevance weight would.
This ordering explains many apparent ranking surprises. Teams often adjust popularity, sales, or margin fields and expect an immediate change, while the real difference is caused by searchable attribute order, missing words, typo tolerance, or an exact-match condition.
WooCommerce implementation checklist
- Map product names, brands, categories, SKUs, and attributes into deliberate Algolia fields.
- Review
searchableAttributesso high-value fields appear before long descriptions. - Declare only genuine shopper facets in
attributesForFaceting. - Normalize SKUs, model numbers, brands, and attribute values during indexing.
- Keep stock, visibility, catalog permissions, and price-range constraints in reliable filters or index rules.
- Use numeric custom-ranking fields with consistent defaults; avoid null or missing values where possible.
- Test exact product-name searches, typo searches, multi-word searches, filtered searches, and SKU searches separately.
- Inspect the Algolia response and ranking configuration before changing merchandising values.
Debugging a product that ranks too low
Start by comparing the affected product with a product that ranks higher for the same query. Check the number of matching words and typos first, then compare the matched attributes and word proximity. After that, inspect filters and exact-match behavior before changing customRanking.
For repeatable testing, create a small set of representative queries covering product names, category terms, brand names, SKUs, misspellings, and attribute combinations. Record the expected result, the actual position, the indexed fields, and the ranking configuration. This gives an agency a defensible way to distinguish a data problem from an intentional Algolia ranking outcome.