> ## 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.

# Product Status, Shopify

> Product Status for Shopify stores. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

## At a glance

> Product-count split by storefront publishing status: `ACTIVE`, `DRAFT`, `ARCHIVED`. The catalog hygiene number, are you running a tight catalog or sitting on accumulated draft sludge?

|                                                    |                                                                                                                                                                                                                                                                                                                                                                                   |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                                 | `GROUP BY status.keyword → COUNT(products)`. Each `Product.id` contributes one to its current `status` bucket. Snapshot, not cumulative; a product moved from `DRAFT` to `ACTIVE` yesterday is in `ACTIVE` today, with no historical contribution to `DRAFT`.                                                                                                                     |
| **API endpoint**                                   | `Admin GraphQL. Product.status` (enum `ACTIVE` / `DRAFT` / `ARCHIVED`).                                                                                                                                                                                                                                                                                                           |
| **What "ACTIVE" means in Shopify**                 | Visible on at least one sales channel (Online Store, POS, Buy Button, marketplace, Shopify Audiences, etc.). A product `ACTIVE` but unpublished from the Online Store still counts as `ACTIVE`, which surprises merchants who think `ACTIVE` = "shoppers can buy this online today". For "buyable on the website right now" use the per-channel publication state, not this card. |
| **What "DRAFT" means**                             | Saved in admin but not visible to any channel. Used during merchandising prep, supplier-sample evaluation, or for products being staged for a launch. Healthy stores keep `DRAFT` \< 5% of catalog; high `DRAFT` share usually indicates abandoned merchandising work.                                                                                                            |
| **What "ARCHIVED" means**                          | Soft-deleted. Removed from all channels but retained for historical order references (an `ARCHIVED` product still appears on past order line items). Crucially, `ARCHIVED` products *cannot be re-listed* without un-archiving first; merchants who archive seasonal SKUs annually must remember to un-archive before the season returns.                                         |
| **VAT / tax treatment**                            | Not applicable (catalog-count metric, not money).                                                                                                                                                                                                                                                                                                                                 |
| **Shipping / discounts / refunds / cancellations** | Not applicable.                                                                                                                                                                                                                                                                                                                                                                   |
| **Currency**                                       | Not applicable.                                                                                                                                                                                                                                                                                                                                                                   |
| **Channels / sources**                             | The status applies to the *product*, not its publication on each channel. A product can be `ACTIVE` but only published to POS (not the Online Store), or vice-versa. To see channel-level publication, drill into `productPublications` per product.                                                                                                                              |
| **Variants**                                       | The card counts at the *product* level, not the variant level. A product with 24 variants and 1 ACTIVE status is 1 toward `ACTIVE`. A store with 200 products averaging 8 variants each has 1,600 SKUs but only 200 rows in this card.                                                                                                                                            |
| **Time window**                                    | `RT` (real-time snapshot). The card always reflects the current state of the catalog, not a windowed view.                                                                                                                                                                                                                                                                        |
| **Alert trigger**                                  | None. The card is informational; the actionable signal is unusual draft accumulation or a sudden archived-spike (catalog migration, app misfire).                                                                                                                                                                                                                                 |
| **Roles**                                          | owner, operations                                                                                                                                                                                                                                                                                                                                                                 |

## Calculation

```
GROUP BY status.keyword
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

An AU SMB cosmetics brand on Shopify (Standard plan), single AUD storefront, \~3 years trading. Snapshot at 12 May 26.

| Status             | Product count | Share    | Notes                                          |
| ------------------ | ------------- | -------- | ---------------------------------------------- |
| `ACTIVE`           | 412           | 68.4%    | Live catalog, visible somewhere                |
| `DRAFT`            | 158           | 26.2%    | Mostly seasonal lines saved-but-never-launched |
| `ARCHIVED`         | 32            | 5.3%     | Discontinued formulations and old packaging    |
| **Total products** | **602**       | **100%** |                                                |

Five things to notice:

1. **Draft share at 26% is unhealthy.** Industry benchmark for active-cosmetics SMBs is `DRAFT` \< 8%. 158 drafts represent abandoned merchandising work: products created during a launch sprint, never published, slowly accumulating. **Audit drafts older than 90 days quarterly**, every draft is search-index pollution that slows admin and confuses staff merchandisers. Bulk-archive the ones that won't ship.
2. **Archived 5.3% is normal.** Categories with seasonal cycling (cosmetics, fashion, food) typically run 3 to 8% archived. Archiving is the correct action for permanent discontinuation; it preserves order-history references without bloating the live catalog.
3. **Active 412 is the operational number.** This is the catalog the customer can see (somewhere); it drives [Total Products](/nerve-centre/shopify/total_products), search-index size, sitemap entries, and most CDN costs. Stores trying to grow SEO traffic should care about the *quality* of these 412 (each with full content) more than total count.
4. **The active-vs-published gap.** Of the 412 `ACTIVE` products, perhaps 380 are published to Online Store (the gap is POS-only items, B2B-only items, or products `ACTIVE` but with the Online Store toggle off). The card cannot show this gap; you need to drill into `productPublications` per product. Common cause of the gap: an admin user toggled "remove from Online Store" instead of moving the product to `DRAFT`, leaving it `ACTIVE` but invisible.
5. **The 32 archived hide a quiet risk.** A merchant returning these to the catalog (a comeback formulation, a re-launched range) must un-archive *and* re-publish to channels. Archived products don't show up in product-search inside admin by default, so staff often don't know archived products exist; the un-archive step gets missed and the relaunch ships with a half-built catalog state.

## Sibling cards merchants should reference together

Product Status sits inside the catalog-hygiene cluster:

| Card                                                                                  | Why pair it with Product Status                                                                                                |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| [Total Products](/nerve-centre/shopify/total_products)                                | The aggregate number. The status split is the breakdown of this card.                                                          |
| [Products by Type](/nerve-centre/kpi-cards/shopify/products-by-type)                  | Within `ACTIVE`, how the catalog organises by structured product type.                                                         |
| [Products by Vendor](/nerve-centre/kpi-cards/shopify/products-by-vendor)              | Within `ACTIVE`, the supplier mix.                                                                                             |
| [Product Tags](/nerve-centre/kpi-cards/shopify/top-product-tags)                      | Free-text tagging coverage on the active catalog. Drafts and archived products are tagged too but invisible to shoppers.       |
| [Inventory Alerts](/nerve-centre/kpi-cards/shopify/products-with-zero-negative-stock) | Stock issues only matter on `ACTIVE` products. A zero-stock `DRAFT` is by design; a zero-stock `ACTIVE` is a fulfillment risk. |
| [Top Products by Revenue](/nerve-centre/kpi-cards/shopify/top-products-by-revenue)    | Reads against the `ACTIVE` set; an archived product can still appear here if it sold during the window before being archived.  |
| [`bigcommerce.product_status`](/nerve-centre/kpi-cards/bigcommerce/product-status)    | Same definition, slightly different enum (BC uses `is_visible` boolean + `availability` string). Documentation cross-link.     |
| [`adobe_commerce.product_status`](/nerve-centre/adobe_commerce/product_status)        | Adobe uses `status` (Enabled / Disabled) + per-website assignment. Documentation cross-link.                                   |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

> [Products → All products](https://admin.shopify.com/products) → filter by **Product status** (top of the list) → toggle Active / Draft / Archived

The list shows products filtered to the chosen status; the count at the top of the table is the directly comparable figure. There is no dedicated chart for this in Shopify's analytics suite; the product list is the source of truth.

Other Shopify Admin views that look adjacent:

* **Products → Collections**: a curatorial layer on top of the catalog. A collection can include archived products (they just won't render to shoppers); collection counts therefore differ from this card.
* **Products → Inventory**: variant-level, not product-level. Counts can be much higher (variants per product).
* **Settings → Sales channels → (each channel)**: per-channel publication state. Different from product status; a product can be `ACTIVE` and unpublished, or `DRAFT` and never published.

**Why our number may legitimately differ from Shopify Admin:**

| Reason                          | Direction                              | Why                                                                                                                                                                      |
| ------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Sync lag**                    | Ours lower for "today"                 | Catalog changes propagate via webhook with a 5 to 15 minute lag. Bulk imports / archive operations can have a longer lag (5 to 30 minutes for a 10,000-product re-sync). |
| **Product duplicates**          | Ours higher if duplication app present | Some apps (review imports, marketplace syncs) create duplicate `Product.id` rows during sync windows. Shopify Admin may collapse them in the UI; the card sees raw rows. |
| **Time zone**                   | Not applicable                         | This is a snapshot, no time-window effect.                                                                                                                               |
| **Currency**                    | Not applicable                         | Catalog count, no money.                                                                                                                                                 |
| **Multi-store on Shopify Plus** | Each store separate                    | Shopify Plus organisations with multiple stores see one card per store, not aggregated.                                                                                  |
| **B2B Edition**                 | Either                                 | B2B-only products published only to the B2B channel still count `ACTIVE`. Their visibility in the standard product list filter depends on which channel filter is set.   |

**Cross-connector reconciliation:**

Product Status is a Shopify-internal catalog metric. Cross-connector reconciliation is loose:

| Card                                                                                   | Expected relationship                                                  | Notes                                                                                                        |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [`google_analytics.ga_product_count`](/nerve-centre/google_analytics/ga_product_count) | GA4 sees products that received view events; usually \< `ACTIVE` count | GA4 only knows about products customers actually viewed. Long-tail SKUs with zero views never appear in GA4. |
| [`klaviyo.kl_catalog_size`](/nerve-centre/klaviyo/kl_catalog_size)                     | Should match `ACTIVE` ± 2%                                             | Klaviyo's product feed mirrors Shopify's active catalog. Drift indicates a feed-sync issue.                  |

***

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

  The Product Status concept exists on other commerce platforms with different enums and semantics; archived/inactive states map roughly but the lifecycle differs.

  * [`bigcommerce.product_status`](/nerve-centre/kpi-cards/bigcommerce/product-status)
  * [`adobe_commerce.product_status`](/nerve-centre/adobe_commerce/product_status)
</details>

## Known limitations / merchant FAQs

**What's a "good" mix of statuses?**
Category-dependent. Healthy targets: `ACTIVE` 85 to 95%, `DRAFT` \< 8%, `ARCHIVED` 2 to 10%. Stores running annual seasonal cycles (fashion, gift, food) sit at the high end of `ARCHIVED`; stores with stable evergreen catalogs (homeware, office supplies) at the low end. `DRAFT` above 15% always indicates abandoned merchandising work that needs cleanup.

**Why is "ACTIVE" not the same as "buyable on the website"?**
Because Shopify separates *product status* from *channel publication*. A product is `ACTIVE` if it's buyable on *any* channel; the website is just one channel. So a product `ACTIVE` and unpublished from the Online Store still counts as `ACTIVE` here while being invisible to web shoppers. To see "buyable on the website right now", you need the per-channel `productPublications` query, which this card does not surface. The roadmap includes a *Published to Online Store* card; for now, use the Shopify Admin filter "Sales channel: Online Store, Published".

**What happens when I archive a product that has live orders / customer reviews?**
The orders and reviews are preserved; archived products still render correctly on past order pages. The product is removed from search, collections, sitemap, and recommendations. Customer-facing review widgets typically continue to show reviews if cached; new reviews can't be left because the product page returns 404. To re-list, un-archive (status moves to `ACTIVE`) and re-publish to the desired channels.

**My catalog has 158 drafts, should I just delete them?**
Probably not delete, archive. Shopify's `delete` is permanent and can break historical reports if any of the drafts had ever been published or had inventory tracked. The safer cleanup pattern: bulk-archive drafts older than 90 days. They preserve their data and can be un-archived if you change your mind, but they stop polluting search and admin nav.

**Are variants counted here?**
No. The card counts `Product.id` rows, not `ProductVariant.id`. A product with 24 variants and `status = ACTIVE` is 1 row in `ACTIVE`. For variant-level counts, see [Total Variants](/nerve-centre/shopify/total_variants) (planned).

**Multi-currency stores, does the card change?**
No. Product status is currency-agnostic; the card looks identical for a single-currency and a multi-currency store with the same catalog.

**Subscription products, do they have a different status?**
No, they use the same `ProductStatus` enum. The "subscription" attribute lives in the variant's selling-plan associations, not in product status. A subscription product can be `ACTIVE`, `DRAFT`, or `ARCHIVED` like any other.

**Shopify Plus vs basic plan, behavioural differences?**
Largely none for the status enum itself. Plus stores running multiple stores in one organisation can have the same product replicated across stores, each with its own status; Combined Customer Records does not consolidate products. Basic stores see one catalog with one status per product.

**B2B vs DTC, do statuses behave differently?**
Status applies to the product regardless of B2B/DTC. A product `ACTIVE` and published only to the B2B Edition channel is invisible to DTC shoppers but still counts `ACTIVE`. The card cannot show this nuance; a B2B-heavy store should drill into channel publication state to understand catalog visibility per audience.

**Refresh cadence?**
Webhook-driven, near real-time. Status changes propagate within 5 to 15 minutes. Bulk operations (archive 5,000 products at once via the bulk editor) can take 5 to 30 minutes to fully reflect.

**The card shows products I don't recognise, where did they come from?**
Three usual causes: (1) an app installed silently created products (review-import apps, marketplace-sync apps, gift-card apps create their own products), (2) a CSV import ran with duplicate-creation enabled, (3) historical migration artifacts. Cross-reference the *Created date* and *Created by* in the Shopify product list to identify the source; the count is correct, the cleanup target is the unknown vendor.

**Action playbook when draft share is unexpectedly high:**

1. Sort drafts by *Updated date* ascending; the oldest are almost always abandoned work.
2. Bulk-select drafts older than 90 days. If there's no obvious reason to keep them, archive in bulk.
3. For drafts younger than 90 days, ask the merchandising team if any are pending launch. Convert to a launch list, schedule, and either publish or archive.
4. Audit the *Created by* field; if a single staff member or app created most drafts, fix the root behaviour (training, app config, removed app).
5. Set an internal SLA: drafts older than 60 days require justification or get archived. Bake into a monthly catalog-hygiene review.

***

### Tracked live in Vortex IQ Nerve Centre

*Product Status* is one of hundreds of KPI pulses Vortex IQ tracks across Shopify 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.
