Review the Product Data Health dashboard
The Product Data Health dashboard is a read-only catalog audit. In a single view it flags every product that's missing the data your downstream operations depend on — default cost, brand, supplier, supplier price, retail pricing, kit/bundle components, images — plus how many of your sales-channel listings are mapped to a SKU.io product. Every count is clickable, so you can jump straight from a gap to the exact products that have it.
This is the data-health facet only. It tells you which products are incomplete; it doesn't publish listings or change any data. Fix the gaps on the product pages the drill-downs open.
Before you begin
- The dashboard is read via the products scope (
scope.rw:products). If you can open the products list, you can open this page. - Have supplier, brand, and pricing-tier records already set up — the filters and metrics reference them.
Open the dashboard
- Go to Reports → Product Data Health.
- The page loads a single metrics call that returns both product-data health and sales-channel-mapping health together, so all panels populate at once.
- Use Refresh to re-run the metrics after you have fixed some products.
Narrow the population with filters
Three filters sit across the top of the page. They apply to every product metric below (channel-mapping counts are catalog-wide and aren't affected).
| Filter | Values | What it does |
|---|---|---|
| Status | Active · Archived · All | Filters by archive state. The page opens on Active; the underlying API defaults to All when no status is passed. |
| Brand | any brand | Limits metrics to products in that brand. |
| Supplier | any supplier | Matches only products whose default supplier (the one flagged is_default) is the chosen supplier. A product where that supplier is present but not the default isn't counted. |
Use Reset Filters to return to the default view. The filters are applied as a subquery under the hood, which lets the dashboard aggregate very large catalogs without hitting database placeholder limits — so filtering a big catalog stays fast.
Read each panel
Work down the page. Each panel answers one question, and each count is a link — click it to open the matching products in the products list (in a new tab) already filtered.
Most panels also carry a per-product-type breakdown behind the headline number — the cost, supplier, pricing, and image counts are each split across Standard, Kit, Bundle, and the other types, so you can tell whether a gap is concentrated in one kind of product.
Product type distribution
Counts of Standard, Bundle, Kit, Matrix, Blemished, and Manufactured products, each with its share of the catalog. Active vs. archived is tracked per type. Click any type to see those products.
Default Cost Health
Splits products three ways by unit_cost:
| Bucket | Meaning |
|---|---|
Has Default Cost (> $0) | A usable fallback cost is set. |
Zero Default Cost (= $0) | Cost was explicitly set to zero. |
| Missing Default Cost (null) | No cost has ever been entered. |
Default cost is only the fallback used to value inventory when there is no purchase/FIFO cost history (opening balances, stock takes, adjustments). See Set a product's accounting to fix it, and FIFO layers & COGS for where real cost comes from.
Brand Health
Has Brand vs. Missing Brand, plus a distribution of products per brand. Fix gaps in Edit a product's details; manage the list in Manage brands.
Supplier Health
Has Supplier vs. Missing Supplier, broken out for Standard and Kit products. Bundles are excluded from the supplier population — they're virtual groupings with no inventory and never carry a supplier. A separate Supplier Count Distribution chart shows how many products have 0, 1, 2, or 3+ suppliers. Fix gaps in Manage a product's suppliers.
Supplier Price Health
Among only the products that have a default supplier, this compares Valid Supplier Price (> 0) against Zero / Missing Supplier Price. The "zero/missing" count is the default-supplier population minus those with a valid price, so products with no default supplier are never counted here.
Kit/Bundle Component Health
Kits without Components and Bundles without Components — parents that have been typed as a kit or bundle but never had components attached. Both should read None. Build them in the Workshop.
Pricing Health
Has Pricing (at least one pricing-tier price > 0) vs. Missing Pricing. Like the supplier metrics, bundles are excluded from this population — a bundle is priced from its components, so counting every bundle as "without pricing" would be misleading. This keeps the pricing cards consistent with the supplier cards. Set prices in Set a product's price.
Sales Channel Mapping
For each connected channel (Shopify, Amazon, BigCommerce, Walmart, WooCommerce, eBay), this shows how many channel listings are Mapped to a SKU.io product versus Unmapped, grouped per integration instance. See what mapping resolves below. Clicking a channel or a count opens that channel's mapping page — actual listing and publishing lives in the Listings guide, not here.
Image Health
- Products with Image / Products Missing Image — whether any image is attached.
- Products with Broken Image — products whose primary image failed the last validation check (a dead remote URL or a missing local file). Until a check has run this reads Not checked and isn't clickable.
The panel shows Last checked (or Never checked). Click Check Image Health to re-validate every image — local files are checked on disk, remote URLs over HTTP. That runs as a background tracked job; watch its progress in the job tray, and the dashboard refreshes when it finishes. The broken-image count links to the dedicated report, where each image reloads live in your browser (false positives clear themselves) and genuinely dead images can be bulk-removed — see Find & fix broken product images.
How channel mapping is counted
A channel listing counts as mapped when it resolves to a SKU.io product through the sales-channel supertype link: the channel product row links to a sales_channel_products record (matched on source_type / source_id), which a product_listing points at with a resolved product. Anything without that resolved product is unmapped.
Two edge cases shape the numbers:
- Archived channel products are excluded — only live listings are counted.
- A channel whose table or view is absent is skipped entirely. If an integration isn't installed, that channel simply doesn't appear — a missing channel isn't the same as "0 mapped".
This is the health snapshot only. To actually map, publish, or edit listings, use the channel's own mapping page (linked from each channel row) — full listing workflows are covered in the Listings guide. For how catalog data flows into channels and reporting, see Products, channels & reporting.
Why each gap matters
The dashboard exists because incomplete product data silently breaks downstream operations:
| Gap | Downstream effect |
|---|---|
| Missing supplier | The product is excluded from demand forecasting and automated purchasing — it never generates a purchase suggestion, so it quietly stocks out. |
| Zero / null unit cost | Inventory with no cost history is valued at $0, producing wrong COGS and inflated margins in reporting. |
| Kit / bundle without components | The parent can't be assembled or fulfilled — orders for it fail at processing time. |
| Missing pricing | The product can't be listed at an accurate price on a sales channel. |
| Unmapped channel listing | Inventory levels don't sync to that listing, so it can oversell. |
Clear the red counts and those failure modes disappear.
Next steps
- Browse, search & filter the products list — where every drill-down lands.
- Manage a product's suppliers · Set a product's price · Set a product's accounting
- Build bundles & kits in the Workshop
- Find & fix broken product images
- Products — overview
Video transcript
The Product Data Health dashboard audits your whole catalog, flagging products missing the data your operations rely on. Filter by status, brand, or supplier, then read down the panels — the product type mix, and how much of your catalog is missing pricing. Each panel splits the catalog into complete and incomplete — products with a default cost versus a zero or missing one, with or without a brand, with or without a supplier. Every count is a link that opens exactly those products, so you can jump straight to a gap and fix it.