Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform

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 countsGROUP 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 endpointAdmin GraphQL. Product.status (enum ACTIVE / DRAFT / ARCHIVED).
What “ACTIVE” means in ShopifyVisible 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” meansSaved 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” meansSoft-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 treatmentNot applicable (catalog-count metric, not money).
Shipping / discounts / refunds / cancellationsNot applicable.
CurrencyNot applicable.
Channels / sourcesThe 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.
VariantsThe 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 windowRT (real-time snapshot). The card always reflects the current state of the catalog, not a windowed view.
Alert triggerNone. The card is informational; the actionable signal is unusual draft accumulation or a sudden archived-spike (catalog migration, app misfire).
Rolesowner, 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.
StatusProduct countShareNotes
ACTIVE41268.4%Live catalog, visible somewhere
DRAFT15826.2%Mostly seasonal lines saved-but-never-launched
ARCHIVED325.3%Discontinued formulations and old packaging
Total products602100%
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, 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:
CardWhy pair it with Product Status
Total ProductsThe aggregate number. The status split is the breakdown of this card.
Products by TypeWithin ACTIVE, how the catalog organises by structured product type.
Products by VendorWithin ACTIVE, the supplier mix.
Product TagsFree-text tagging coverage on the active catalog. Drafts and archived products are tagged too but invisible to shoppers.
Inventory AlertsStock issues only matter on ACTIVE products. A zero-stock DRAFT is by design; a zero-stock ACTIVE is a fulfillment risk.
Top Products by RevenueReads against the ACTIVE set; an archived product can still appear here if it sold during the window before being archived.
bigcommerce.product_statusSame definition, slightly different enum (BC uses is_visible boolean + availability string). Documentation cross-link.
adobe_commerce.product_statusAdobe 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 → 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:
ReasonDirectionWhy
Sync lagOurs 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 duplicatesOurs higher if duplication app presentSome 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 zoneNot applicableThis is a snapshot, no time-window effect.
CurrencyNot applicableCatalog count, no money.
Multi-store on Shopify PlusEach store separateShopify Plus organisations with multiple stores see one card per store, not aggregated.
B2B EditionEitherB2B-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:
CardExpected relationshipNotes
google_analytics.ga_product_countGA4 sees products that received view events; usually < ACTIVE countGA4 only knows about products customers actually viewed. Long-tail SKUs with zero views never appear in GA4.
klaviyo.kl_catalog_sizeShould match ACTIVE ± 2%Klaviyo’s product feed mirrors Shopify’s active catalog. Drift indicates a feed-sync issue.

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 (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 or book a demo to see this metric running on your own data.