Product discovery is a revenue problem when every shopper sees the same assortment in the same order. A first-time visitor, a repeat customer, and a shopper with a full cart often have different needs. WooCommerce agencies can improve conversion and average order value by making recommendations relevant to the shopper’s context rather than adding more product tiles.
Start with the shopper’s current intent
The most useful recommendation signal is often the action the shopper is taking right now. A product page, search query, cart, and checkout each indicate a different level of intent.
- Product page: Show complementary products, compatible accessories, higher-value alternatives, and products with similar use cases.
- Category page: Prioritise best sellers, products matching the selected filters, and items that complete the category’s primary use case.
- Search results: Match product titles, SKUs, attributes, synonyms, stock status, and commercial priority to the query.
- Cart: Recommend items that can be used with the products already added, while excluding products the customer already owns or has added.
- Post-purchase: Recommend consumables, refills, replacement parts, training, or accessories based on the order rather than repeating the original purchase.
For example, a shopper viewing a camera should not automatically receive random products from the same category. They may be more likely to need a compatible memory card, spare battery, or lens. Those relationships should be managed as merchandising data, not inferred only from broad category membership.
Use WooCommerce’s merchandising fields deliberately
WooCommerce provides native fields for upsells and cross-sells. Agencies should define a merchandising rule for each field:
- Upsells are alternatives or upgrades shown on a product page. Use them for higher-capacity, premium, or better-performing products.
- Cross-sells are complementary products shown in the cart. Use them for accessories, consumables, installation services, or products commonly purchased together.
- Related products should help shoppers continue browsing when no specific merchandising relationship has been defined.
Do not treat these fields as interchangeable. Showing a premium alternative in the cart can distract from checkout, while showing an inexpensive accessory as an upsell can make the product page feel irrelevant.
For large catalogues, create a product relationship matrix. Useful relationship types include compatible_with, requires, consumable_for, upgrade_to, and often_bought_with. Store those relationships in product attributes, custom fields, a product information management system, or a dedicated recommendation system so they can be reviewed and imported consistently.
Combine rules with behavioural signals
Rules are essential for compatibility and commercial control, but behavioural data can improve ordering. A recommendation system can combine several signals:
- Products viewed in the current session
- Search terms and filter selections
- Products added to the cart
- Previous purchases for logged-in customers
- Orders from customers with similar purchase patterns
- Product popularity within the relevant category or customer segment
- Margin, stock availability, and current promotions
A practical scoring model might give a compatible product a high base score, add a smaller boost when it is frequently purchased with the current product, and remove it entirely when it is out of stock or incompatible. This is safer than allowing popularity alone to determine recommendations.
Apply hard exclusions before ranking. A product that does not fit the customer’s selected device, size, region, or subscription plan should not appear merely because it converts well overall.
Improve the default related-product experience
WooCommerce’s default related products are useful as a fallback, but they are rarely sufficient for a complex catalogue. Review the following settings and behaviours:
- Use meaningful product categories and tags rather than assigning every product to a generic category.
- Keep product attributes consistent so compatibility and similarity can be calculated reliably.
- Exclude hidden, unavailable, backordered, or regionally restricted products where appropriate.
- Set a sensible number of recommendations for the template and device. More products do not necessarily create more discovery.
- Use a deliberate sort order instead of relying on database order or an arbitrary product ID.
A custom implementation can replace or reorder related product IDs after applying business rules. The exact hook should be tested against the WooCommerce version and theme because recommendation output is often modified by the theme, a block, or a product-recommendation extension.
<?php
/**
* Example: remove products that should not appear in a recommendation list.
* Apply the same rules to every recommendation source used by the store.
*/
function agency_filter_recommendation_ids( $product_ids ) {
$filtered_ids = array();
foreach ( $product_ids as $product_id ) {
$product = wc_get_product( $product_id );
if ( ! $product || ! $product->is_visible() || ! $product->is_in_stock() ) {
continue;
}
// Replace this with the client’s compatibility or regional rules.
if ( $product->get_meta( '_exclude_from_recommendations' ) === 'yes' ) {
continue;
}
$filtered_ids[] = $product_id;
}
return array_values( array_unique( $filtered_ids ) );
}
This example is intentionally limited to filtering. It should not be copied as a complete recommendation engine. The agency still needs to connect it to the appropriate WooCommerce filter or recommendation provider and ensure that pagination, caching, permissions, and product visibility rules are preserved.
Make search more commercially useful
Search is one of the clearest expressions of shopper intent. A search for waterproof hiking jacket should not return products that merely contain the word jacket in a long description.
Configure search to understand:
- Synonyms, spelling variations, abbreviations, and product codes
- Product attributes such as size, colour, material, compatibility, and capacity
- Exact SKU matches and partial SKU matches
- Stock status and purchasability
- Category and brand intent
- Business rules for margin, seasonal stock, and promoted products
Search results should still respect relevance. A promoted product can receive a controlled boost, but it should not outrank an exact compatible result simply because it has a higher margin. Record zero-result searches and searches followed by product views or purchases; these reports reveal missing synonyms, catalogue gaps, and poor attribute data.
Personalise without breaking caching
Personalised recommendations introduce technical constraints for WooCommerce sites. Full-page caching can serve one shopper’s recommendation block to another shopper if the content is rendered into the cached HTML.
Use one of these patterns:
- Render stable, catalogue-wide recommendations in the cached page.
- Load shopper-specific recommendations asynchronously after the page loads.
- Use an edge or application service that varies responses safely by an anonymous session identifier.
- Cache recommendation results by a controlled segment, such as category, campaign, or customer group, rather than by personally identifiable information.
Test recommendations with page caching, object caching, CDN caching, logged-in sessions, guest carts, currency switching, and geolocation. A recommendation feature that works only when all caches are disabled is not ready for production.
Respect privacy and customer expectations
Explain what data is used to personalise the shopping experience and follow the client’s legal and consent requirements. Avoid exposing order history, customer segments, or inferred attributes in front-end markup or unauthorised API responses. Use aggregated behavioural data where possible, define retention periods, and make sure analytics events do not contain unnecessary personal information.
For logged-in customers, consider a simple control such as “show fewer recommendations based on my activity” if the client’s privacy policy or market requires it. Personalisation should improve relevance without making the shopper feel monitored.
Measure revenue quality, not just clicks
Track recommendation performance by placement and recommendation type. Useful events include impression, click, add to cart, purchase, and removal from cart. Report the results separately for product-page upsells, cart cross-sells, search recommendations, category recommendations, and post-purchase messages.
Evaluate:
- Recommendation click-through rate
- Add-to-cart rate after a recommendation click
- Conversion rate for exposed and unexposed shoppers
- Average order value and items per order
- Gross margin or contribution margin per order
- Returns, cancellations, and compatibility-related support contacts
Use an experiment or holdout group when possible. A recommendation block can receive many clicks while reducing checkout completion, slowing the page, or promoting products that create returns. Compare the complete customer and commercial outcome, not only the number of interactions.
Agency implementation checklist
- Map the client’s product relationships and define which are hard compatibility rules versus soft ranking signals.
- Clean categories, tags, attributes, SKUs, stock data, and product visibility settings.
- Assign a purpose to each placement: upgrade, complement, discovery, replenishment, or reactivation.
- Choose native WooCommerce fields, a recommendation extension, a search platform, or a custom service based on catalogue complexity.
- Apply exclusions for stock, region, customer eligibility, duplicates, and incompatible products.
- Implement asynchronous or segmented delivery for shopper-specific content where full-page caching is enabled.
- Instrument impressions, clicks, carts, orders, margin, and negative outcomes.
- Run controlled tests by placement and segment, then promote only recommendations that improve the target business metric.