---
title: "Check Applicability: Why Some Checks Are Skipped"
description: "Check applicability is the part of [Catalog Health Scanner for WooCommerce Pro](https://wpfactory.com/item/catalog-health-scanner-for-woocommerce/) that decides which groups of checks make sense for your store, so a flat-rate store is never marked down for missing product weights and a store with no…"
url: "https://wpfactory.com/docs/check-applicability/"
updated: "2026-10-05"
category: How to
tags:
  - Catalog Audit
---

# Check Applicability: Why Some Checks Are Skipped

Check applicability is the part of [Catalog Health Scanner for WooCommerce Pro](https://wpfactory.com/item/catalog-health-scanner-for-woocommerce/) that decides which groups of checks make sense for your store, so a flat-rate store is never marked down for missing product weights and a store with no product feed is never marked down for missing GTINs. Catalog Health Scanner detects the answer from your own WooCommerce configuration, shows you the reasoning, and lets you override it per group.

## Where applicability lives

Go to **WPFactory > Catalog Health**, open **Settings**, and find the **Applicability** panel. If the shared WPFactory admin menu is not present on your site, the plugin falls back to its own top-level **Catalog Health** menu and the same Settings screen sits under it.

The panel is a three-column table: the check group, the state you have chosen, and what auto-detect currently says about your store in plain language. Your choices are stored in the `wpfchs_applicability` option.

Each category tab also shows the same verdict inline, next to the category heading, with a **Change** link that jumps straight back to this panel.

## The four states

Every group can be in one of four states. Two of them are the interesting ones: **Not applicable** removes the group entirely, and **Report, but do not score** keeps the findings visible without letting them move your health score.

| State | Stored value | Checks run? | Counts toward the score? |
| --- | --- | --- | --- |
| Auto-detect (recommended) | `auto` | Only if your store configuration says the group applies | Same as above |
| Applicable | `yes` | Yes, always | Yes |
| Report, but do not score | `report_only` | Yes, always | No |
| Not applicable | `no` | No | No |

### Why "report, but do not score" exists

Some findings are genuinely useful to see but are not something you are ready to be judged on. Feed readiness is the usual example: you may want the GTIN and brand gaps listed so you can work through them before you launch a shopping feed, without those gaps dragging the headline number down in the meantime. Set the group to `report_only` and the checks keep running, the issues keep appearing in the category tab, and the category shows **Reported, not scored** next to its heading. Nothing from that group reaches the score arithmetic, and it cannot trigger the critical score cap either.

## The groups and what auto-detect looks at

Eight groups can be switched. Everything else (purchasability, media, structure, content, and the non-cost pricing checks) always applies to every store and is always scored.

| Group | Key | Signal auto-detect uses |
| --- | --- | --- |
| Inventory & stock | `inventory` | Store-wide stock management (`woocommerce_manage_stock`) is enabled. |
| Shipping weight & dimensions | `shipping` | At least one enabled shipping method in any zone is not flat rate, free shipping, or local pickup. Anything else (table rates, weight-based rules, carrier calculators) is assumed to need weight or dimensions. |
| Tax | `tax` | Tax is enabled and more than the standard tax class exists. |
| Downloads | `downloads` | At least one product has `_downloadable` set to yes. |
| Product feed readiness | `feed` | A known feed plugin is active (Google Listings & Ads, Woo Feed, WooCommerce SEA, Rex, and similar), or a feed identifier meta key such as `_global_unique_id`, `_alg_ean`, or `_wpm_gtin_code` is populated on any product. |
| Cost of goods & margin | `cog` | Cost data is present on at least one product (`_alg_wc_cog_cost` or `_wc_cog_cost`). |
| Product reviews | `reviews` | Reviews are enabled store-wide (`woocommerce_enable_reviews`). |
| FAQ / Q&A content | `faq` | Always applicable under auto-detect. Question-and-answer content on a product page is useful on any store, so there is no configuration signal to read. |

Category tabs map to these groups by name, so the **Inventory**, **Shipping**, **Tax**, **Downloads** and **Feed Readiness** tabs follow the group of the same name. The `cog` group covers the three cost and margin checks inside the **Pricing** tab, and `reviews` and `faq` cover one check each inside the **Content** tab, which is why those two tabs can be part scored and part report-only.

### The setup wizard only asks about five of the eight

The five-question [setup wizard](https://wpfactory.com/docs/install-catalog-health-scanner/) covers `shipping`, `feed`, `cog`, `downloads` and `tax`. Those are the groups where a store owner's answer is likely to differ from what the configuration suggests, and each question arrives pre-answered with the auto-detect verdict. If your answer matches what was detected, the group is left on **Auto-detect** rather than being frozen into a manual override, so it keeps following your store as your store changes.

The other three, `inventory`, `reviews` and `faq`, are never asked about. They start on auto-detect and stay there until you change them on the Settings screen. That is not an oversight: stock management and reviews are unambiguous store-wide WooCommerce settings, and the FAQ group applies everywhere. If you want any of the three in a different state, the Settings panel is the only place to set it.

## The detection cache

Auto-detect answers are cached for one hour in the `wpfchs_autodetect` transient. That keeps the settings screen and every scan from re-running the same product probes over and over on a large catalog.

The cache is cleared automatically when you save settings, when a scan starts, and when a scan completes, so you should never have to wait an hour to see a configuration change reflected. If you change something outside the plugin, for example enabling a weight-based shipping method, and the Applicability panel still shows the old reasoning, save the settings once to force a refresh.

## Overriding a group

1. Go to **WPFactory > Catalog Health > Settings**.
2. In the **Applicability** panel, read the third column to see what auto-detect concluded and why.
3. Change the dropdown in the second column for any group you want to control by hand.
4. Click **Save settings**.

An override is absolute: **Applicable** runs and scores the group even when your store shows no sign of needing it, and **Not applicable** skips it even when auto-detect says otherwise. Leave a group on **Auto-detect** and it keeps following your store as your store changes.

## Applicability is not the same as disabling a check

Three different controls silence findings, and they are not interchangeable:

- **Applicability** works on a whole group and reflects a fact about your store. It is the right tool for "weights are irrelevant here".
- **Individual checks** (the tick boxes below the Applicability panel, stored in `wpfchs_disabled_checks`) turn one check off everywhere. Use it when you disagree with a single rule.
- **[Ignore](https://wpfactory.com/docs/ignore-false-positives/)** silences one check on one product, and nothing else.

All three leave the score honest in their own way: a non-applicable or report-only group leaves both sides of the score fraction, a disabled check does the same, and an ignored issue counts as passing and is declared next to the score. See [how the health score is calculated](https://wpfactory.com/docs/catalog-health-score/) for the arithmetic.

## Partial applicability inside an applicable group

Group applicability is the coarse filter. Individual checks then decide, product by product, whether they have anything to say. A check that does not apply to a product is not a pass and not a failure: that product is simply not counted for that check, on either side of the fraction.

| Checks | Only run on |
| --- | --- |
| Missing weight, missing dimensions, missing shipping class, implausible weight | Physical products (not virtual, not downloadable) |
| Virtual product with dimensions | Virtual products |
| Downloadable not marked virtual, and every Downloads check | Downloadable products |
| Variation SKU missing, attributes not used for variations, invalid variation attribute, variation count mismatch | Variable products |
| Invalid grouped children | Grouped products |
| Category not in a navigation menu | Stores that actually put product categories in a WordPress menu |

This is why a store of 500 downloadable products can have a perfect Shipping score without a single shipping field filled in: none of those products were ever asked the question.

## Changing applicability recalculates your history

If applicability only affected new scans, your trend line would break every time you changed it: the drop or jump would look like a change in your catalog when it was really a change in the ruler. Catalog Health Scanner does not do that.

When you save the Settings screen and the applicability states have changed, every completed scan is recalculated from the counters it recorded at the time, using the configuration you just saved. Nothing is re-scanned and no product data is touched: the raw "checked" and "failed" numbers each scan stored are simply re-scored under the new rules.

Scans whose score actually moved are marked. On the **History** tab their score carries a small `*`, with a tooltip reading "Recalculated after an applicability change; the trend stays comparable." The original score is kept alongside the new one in the scan record, so the marker is a statement of fact rather than a quiet rewrite. See [scan history and comparison](https://wpfactory.com/docs/scan-history-compare/) for the rest of that screen.

Recalculation only touches scans whose stored counters still exist and whose score changed by more than a rounding margin. A scan that the new configuration does not affect is left exactly as it was, with no marker.

## Developer hooks

| Filter | Purpose |
| --- | --- |
| `wpfchs_applicability_resolve` | Final say on a group: receives `applicable`, `scored`, `reason`, `source`. |
| `wpfchs_applicability_auto_detect` | Overrides one auto-detect verdict and its reason before it is cached. |
| `wpfchs_dimensionless_shipping_methods` | Shipping method ids that never need weight or dimensions. |
| `wpfchs_feed_plugin_signals` | Class names and constants that identify a product feed plugin. |
| `wpfchs_feed_meta_keys` | Product meta keys that count as a populated feed identifier. |

More hooks are listed in the [developer reference](https://wpfactory.com/docs/catalog-health-developers/).

## Need help?

If a group is being detected in a way you cannot explain, or a check is running on products you expected it to skip, [contact WPFactory support](https://wpfactory.com/support/) with a screenshot of the Applicability panel.

Related articles

- [Check Library: All 70 Catalog Health Checks](https://wpfactory.com/docs/catalog-health-checks-reference/)
- [The Catalog Health Dashboard and Score](https://wpfactory.com/docs/catalog-health-dashboard/)
- [Scan Profiles: Built-in and Custom](https://wpfactory.com/docs/scan-profiles/)
- [Run Your First Catalog Scan](https://wpfactory.com/docs/run-your-first-scan/)
- [Fix Catalog Issues Safely: Preview, Undo and the Fix Log](https://wpfactory.com/docs/fix-catalog-issues/)
