Visibility Doctor for WooCommerce

Why is this WooCommerce product hidden, or not purchasable?

Open the product and read the answer: listed in the shop, found by search, purchasable, each with its causes. Or audit the whole store in one click. Read-only, free, no external service.

Get the free plugin on WordPress.org See Pro

The problem

A customer writes "I can't find this product" or "there is no Add to cart button". WooCommerce decides whether a product is visible and purchasable from several factors: status, catalog visibility, stock with the "Hide out of stock items" setting, price, variations, and any plugin that hooks into those decisions. It answers yes or no, and never says which factor decided.

The product list has no column or filter for it. And the shop and search do not read the product's visibility setting directly: they read the product_visibility terms that WooCommerce sets when the product is saved. After an import or a migration, those terms can disagree with what the product edit screen shows.

Visibility Doctor reads all of this and names the cause. It changes nothing in your store.

What you see

On the product edit screen

Text illustration of the "Visibility Doctor" box for a variable product. The exact wording on screen may differ slightly.

Visibility Doctor
  Listed in the shop and categories   yes
  Found by search                     yes
  Purchasable                         no
    - no purchasable variation

  Variations
    Size: S    no   out of stock
    Size: M    no   no price
    Size: L    no   disabled

In WooCommerce > Visibility Doctor

  1. "Run audit" goes through all your products, trash excluded, 100 at a time, and shows its progress.
  2. The result lists only the products with at least one "no" or one warning: product (linked to its edit screen), type, status, the three verdicts, the causes.
  3. Counters per cause at the top and a filter by cause. The last result is kept with its date until you run the next audit.

What it detects

  • Status: draft, pending review, private, scheduled, in the trash; parent product not published.
  • Catalog visibility: hidden, search results only, shop only.
  • Out of stock while "Hide out of stock items from the catalog" is on.
  • Empty price; variable product with no variation or no purchasable variation (disabled, no price, out of stock).
  • Out-of-stock visibility term out of sync after an import: hidden by "Hide out of stock items" although the product is in stock, or the reverse.
  • Password-protected product; stock quantity inconsistent with the stock status.
  • Product hidden or made not purchasable by another plugin, with that plugin's name.
  • Product hidden from the shop and search but still purchasable through its direct link.

Free vs Pro

FeatureFreePro
Diagnosis box on the product edit screen: three verdicts, causes, warnings, one line per variationYesYes
Store-wide read-only audit, counters and filter per cause, last result keptYesYes
CSV export of the last auditNoYes
"Visibility" column and "Visibility issue" filter in the product listNoYes
WP-CLI command wp vdwc audit (table, CSV or JSON)NoYes
External callsNoneLicense check only (Freemius)
PriceFree€29.99/year excl. VAT for 1 site, one year of updates and support

Pro is a separate plugin installed next to the free one. Both are GPLv2 or later. Nothing in the free plugin is time-limited or locked, and it keeps working if the Pro license lapses.

Free on WordPress.org Buy Pro, €29.99/year

FAQ

Does it change my products?

No. The box and the audit are read-only; each audit line links to the product so you can fix it yourself. The plugin only stores the last audit result.

Why is my product still hidden after fixing the cause?

The shop and search rely on visibility terms set when the product is saved. Open the product and click "Update" so WooCommerce sets them again, then clear any page cache.

How does it know another plugin is involved?

For a published product, it compares the verdict WooCommerce would give on its own with the result after other plugins' filters, and names the plugins hooked to those filters.

Does it work with the new product editor, WPML or Polylang?

Not tested yet. The diagnosis box is a classic meta box on the product edit screen; the audit page does not depend on the product editor.

Does it call any external service?

The free plugin: no, and no tracking. Pro: only the license check with Freemius, when you activate, verify or deactivate the license. No customer data is sent.

What do I need?

WordPress 6.8 or later, PHP 7.4 or later, WooCommerce 9.0 or later. WP-CLI for the Pro command.

Refunds?

Full refund within 14 days of purchase, no questions asked: write to support with your order e-mail.

Security and privacy

Found a vulnerability? Write to security@timaub.fr. The same contact is published in /.well-known/security.txt (RFC 9116). We reply within 5 working days, fix confirmed issues in a new release and credit reporters who wish it; please give us a reasonable time to ship a fix before disclosing.

This page loads no external script, font or tracker. Privacy details: Privacy.