Total Products for the selected period. The headline catalogue count and the denominator behind every catalogue-health ratio in the Nerve Centre.
At a glance
The total number of products in your WooCommerce catalogue. Counted from GET /wp-json/wc/v3/products and indexed on the standard refresh. It is the denominator behind every catalogue-health percentage (SKU coverage, image coverage, attribute completeness), so a wrong product count quietly distorts all of them.
| What it counts | COUNT(products) from the WooCommerce product catalogue. By default the card counts top-level products of type simple, variable, grouped, and external. Variations are NOT counted as separate products, a variable product with 12 variations counts as one product (its variations are children, fetched separately via wc/v3/products/{id}/variations). |
| REST API endpoint | GET /wp-json/wc/v3/products (paginated; the indexer walks every page). Fields used: id, type, status, sku. Variations come from GET /wp-json/wc/v3/products/{id}/variations and are excluded from this count. |
| Status treatment | By default counts publish products (live in the catalogue). draft, pending, private, and trash are excluded unless the merchant has configured the profile to include them. This is the most common reason the card reads lower than the raw “All (N)” number in WP Admin, which sums every status. |
| Product type | All four core types count as one each: simple, variable, grouped, external/affiliate. grouped parents count once even though they reference child simple products. |
| Variations | A variable product’s variations are NOT individual products. One “T-shirt” with S/M/L x 3 colours (9 variations) is one product here. If you want the variation-level view, that is a different metric. |
| SKU requirement | A product is counted whether or not it has a SKU. Products with a blank sku still count here, see Products Missing SKU for that gap. |
| Self-hosted vs managed-Woo | Identical definition on a self-hosted LAMP stack, WordPress.com Business / Commerce plans, and managed-Woo hosts (Woo.com Cloud, WP Engine, Pressable, Kinsta). Self-hosted stores with a slow host can show brief sync lag after a large bulk import; managed hosts settle faster. |
| Time window | RT (real-time snapshot, refreshed on the standard data refresh) |
| Alert trigger | none (informational count; no alert fires on this card) |
| Roles | owner, operations |
Calculation
Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK homewares brand on self-hosted WooCommerce 8.6 with WooCommerce Subscriptions and a bulk-import plugin. Catalogue snapshot taken 12 Apr 26.| Product type / status | Count | Counts in this card? |
|---|---|---|
simple, publish | 1,420 | Yes |
variable, publish | 286 | Yes (one per parent, not per variation) |
grouped, publish | 18 | Yes |
external/affiliate, publish | 6 | Yes |
simple, draft (work in progress) | 94 | No |
simple, trash (deleted, not purged) | 31 | No |
| Variations under the 286 variable products | 3,940 | No (counted as children, not products) |
| Total Products (this card) | 1,730 |
- Variations are not products. The 286 variable products carry 3,940 variations between them, but the card counts the 286 parents, not the 3,940 children. WP Admin’s product list behaves the same way (it shows parents), but a CSV export of variations or a “variation count” plugin will report a much larger number. This is the single biggest source of “your count looks wrong” confusion.
- Draft and trashed products are excluded. The 94 drafts and 31 trashed items do not count. In WP Admin the “All (1,855)” tab at the top of Products sums every status including drafts and trash, so the raw header number will read higher than this card. Click the Published (1,730) filter in WP Admin to match.
- Bulk imports cause a brief spike-then-settle. This brand ran a 400-product CSV import on 8 Apr 26. On a slow shared host the import wrote products in batches over ~40 minutes; the Vortex IQ indexer caught a partial count mid-import before settling on the final number at the next poll. Managed-Woo hosts complete the import faster, so the transient is shorter.
- The count is the denominator for catalogue-health cards. SKU coverage, image coverage, and Variable Product Attribute Completeness all divide by a product count. If you change the profile to include drafts here, those ratios shift too, keep the definition consistent across the workspace.
Sibling cards merchants should reference together
| Card | Why pair it with Total Products |
|---|---|
| WC Products Missing SKU | Uses Total Products as its denominator. A rising SKU-gap ratio with a flat product count means new products are landing without SKUs. |
| WC Products Missing Image | Same denominator. Image coverage is meaningless without the total it divides into. |
| WC Variable Product Attribute Completeness | Focuses on the variable subset of this count. Pair to see how much of your catalogue is variable and how complete those variations are. |
| WC Out of Stock Products | OOS as a share of Total Products tells you what fraction of the live catalogue cannot be sold. |
| WC Draft Products 30d Old | The drafts excluded from this card. A growing draft pile means catalogue work is stalling before publish. |
| WC Stock Value Snapshot | Total Products is the count; stock value is the money tied up in them. |
Reconciling against WooCommerce
Where to look in WooCommerce Admin: WP Admin → Products → All Products. At the top of the list a row of status filters reads All (N) | Published (N) | Draft (N) | Trash (N). This card matches the Published count by default, not the All count. Use the Product type dropdown to confirm the split across simple / variable / grouped / external. For the catalogue overview, WP Admin → WooCommerce → Status → Tools and the Reports → Stock views also surface product-level counts, though each applies its own status filter. Why our number may legitimately differ from WooCommerce Admin:| Reason | Direction of divergence |
|---|---|
Status filter. WP Admin’s “All (N)” header sums publish + draft + pending + private + trash; this card counts publish only by default. | Ours lower than the “All” header, equal to the “Published” filter |
| Variations counted separately. A variation-export plugin or a custom report can count each variation as a row. This card counts parent products only. | Ours much lower if a tool counts variations |
| Sync lag after a bulk import. A large CSV import on a slow self-hosted host writes products in batches; the indexer may catch a partial count mid-import before settling. | Ours temporarily lower; self-resolves at next poll |
| Timezone / snapshot timing. This card is a point-in-time snapshot on the standard refresh; WP Admin is live. A product created seconds ago appears in WP Admin first. | +/- a handful of products at the boundary |
| Plugin behaviour. Catalogue plugins (product bundles, composite products, B2B catalogues that hide products per customer role) can register custom product types or hide products from the default query. The card counts what the REST API returns for the indexer’s credentials. | Investigate per-merchant if persistent |
| HPOS vs legacy. High-Performance Order Storage affects orders, not products, so it does not change this count. Mentioned only to rule it out, product counting is unaffected by HPOS. | No effect |
Known limitations / merchant FAQs
Why does this card read lower than the number at the top of my Products page? Because WP Admin’s “All (N)” header sums every status, including drafts, pending, private, and trash. This card counts published products by default. Click the Published (N) filter at the top of the Products list and the numbers should line up. Do variations count as products? No. A variable product with 12 variations counts as one product. WooCommerce treats variations as children of the parent, fetched separately viawc/v3/products/{id}/variations. If a count looks far too high, something is counting variations as products.
Do grouped and external/affiliate products count?
Yes. All four core product types, simple, variable, grouped, and external/affiliate, count as one product each. A grouped parent counts once even though it references several child simple products.
Does a missing SKU stop a product being counted here?
No. SKU presence is irrelevant to this count, a product with a blank SKU still counts. SKU coverage is a separate metric, see Products Missing SKU.
Can I include drafts in the count?
Yes, the status scope is configurable per profile in the Sensitivity / profile settings. Be aware that changing it shifts every catalogue-health ratio that divides by this count, so keep the definition consistent across the workspace.
Why did my count jump after a bulk import and then settle?
Large CSV imports write products in batches. On a slow self-hosted host the Vortex IQ indexer can catch a partial count mid-import before the import finishes; the count settles at the next successful poll, usually within 1 to 3 hours. Managed-Woo hosts complete imports faster, so the transient is shorter.