Every check we run. What each one can and can't see.
The report is only as credible as its rules. Here is the full declared check set, 102 checks, and the principles that decide when a finding is published, set aside, or abstained.
Every check declares its limits
Threshold, required evidence, what it does not claim, how to verify a fix, likely owner. Written before any store is read.
Below the bar is noise
A defect affecting too few items to justify action is listed in the set-aside register with its count, not inflated into a finding.
Can't see it? We say so.
When required data isn't available, like per-URL search coverage, the check abstains and the report states why. Zero is never reported as clean.
Fired, clean, below bar, abstained or not applicable
Each check ends a run in exactly one state, and every table in the report reads from the same classification.
Open it in one click
A finding that can't name at least one real affected product, collection or URL doesn't get published.
Contradictions block the release
Before rendering, the report is checked for unreconciled numbers, placeholder text, inconsistent denominators, contradictory states and internal jargon.
102 checks across 7 surfaces
Platform-specific checks are excluded from a store's coverage when they don't apply. Checks that require a live browser session are declared, and abstain during passive capture.
Catalogue and stock 22
Size ladders, sold-out colourways, unbuyable products, duplicate SKUs, thin galleries.
CAT-13Products that cannot be boughtCAT-10Broken size ladder on a buyable productCAT-12Cart rejects an available variantCAT-09Sold-out colourway with in-stock siblingsCAT-08Shipping promise that disagrees across surfacesCAT-14Newly published products already sold outCAT-15Traffic goes to the dead duplicate (#06)CAT-16SKU repeated across different productsCAT-17Buyable products with no image or a single imageCAT-18Empty description on products with trafficCAT-19Empty product_type across much of the catalogueCAT-22On-site search autocomplete surfaces sold-out products firstCAT-20Buyable physical variants configured with zero weight (0 grams)CAT-21Buyable products missing image alt text or serving raw camera filenamesSYN-27Category dead zone: single product_type >=60% sold outSYN-10Numbered duplicate handles (-1, -2) published alongside the base product handleJOR-02Colour family entirely deadJOR-05Status tag contradicts the variantsJOR-06Orphan tag: written on many products, reader unknownTAM-20Demand landing on families that are entirely sold outWOO-13Depleted variation availabilityWooCommerceWOO-22Sold-out products visible in category gridWooCommercePromotions and price 15
Zero-price variants, inverted or extreme compare-at anchors, promo tags on dead stock.
PRM-09Buyable variant priced at zeroPRM-10Price spread that is not a size ladderPRM-08Compare-at anchor below the selling pricePRM-04Promotion that excludes most of the cataloguePRM-07Promotion collection that is mostly unbuyablePRM-11Extreme compare-at anchor (>5x selling price)PRM-12Sale or BFCM tags on sold-out productsPRM-13Structured data price differs from catalogue pricePRM-14Outdated seasonal promotion copy on the homepage bannerSYN-26Deep markdowns (>=50% off) concentrated on unbuyable listingsSYN-28Pre-peak discount depth already at >=40% median across discounted variantsSYN-11Over 30% of the published catalogue carries an active compare-at strike-through priceJOR-07Same page, two visitors, different answersneeds live browserWOO-14Inconsistent public sale priceWooCommerceWOO-15Sale price exceeds regular priceWooCommerceURL and indexing 19
Dead URLs still taking demand, redirect chains, canonicals, sitemap gaps.
SEO-01URLs that answer 404 to real trafficSEO-02Retired handles still servingSEO-03URLs that reach the page through a redirect chainSEO-08Incomplete structured dataSEO-06Canonical pointing at another product of different typeSEO-06GCanonical grouping on the same product typeSEO-09No Black Friday page carrying organic visibilitySEO-04Commercial URLs the sitemap never submitsSEO-05One product reached through several URLsSEO-07URLs with traffic blocked from indexingSEO-10Sold-out pages holding referring domains (#07)SEO-11Renamed product: page title no longer matches top search querySEO-12Google ignores the declared canonical on pages with trafficSEO-13Schema URL differs from canonical URLSEO-15Review app installed on page, but AggregateRating is missing from Product JSON-LDSEO-16robots.txt blocks commercial paths or omits Sitemap declarationSYN-29Many-to-one canonical collision collapsing distinct product URLs into one targetJOR-03Size labels transformed between catalogue and pageneeds live browserTAM-16Last year's seasonal URLs still taking trafficCheckout and performance 19
Cart persistence, add-to-cart rejections, page weight, checkout friction.
CHK-09Page weight and render-blocking scriptsCHK-07Sold out product with no way back to something buyableCHK-10Single-unit shallow stock trap on top products (fails at qty 2)CHK-11Real-user mobile Core Web Vitals failing Google CrUX p75 thresholdsJOR-04Waitlist offered on a variant that cannot be boughtneeds live browserGIT-01Exposed .git directory on the originENV-01Exposed .env file with key=value secretsSRC-01Source maps published to the public bundleWOO-01WordPress / WooCommerce version disclosed via REST APIWooCommerceWOO-02WordPress user enumeration via the REST APIWooCommerceWOO-03XML-RPC endpoint enabledWooCommerceWOO-04Login page exposed without visible protectionWooCommerceWOO-05Plugin inventory enumerable from the storefrontWooCommerceMAG-01Magento version disclosedMAG-02Magento admin panel reachable from the internetODOO-01Odoo database manager reachableODOO-02Odoo login exposed on the public originDSN-01Storefront runs a stock theme without a custom design systemDSN-02Agency credit detected on a custom storefrontCollections 3
Empty published collections and sold-out products above the fold.
COL-01Published collections with nothing in themCOL-02Sampled collection surfaces sold-out products in the top 12 slotsWOO-21Verified empty product categoryWooCommercePolicies 2
Holiday cutoffs and return windows your customers will ask about.
POL-01Shipping policy with no peak order datePOL-02Returns policy with no holiday windowCross-surface 22
Signals that only show up when catalogue, collections, DNS and search are read together.
COM-02Peak themed URLs competing with each otherCOM-03High demand pages with thin copyCOM-04Buyable products missing from the sitemapCOM-07No usable DMARC policy on the sending domainCOM-05Pages noindexed and canonicalised elsewhere at onceCOM-08Discount queries landing on a page with no offerCOM-13Schema declares InStock on a sold-out productCOM-06Colour sold out on the colour the query asks forCOM-09Canonical pointed at a URL that does not resolveCOM-10Sitemap submitting URLs that redirect or 404COM-11Sellable product pages that are noindexedCOM-12Certificate expiring inside the peak windowCOM-14Sold-out pages with no recommendationsCOM-15Sold-out pages recommending only sold-out productsCOM-20Peak or promo URLs in sweep returning 404 or blockedCOM-21Archived Black Friday URLs from Wayback returning 404 todayCOM-23Homepage navigation links to empty or >50% sold-out collections (SYN-16)COM-22SPF record missing or exceeding the 10-lookup DNS ceiling (RFC 7208 permerror)JOR-01Product in the feed that the storefront does not serveneeds live browserTAM-17Most of the search volume is the store's own nameWOO-07Public purchase-state discrepancyWooCommerceWOO-25Repeated public price discrepancyWooCommerce