# WooCommerce Cross-Sells Not Showing? 7 Reasons and How to Fix Them

> Cross-sells only show in one place, for one set of products, and only two at a time. The seven reasons they go missing, and the fix for each.

Source: https://nanflows.com/blog/woocommerce-cross-sells-not-showing
Published: 2026-10-30 · Updated: 2026-10-28
By: Nanflows team
About: Nanflows sliding cart (https://nanflows.com/products/nanflows-sliding-cart)

**In short:** WooCommerce shows cross-sells only on the cart page, and only those set on the products already in the cart. They go missing when they are set on the wrong product, when the Cart block has lost its Cart Cross-Sells block, when the products are hidden, out of stock or already in the cart, or when the theme leaves them out. Even when everything is right, the classic cart page shows just 2. To show them where shoppers look, [Nanflows Sliding Cart Pro](https://nanflows.com/products/nanflows-sliding-cart) puts the cross-sells of everything in the cart inside the side cart.

## Where WooCommerce shows cross-sells

WooCommerce has two kinds of linked products, set on each product under **Product data → Linked Products**:

- **Upsells** show on the product page, under “You may also like…”. They suggest a better version of the product being viewed.
- **Cross-sells** show on the cart page, under “You may be interested in…”. They suggest products that go with what is in the cart.

That’s all. Cross-sells don’t show on product pages, in the mini cart or at checkout. If you are looking for them anywhere other than the cart page, they are working as designed.

![WooCommerce Linked Products: upsells show on the product page, cross-sells show on the cart page](https://nanflows.com/img/blog/woo-linked-products.svg)
*Upsells belong to the product page. Cross-sells belong to the cart.*

## 7 reasons cross-sells are not showing

### 1. They are set on the wrong product

Cross-sells belong to the product the shopper buys, not to the product you want to suggest. To show wool socks when hiking boots are in the cart, open **the boots**, go to **Linked Products → Cross-sells** and add the socks.

For a variable product, set them on the main product. Every variation uses its parent’s cross-sells.

### 2. You are checking the product page

Cross-sells never show on a product page, whatever the theme. If you want suggestions there, use upsells, or a frequently bought together offer (see the FAQ below).

### 3. The Cart block lost its Cart Cross-Sells block

Newer stores use the Cart block instead of the old `[woocommerce_cart]` shortcode. Inside it, cross-sells are their own block, called **Cart Cross-Sells**. If someone deleted it while editing the cart page, cross-sells disappear without any error.

Open **Pages → Cart**, select the Cart block, open the List View and look for Cart Cross-Sells under the cart items. If it isn’t there, add it back.

### 4. The product is already in the cart

WooCommerce leaves out any cross-sell that is already in the cart. If the boots suggest socks and the shopper added socks, there is nothing left to suggest from the boots.

### 5. The product is hidden or out of stock

Only products a shopper could find in your catalog are shown. A cross-sell is skipped when:

- its **Catalog visibility** is set to **Hidden**,
- it is a draft or private, or
- it is out of stock and **Hide out of stock items from the catalog** is ticked under **WooCommerce → Settings → Products → Inventory**.

![Six cross-sells set, one already in the cart, two hidden or out of stock, and the classic cart page shows two](https://nanflows.com/img/blog/cross-sells-why-missing.svg)
*Sample cart. Each rule removes a few, and the cart page shows 2 of what is left.*

### 6. WooCommerce only shows 2

On the classic cart page, WooCommerce picks 2 cross-sells at random from everything that qualifies. If you set five, shoppers see two, and different ones on each visit. To show more, add this to your child theme’s `functions.php` or a code snippets plugin:

```php
add_filter( 'woocommerce_cross_sells_total', function () {
	return 4;
} );
add_filter( 'woocommerce_cross_sells_columns', function () {
	return 4;
} );
```

### 7. Your theme, page builder or cache leaves them out

On the classic cart page, cross-sells are printed by WooCommerce’s `woocommerce_cart_collaterals` hook. A theme or page builder with its own cart template can drop that hook. To test, switch to a default theme such as Storefront on a staging copy of your site. If cross-sells come back, the theme is the cause.

Check caching too. The cart page should never be served from a page cache, or every shopper sees the cart of whoever loaded it first.

## A quick checklist

| Check | Where |
|---|---|
| Cross-sells are on the product in the cart | Product data → Linked Products |
| You are looking at the cart page | Not the product page or mini cart |
| The Cart block has Cart Cross-Sells | Pages → Cart, List View |
| The suggested products are visible and in stock | Catalog visibility, stock, Inventory settings |
| You expect 2 at a time | The `woocommerce_cross_sells_total` filter |
| The theme prints them | Test with a default theme on staging |
| The cart page isn’t cached | Your caching plugin or host |

## Show cross-sells where shoppers actually look

Many shoppers never open the cart page. They add a product, keep browsing, and go straight to checkout. On a store with a side cart, the cart page is barely visited at all.

Nanflows Sliding Cart Pro shows the upsells and cross-sells of everything in the cart inside the side cart, as a carousel or a slider, and adds them with one tap without leaving the page. It uses the same Linked Products you already set, and you can edit every product’s upsells and cross-sells from one screen instead of opening products one by one.

![Upsells, a one-click shipping protection add-on and gift wrap inside the side cart](https://nanflows.com/img/blog/cart-upsells.svg)
*The cart’s suggestions, in the side cart instead of on a page shoppers skip.*

More on choosing what to suggest in [upsell vs cross-sell](https://nanflows.com/blog/upsell-vs-cross-sell) and [WooCommerce cart upsells](https://nanflows.com/blog/woocommerce-cart-upsells).

## Get it

- **Free:** [Nanflows Sliding Cart on WordPress.org](https://wordpress.org/plugins/nanflows-sliding-cart/), the side cart itself, with quantities, coupon, totals and checkout.
- **Pro:** [Nanflows Sliding Cart Pro](https://nanflows.com/products/nanflows-sliding-cart), $39 a year for one site or $149 for five, with upsells and cross-sells in the cart, rewards and cart analytics, and a 14-day refund.
- **More:** [cart upsells and cross-sells](https://nanflows.com/woocommerce-cart-upsell) and the [WooCommerce side cart](https://nanflows.com/woocommerce-side-cart).

## FAQ

### Where do cross-sells show in WooCommerce?

On the cart page only, under “You may be interested in…”. Upsells show on the product page. Neither shows in the mini cart or at checkout by default.

### Why are my WooCommerce cross-sells not showing?

Usually because they are set on the wrong product, you are checking the product page, the Cart block is missing its Cart Cross-Sells block, or the products are hidden, out of stock or already in the cart. WooCommerce also shows only 2 at a time on the classic cart page.

### How do I show more than 2 cross-sells?

Use the `woocommerce_cross_sells_total` filter to change how many show, and `woocommerce_cross_sells_columns` to change the columns. Both apply to the classic cart page.

### Can I show cross-sells on the product page?

Not by default. The product page shows upsells and related products. To offer extras on the product page, use a frequently bought together offer: the free [Nanflows Bundles](https://wordpress.org/plugins/nanflows-bundle/) plugin adds one, with a discount when the extras are ticked.

### Do cross-sells work with the WooCommerce Cart block?

Yes. The Cart block has its own Cart Cross-Sells block inside it. If cross-sells vanished after the cart page was edited, check that block is still there.
