Why Aren't My Products Showing on the WooCommerce Shop?
Why This Happens
WooCommerce gives fairly granular control over exactly where and how a product appears, which is powerful but means several independent settings can each, on their own, remove a product from the shop page without any error or warning — the product still exists and can even still be ordered directly by URL, it just won't appear in the shop listing.
Common Causes
- Catalog visibility set to "Search results only" or "Hidden" instead of "Shop and search results," found in the product's own Publish/visibility settings — this is the single most common cause of a specific missing product.
- Product marked out of stock, combined with a store setting to hide out-of-stock products from the catalog (WooCommerce → Settings → Products → Inventory).
- A shop page filtered by category, tag, or attribute via a shortcode parameter or a page builder's product grid settings, which can unintentionally exclude products that don't match the specific filter criteria.
- The product's publish status still set to Draft or Pending Review rather than Published.
- A caching issue showing a stale version of the shop page from before the product was added or its settings changed.
How to Diagnose and Fix It
- Check the specific product's catalog visibility setting first, since this is the most likely single cause.
- Confirm stock status and the store's out-of-stock visibility setting if the product is genuinely out of stock.
- Check whether the shop page itself has any category/tag/attribute filter applied that would exclude this specific product.
- Confirm the product is Published, not Draft, and clear any caching after making changes.
A quick way to find which setting hides the product
- Check the product's own visibility. In the Publish box, Catalog visibility should be "Shop and search results". Also check that publish date isn't set to a future date, which leaves the product as Scheduled.
- Check inventory settings. WooCommerce → Settings → Products → Inventory has an option to hide out-of-stock items from the catalog.
- Check how the shop page is built. A classic shop page can use a shortcode with category or tag filters. A block-based shop uses a template with its own query settings, such as category, attribute or stock filters. Either can exclude products without any error.
- Regenerate the lookup tables. WooCommerce → Status → Tools has a "Regenerate the product lookup tables" action. After imports or bulk edits, products can be missing from filtered and sorted lists until those tables are rebuilt.
Visible by URL but not in the list
If the product page loads when you open its address but the product never appears in the shop, the product is fine and something is filtering the list. That narrows the search to visibility, stock, and the shop page's query.
Need a proper catalog visibility audit across the whole store? See WooCommerce fixes.