WordPress 5 min read

WooCommerce products not showing on shop page: what I check

Shop page empty or missing SKUs while product URLs still work. Here is the checklist I run: catalog visibility, stock hide rules, shop page assignment, lookup tables, permalinks, and cache.

WooCommerce products not showing on shop page: what I check

The product page loads fine. Direct links still sell. The shop archive, though, looks half empty or shows nothing at all. Store owners usually assume a theme broke, when the cause is often a visibility flag, stock rule, or a stale product lookup table.

I treat a missing catalogue as a query and settings problem first. Below is the order I work through before I start swapping themes on a live store.

Confirm each missing product is Published and visible

Open the product in admin. Status must be Published, not Draft or Private. In the Publish box, check Catalog visibility. It needs to be Shop and search results (or Shop only if you intentionally hide from search). Hidden and Search results only both keep the product off the main shop grid.

I also check whether someone bulk-edited a batch and flipped visibility without noticing. One export or CSV import with the wrong column can hide a whole brand overnight.

Stock status and "hide out of stock"

Under WooCommerce → Settings → Products → Inventory, find Hide out of stock items from the catalog. If that is on, any product (or variation) marked out of stock disappears from the shop even when the product still has a public URL.

For variable products I open each variation. Parent stock can look fine while every variation is out of stock, or managed stock is on with quantity zero after a sync from a warehouse app. Fix stock first, then purge cache before judging the shop template again.

Categories and filters that empty the grid

Products with no category still appear on the main shop in a default install, but many themes and filter plugins only list products inside selected categories. A layered nav widget, a "featured only" shortcode on the Shop page, or a page builder query that pins an old category ID will look like Woo lost the catalogue.

I view the Shop page with ?filters cleared, in a private window, and compare against Products → All Products counts. If admin shows fifty published in-stock products and the front shows three, the page content or a filter plugin is the suspect, not core product records.

Shop page assignment and shortcodes

In WooCommerce → Settings → Products, confirm the Shop page dropdown points at the real Shop page. A redesigned marketing page that reused the old slug, or a translation plugin cloning pages, often leaves Woo pointing at an empty page that never runs the product loop.

If the Shop page is a page builder canvas, check it still contains the Woo products block or [products] / archive loop, not a static hero with no query. After a redesign handoff this is a regular miss.

Regenerate product lookup tables

Woo keeps lookup tables for catalog visibility and stock. After imports, bulk edits, or a bad migration those tables can disagree with what you see in the product editor.

Go to WooCommerce → Status → Tools and run Regenerate the product lookup tables. On larger catalogues I let that finish fully, then reload the shop in a private window. If products reappear here, stop fighting the theme and lock down whatever import or sync was writing incomplete visibility rows.

Permalinks, rewrite rules, and intermittent empty shops

When product URLs work but the shop archive intermittently shows zero results, I open Settings → Permalinks and click Save without changing anything. That flushes rewrite rules. Hosting cache or a theme that briefly drops add_theme_support( 'woocommerce' ) during a flush can leave the product archive rule missing until someone resaves permalinks.

If it keeps coming back on a schedule, dig into server cache, object cache, and anything that calls flush_rewrite_rules on cron. Do not keep resaving permalinks as the permanent fix.

Cache, CDN, and plugin conflicts

Full-page cache can serve an empty shop HTML for hours after you fix products. Purge the Shop URL and product archives on the host, CDN, and any Woo-aware cache plugin. Bypass cache for a logged-out test.

On staging I then:

  1. Switch briefly to a default theme that declares Woo support
  2. Disable catalogue, search, and filter plugins
  3. Confirm the default shop loop lists products
  4. Re-enable plugins in small batches

If a default stack shows everything, the conflict is in a query filter or template override, not missing products in the database.

When to stop guessing

If visibility and stock are correct, lookup tables are fresh, permalinks are saved, cache is purged, and a default theme still hides SKUs, stop shotgun-editing live products. At that point you want a staging clone, the exact Shop page HTML or builder query, and someone who has traced catalogue filters and rewrite flushes before.

Need this sorted properly? If the shop still looks empty after the checklist, I dig into visibility, lookup tables, filters, and cache on live Woo stores.

WordPress & WooCommerce support →

Most "products not showing on shop" tickets come down to catalog visibility, hide-out-of-stock, a wrong Shop page or builder query, stale lookup tables, or cached empty HTML. Check the product record and Shop assignment first, then tools and cache. Cheers, and get those SKUs back on the grid.

Need a hand with this?

Get help with a broken order journey, custom store features or ongoing WooCommerce care.

A related project

A custom price history feature for WooCommerce

Bespoke plugin work to record product price changes and present the history by date, delivered through an agency.

Talk directly to Adam

Share this article

Back to Blog