Searching for WooCommerce cross-sells not showing? You’ve set up cross-sells on your products and they’re nowhere to be seen. It’s rarely a bug: WooCommerce displays them in one place only, and only when several conditions are met. To write this guide we went through the WooCommerce 10.8 source code and tested it in a staging store, with both the block and the classic cart and checkout.
First, where they should appear; then the eight usual causes and their fixes; and finally, how to bring those same cross-sells to checkout, where WooCommerce never shows them.
Where WooCommerce shows cross-sells
Cross-sells are set on each product: in the “Product data” box, “Linked Products” tab, “Cross-sells” field. Whatever you add there is suggested when that product is in the cart.
And they are shown only on the cart page:
- Classic cart (the
shortcode): below the product table, under “You may be interested in…”. It shows two, picked at random from all eligible products. - Block cart (the default for new stores since WooCommerce 8.3): below the products, in a “You may be interested in…” section with up to three.
They don’t appear on the product page (that’s where upsells go), in the mini-cart or at checkout. Don’t confuse cross-sells with the “Related products” shown below the product page either: WooCommerce picks those automatically, by category and tags. If the terms are fuzzy, we explain them in order bump vs upsell vs cross-sell.
8 reasons they’re not showing
1. You’re looking where WooCommerce doesn’t put them
This is the most common one. If you expect them on the product page, in the mini-cart drawer or on the checkout page, they won’t be there. Add a product that has cross-sells to the cart and open the cart page.
2. They’re on the wrong product
Cross-sells go on the product the customer puts in the basket, not on the one you want to suggest. If you want a memory card suggested when someone buys a camera, the memory card goes in the “Cross-sells” field of the camera.
Check the field too: “Upsells” and “Cross-sells” sit one above the other, and it’s easy to fill in the wrong one.
3. The suggested product is already in the cart
WooCommerce removes anything already in the basket from the suggestions, variations included. If you test with a cart that already contains the memory card, it won’t be suggested. We checked: with two products in the basket that suggest each other, neither shows up as a cross-sell.
4. The suggested product isn’t visible
Only products that are visible in the shop get suggested. These are left out:
- Drafts, pending and private products.
- Products with “Catalog visibility” set to “Hidden” (in the product’s “Publish” box). We tested it: after hiding one of three suggested products, the cart showed only the other two.
- Products with visibility set to “Search results only”.
- Out-of-stock products, if you’ve ticked “Hide out of stock items from the catalog” in WooCommerce → Settings → Products → Inventory.
5. Your cart page has nowhere to show them
In the block cart, cross-sells are just another block on the page. If someone deleted it, they won’t show. Open Pages → Cart in the editor and look below the cart products for a “Product Collection” block using the “Cross-Sells” collection (older stores have a block called “Cart Cross-Sells” instead). If it isn’t there, add it.
If your cart is built with a page builder (Elementor, Bricks, Divi…), the cart template has to include that builder’s cross-sells element. If it doesn’t, WooCommerce has nowhere to render them.
6. A theme, plugin or code snippet removed them
In the classic cart, WooCommerce renders them by hooking woocommerce_cross_sell_display to woocommerce_cart_collaterals. Plenty of themes remove or move it, and removing it is a popular snippet in “tidy up your cart” tutorials. Search your child theme’s functions.php and your code snippets plugin for any line containing woocommerce_cross_sell_display or the woocommerce_cart_crosssell_ids filter.
If you find nothing, try a default theme such as Storefront or Twenty Twenty-Five on a staging copy of your site (never on the live store). If the cross-sells appear with it, your theme is the culprit.
7. Your customers skip the cart
If most of your customers go straight to checkout (via the mini-cart’s “Checkout” button, a “Buy now” button, or because the store redirects to checkout after adding a product), your cross-sells can be set up perfectly and still be seen by almost nobody. There’s nothing to fix in the settings here: the problem is the placement. We deal with it in the last section.
8. Fewer show up than you expected
If you added six cross-sells and only see two, that’s not a bug: the classic cart shows two at random and the block cart shows three. If you want more, read on.
How to show more than two
In the classic cart, with two WooCommerce filters. Add this with a code snippets plugin or in your child theme’s functions.php:
// Show up to 4 cross-sells in the classic cart, in 4 columns.
add_filter( 'woocommerce_cross_sells_total', function () { return 4; } );
add_filter( 'woocommerce_cross_sells_columns', function () { return 4; } );
The order is random by default. If you’d rather use another, the woocommerce_cross_sells_orderby filter accepts values such as price or menu_order.
In the block cart you don’t need code: open the cart page in the editor, select the cross-sells block and change the number of products and columns in its settings panel.
Why they don’t show at checkout (and how to get them there)
Even with everything set up correctly, you won’t see cross-sells on the checkout page. That’s by design: the function that renders them in the classic cart returns straight away if it detects the checkout, and the Checkout block has no cross-sells block at all. In our test, the same cart that showed three suggestions showed none once we moved on to checkout, on both the block and the classic checkout.
Forcing them in with code isn’t a good idea either. Cross-sells are built for the cart: their “Add to cart” button isn’t designed to update the checkout total without reloading the page, and a reload on the payment page can wipe the address and details the customer has already typed.
What does work at checkout is an order bump: an offer the customer adds by ticking a box, which updates the total without touching the form. It is how you show your add-ons to customers who skip the cart (reason 7), at the moment they’ve already decided to buy. We explain it in what is an order bump and how to use one in WooCommerce.
Bring your cross-sells to checkout
With EHERO Woo Checkout Offers (full disclosure: it’s ours) you choose the products to offer at checkout, give them a special price and show them only when certain products or categories are in the basket, just like a cross-sell but at the point of payment. No page reload, on the classic and the block checkout, and also in the cart and the mini-cart. One licence per domain, €79.99 a year.
FAQ
What’s the difference between cross-sells and upsells in WooCommerce?
Upsells offer a better alternative and appear on the product page. Cross-sells suggest complementary products and appear in the cart.
Why do I only see two cross-sells?
Because the classic cart shows two at random. You can raise the number with the woocommerce_cross_sells_total filter. The block cart shows up to three, which you can change in the editor.
Can I show cross-sells on the product page?
With a block theme, yes: the “Product Collection” block has a cross-sells collection you can place in the single product template in the site editor. With a classic theme you’ll need code or a plugin.
Do cross-sells show in the mini-cart?
No, neither in the classic mini-cart nor in the Mini-Cart block.
Can cross-sells be discounted?
Not out of the box: they show at their regular price, or their sale price if the product has one. For a price that only applies when bought together with another product, you need a plugin, such as an order bump plugin.
Can caching stop cross-sells from showing?
It shouldn’t: the cart page isn’t cached, because it changes for every customer. If your caching plugin is storing it, you have bigger problems than cross-sells, so exclude it.
Conclusion
If your WooCommerce cross-sells are not showing, work through it in order: look for them in the cart, make sure they’re on the product that goes in the basket, that the suggested product isn’t already in the cart and is visible, that your cart page has somewhere to show them and that no theme or snippet has removed them. And if your customers go straight to checkout, don’t obsess over the cart: bring those same suggestions to checkout with an order bump.
Related guides
- What is an order bump and how to use one in WooCommerce: examples, rules and what to measure.
- Order bump vs upsell vs cross-sell: what each technique is and when to use it.
- EHERO Woo Checkout Offers: the WooCommerce order bump with special prices, unit caps and statistics.



