# Published products that don’t show up in the WooCommerce shop

> A product is published, its status is correct, and yet it shows up nowhere on the shop: on WooCommerce, a product’s visibility depends on several settings independent from its publication status, and just one of them being off is enough to make it disappear.

- Source canonique : [https://allaux.fr/en/wordpress-woocommerce/problemes/produits-invisibles-boutique](https://allaux.fr/en/wordpress-woocommerce/problemes/produits-invisibles-boutique)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Open the product from Products > All Products and look at Catalogue visibility in the Publish box: set to Hidden, the product stays published but shows up in no listing. Then check WooCommerce > Settings > Products > Inventory, where the out-of-stock visibility option removes from the catalogue any product whose stock has reached zero.

## How I go about it

1. **Checking catalogue visibility** — I check the product-level "Catalogue visibility" setting (Shop and search results, Shop only, Search results only, or Hidden): set to Hidden, the product never shows up even when published.
2. **Checking stock and the inventory setting** — I check whether WooCommerce > Settings > Products > Inventory hides out-of-stock items from the catalogue: that checkbox removes a sold-out simple product, and a variable product only once every variation is sold out, with nothing visible in the editor.
3. **Checking the assigned category** — I check whether the product is attached to a category, since an orphan product can disappear from any category-filtered view while staying accessible on its own page.
4. **Checking the language on multilingual sites** — On WPML or Polylang, I check that the product’s translation is properly linked to the original and not detached, which would make it invisible in the language being browsed.
5. **Ruling out caching** — I clear page or object caching before concluding it’s a data problem: a shop cached before a visibility change can still show the old listing.

## What I handle regularly

- A published product shows up nowhere on the shop or category pages
- The product is still reachable via its direct URL but missing from listings
- A product disappears as soon as it goes out of stock, and a variable product as soon as its last variation sells out
- A product translated on WPML is visible in one language but not another
- The shop still shows the old product listing after an edit

## The settings that make a product invisible

"Catalogue visibility" is a setting specific to each WooCommerce product, with four possible values: Shop and search results, Shop only, Search results only, or Hidden. A product accidentally set to Hidden never shows up on shop or category pages, even while its publication status stays "Published": that’s the most common confusion for a merchant who checks the status without looking at this separate setting.

WooCommerce > Settings > Products > Inventory has a "Hide out of stock items from the catalogue" checkbox. Ticked, it removes any product from listings the moment it goes out of stock, even briefly, with nothing flagging it in the product editor itself. On a variable product, the parent only flips to outofstock — and only then leaves the catalogue — once every variation is sold out: as long as one variation still has stock, the listing stays visible and only that variation becomes unselectable.

A product not attached to any category can disappear from category-filtered views, including ones built by a page builder, while staying perfectly visible on its own product page. On multilingual sites running WPML or Polylang, a product translation detached from the original exists in the database but isn’t attached to the language being browsed: to a merchant, it still looks like an invisible product.

## A setting to fix isn’t a query to rewrite

> Fixing a visibility setting, a stock setting or a missing category takes minutes, and is configuration work. If the theme’s or page builder’s custom query powering the shop filters products in a way that no longer matches expectations, that’s code to review, not a checkbox to tick.

## Related pages

- **Incomplete translation** — A WPML translation left unlinked from the original also affects product visibility. ([/wordpress-woocommerce/problemes/traduction-incomplete](/wordpress-woocommerce/problemes/traduction-incomplete))
- **Slow WordPress site** — A cache not cleared after a catalogue change can also slow the shop down. ([/wordpress-woocommerce/site-lent](/wordpress-woocommerce/site-lent))
- **Custom extension** — Reviewing a custom shop template’s query that filters products incorrectly. ([/wordpress-woocommerce/extension-sur-mesure](/wordpress-woocommerce/extension-sur-mesure))

## FAQ

### I’ve checked that the product is published, why doesn’t it show up?

Publication status and catalogue visibility are two different settings on WooCommerce. A published product set to "Hidden" visibility will never show up on shop or category pages.

### A product disappeared on its own, without me touching anything, why?

Often because it went out of stock and the checkbox hiding out-of-stock products is ticked under WooCommerce > Settings > Products > Inventory. On a variable product this only happens once every variation is sold out: one variation still in stock is enough to keep the listing visible.

### The product is visible on its own page but not in its category, is that normal?

No, and it’s a common sign that it isn’t attached to any category, or that it is but the query powering the category page filters differently from what’s expected.

### My product exists in English but not in French on my WPML site, how is that possible?

The product translation probably exists in the database but isn’t correctly linked to the original in WPML: it exists without being attached to the French language being browsed.

### How long does it take to get my invisible products back?

For a visibility, stock or category setting, a few minutes once the product is identified. If the problem comes from a theme’s or page builder’s custom query, it needs the code reviewed.
