> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Total Products, WooCommerce

> Total Products. The count of products in your WooCommerce catalogue, the denominator behind every catalogue-health ratio. How to read it, why it matters, and how to act on it.

**Card class:** [Non-Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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](/nerve-centre/kpi-cards/woocommerce/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** |                                         |

Four things to notice:

1. **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.
2. **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.
3. **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.
4. **The count is the denominator for catalogue-health cards.** SKU coverage, image coverage, and [Variable Product Attribute Completeness](/nerve-centre/kpi-cards/woocommerce/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](/nerve-centre/kpi-cards/woocommerce/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](/nerve-centre/kpi-cards/woocommerce/products-missing-image)                                   | Same denominator. Image coverage is meaningless without the total it divides into.                                                        |
| [WC Variable Product Attribute Completeness](/nerve-centre/kpi-cards/woocommerce/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](/nerve-centre/kpi-cards/woocommerce/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](/nerve-centre/kpi-cards/woocommerce/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](/nerve-centre/kpi-cards/woocommerce/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](/wp-admin/edit.php?post_type=product). 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](/wp-admin/admin.php?page=wc-status) 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                                                         |

**Cross-connector reconciliation:** not applicable to this card. Total Products is a single-source WooCommerce count and does not join against any other connector. For cross-channel catalogue checks see [Marketplace Listing Drift vs Catalog](/nerve-centre/kpi-cards/woocommerce/marketplace-listing-drift-vs-catalog) or [WC Inventory vs Active Marketplace Listings](/nerve-centre/kpi-cards/woocommerce/wc-inventory-vs-active-marketplace-listings).

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The same "total catalogue count" metric lives on other commerce platforms. This is **not a reconciliation**, your WooCommerce store does not have a parallel store on Shopify or BigCommerce to compare against. These cross-links exist so agencies running multi-platform client books can navigate between identical metrics across the docs.

  * [`shopify.total_products`](/nerve-centre/kpi-cards/shopify/total-products)
  * [`bigcommerce.total_products`](/nerve-centre/kpi-cards/bigcommerce/total-products)
  * [`adobe_commerce.total_products`](/nerve-centre/kpi-cards/adobe-commerce/total-products)
</details>

## 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 via `wc/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](/nerve-centre/kpi-cards/woocommerce/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.

***

### Tracked live in Vortex IQ Nerve Centre

*Total Products* is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English.

[Start for free](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
