WooCommerce Products Not Showing: Catalogue and Cart Fixes
Missing products usually come down to stock and visibility settings, a shop page that is not assigned, or a theme template that never runs the query. Check the data before the code.
Check the product data before anything else. Open one missing product in the editor and confirm four things: it is published, its catalogue visibility is "Shop and search results", it has a price, and it is in stock. That combination explains most cases, including missing add-to-cart buttons.
Case 1: no products anywhere on the shop page
Is a shop page assigned? Go to WooCommerce → Settings → Products and check the Shop page. If it is empty, WooCommerce has nowhere to render the catalogue. Assign it, then save permalinks once, per permalinks not working.
Does the assigned page contain content? The shop page renders the product loop automatically; extra content in that page can push it out or replace it entirely. Page-builder layouts applied to the shop page are the usual culprit — the loop is not a block you can accidentally delete, but a builder template can suppress it.
Is anything published? Filter Products → All Products by status. Products left as drafts after an import are common.
Was the setup completed? A store where the onboarding wizard never finished sometimes has no product catalogue permissions configured. Check that the WooCommerce pages — Shop, Cart, Checkout, My Account — all exist and are assigned.
Case 2: some products missing
| Setting | Where | Effect when wrong |
|---|---|---|
| Catalogue visibility | Product editor → Publish panel | "Hidden" removes it from shop and search |
| Stock status | Inventory tab | Out of stock plus the hide setting removes it |
| Product category | Product data | Category archives only show assigned products |
| Published status | Status | Drafts and pending never appear |
| Product type | Product data | An incomplete variable product renders unbuyable |
Also check WooCommerce → Settings → Products → Inventory for Hide out of stock items from the catalog. When it is on, restocking is what brings products back, not a settings change.
Bulk-fix visibility from the products list: select the products, choose Edit in Bulk Actions, and set visibility and stock status together.
Case 3: products exist but the category shows nothing
- Confirm the products are actually assigned to that category, not just tagged.
- Check whether the category is set to display subcategories only, under Appearance → Customize → WooCommerce → Product Catalog.
- Save permalinks once — taxonomy rewrite rules go missing after migrations.
- If the category page 404s rather than showing an empty list, that is a rewrite problem rather than a product one.
Case 4: the add to cart button is missing
WooCommerce hides the button when the product cannot be bought:
- No price. A simple product with an empty price field is not purchasable. This is the most common cause by far.
- Out of stock, or stock quantity at zero with backorders disabled.
- A variable product with incomplete variations — no price on a variation, or attributes not marked "Used for variations".
- A theme override. A theme copying WooCommerce templates into its own folder can ship an outdated
single-product.phpor loop template. Check WooCommerce → Status for the template version warnings; outdated overrides are listed there explicitly. - Catalogue mode. Some themes and plugins include a setting that removes purchasing entirely.
That Status screen is worth a look regardless — it flags outdated templates, missing pages and environment problems in one place.
Case 5: products appear for you but not for visitors
This is caching. Product pages, category archives and the shop page are cached like any other page, so a newly published product can be missing for anonymous visitors long after you see it.
Purge in order — object cache, page cache, host cache, CDN — as described in how to clear the WordPress cache. Then confirm cart, checkout and account pages are excluded from caching entirely, which is covered in choosing a cache plugin.
Case 6: after an import
CSV imports fail partially more often than people expect:
- products imported as drafts;
- prices in the wrong column, leaving them empty;
- categories not created, so products land uncategorised;
- variations imported without their parent, or vice versa;
- images not fetched, leaving placeholders — the general causes are in images not showing.
Re-run a lookup on a handful of imported products in the editor rather than judging by the archive page.
Case 7: nothing above applies
Then test the environment rather than the store:
- Switch to a default theme temporarily. If products appear, the theme is overriding templates.
- Disable non-WooCommerce plugins in batches — see disabling plugins without admin access if the admin is unreachable.
- Check WooCommerce → Status for database update notices. A pending database update after a WooCommerce upgrade leaves the catalogue in an inconsistent state until it is run.
- Turn on debug logging and look for fatal errors in the product template.
Do this on staging where possible. A store is the wrong place to disable plugins during business hours.
Frequently asked
- The usual causes are no price set, out-of-stock status, or a variable product whose variations are incomplete. WooCommerce hides the button rather than showing an unbuyable product.
- Either no page is assigned as the shop page in WooCommerce settings, or the assigned page contains content that replaces the product loop.
- Only if 'Hide out of stock items from the catalog' is enabled in the inventory settings. Otherwise they remain visible but cannot be purchased.