Black Friday · Nov 27 · 27 days away · Cyber Monday · Nov 30
Methodology

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.

EVIDENCE CONTRACT

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.

MATERIALITY BAR

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.

ABSTENTION

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.

ONE TERMINAL STATE

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.

NAMED OBJECTS

Open it in one click

A finding that can't name at least one real affected product, collection or URL doesn't get published.

PRE-RENDER LINTER

Contradictions block the release

Before rendering, the report is checked for unreconciled numbers, placeholder text, inconsistent denominators, contradictory states and internal jargon.

The declared check set

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 bought
CAT-10Broken size ladder on a buyable product
CAT-12Cart rejects an available variant
CAT-09Sold-out colourway with in-stock siblings
CAT-08Shipping promise that disagrees across surfaces
CAT-14Newly published products already sold out
CAT-15Traffic goes to the dead duplicate (#06)
CAT-16SKU repeated across different products
CAT-17Buyable products with no image or a single image
CAT-18Empty description on products with traffic
CAT-19Empty product_type across much of the catalogue
CAT-22On-site search autocomplete surfaces sold-out products first
CAT-20Buyable physical variants configured with zero weight (0 grams)
CAT-21Buyable products missing image alt text or serving raw camera filenames
SYN-27Category dead zone: single product_type >=60% sold out
SYN-10Numbered duplicate handles (-1, -2) published alongside the base product handle
JOR-02Colour family entirely dead
JOR-05Status tag contradicts the variants
JOR-06Orphan tag: written on many products, reader unknown
TAM-20Demand landing on families that are entirely sold out
WOO-13Depleted variation availabilityWooCommerce
WOO-22Sold-out products visible in category gridWooCommerce

Promotions and price 15

Zero-price variants, inverted or extreme compare-at anchors, promo tags on dead stock.

PRM-09Buyable variant priced at zero
PRM-10Price spread that is not a size ladder
PRM-08Compare-at anchor below the selling price
PRM-04Promotion that excludes most of the catalogue
PRM-07Promotion collection that is mostly unbuyable
PRM-11Extreme compare-at anchor (>5x selling price)
PRM-12Sale or BFCM tags on sold-out products
PRM-13Structured data price differs from catalogue price
PRM-14Outdated seasonal promotion copy on the homepage banner
SYN-26Deep markdowns (>=50% off) concentrated on unbuyable listings
SYN-28Pre-peak discount depth already at >=40% median across discounted variants
SYN-11Over 30% of the published catalogue carries an active compare-at strike-through price
JOR-07Same page, two visitors, different answersneeds live browser
WOO-14Inconsistent public sale priceWooCommerce
WOO-15Sale price exceeds regular priceWooCommerce

URL and indexing 19

Dead URLs still taking demand, redirect chains, canonicals, sitemap gaps.

SEO-01URLs that answer 404 to real traffic
SEO-02Retired handles still serving
SEO-03URLs that reach the page through a redirect chain
SEO-08Incomplete structured data
SEO-06Canonical pointing at another product of different type
SEO-06GCanonical grouping on the same product type
SEO-09No Black Friday page carrying organic visibility
SEO-04Commercial URLs the sitemap never submits
SEO-05One product reached through several URLs
SEO-07URLs with traffic blocked from indexing
SEO-10Sold-out pages holding referring domains (#07)
SEO-11Renamed product: page title no longer matches top search query
SEO-12Google ignores the declared canonical on pages with traffic
SEO-13Schema URL differs from canonical URL
SEO-15Review app installed on page, but AggregateRating is missing from Product JSON-LD
SEO-16robots.txt blocks commercial paths or omits Sitemap declaration
SYN-29Many-to-one canonical collision collapsing distinct product URLs into one target
JOR-03Size labels transformed between catalogue and pageneeds live browser
TAM-16Last year's seasonal URLs still taking traffic

Checkout and performance 19

Cart persistence, add-to-cart rejections, page weight, checkout friction.

CHK-09Page weight and render-blocking scripts
CHK-07Sold out product with no way back to something buyable
CHK-10Single-unit shallow stock trap on top products (fails at qty 2)
CHK-11Real-user mobile Core Web Vitals failing Google CrUX p75 thresholds
JOR-04Waitlist offered on a variant that cannot be boughtneeds live browser
GIT-01Exposed .git directory on the origin
ENV-01Exposed .env file with key=value secrets
SRC-01Source maps published to the public bundle
WOO-01WordPress / WooCommerce version disclosed via REST APIWooCommerce
WOO-02WordPress user enumeration via the REST APIWooCommerce
WOO-03XML-RPC endpoint enabledWooCommerce
WOO-04Login page exposed without visible protectionWooCommerce
WOO-05Plugin inventory enumerable from the storefrontWooCommerce
MAG-01Magento version disclosed
MAG-02Magento admin panel reachable from the internet
ODOO-01Odoo database manager reachable
ODOO-02Odoo login exposed on the public origin
DSN-01Storefront runs a stock theme without a custom design system
DSN-02Agency credit detected on a custom storefront

Collections 3

Empty published collections and sold-out products above the fold.

COL-01Published collections with nothing in them
COL-02Sampled collection surfaces sold-out products in the top 12 slots
WOO-21Verified empty product categoryWooCommerce

Policies 2

Holiday cutoffs and return windows your customers will ask about.

POL-01Shipping policy with no peak order date
POL-02Returns policy with no holiday window

Cross-surface 22

Signals that only show up when catalogue, collections, DNS and search are read together.

COM-02Peak themed URLs competing with each other
COM-03High demand pages with thin copy
COM-04Buyable products missing from the sitemap
COM-07No usable DMARC policy on the sending domain
COM-05Pages noindexed and canonicalised elsewhere at once
COM-08Discount queries landing on a page with no offer
COM-13Schema declares InStock on a sold-out product
COM-06Colour sold out on the colour the query asks for
COM-09Canonical pointed at a URL that does not resolve
COM-10Sitemap submitting URLs that redirect or 404
COM-11Sellable product pages that are noindexed
COM-12Certificate expiring inside the peak window
COM-14Sold-out pages with no recommendations
COM-15Sold-out pages recommending only sold-out products
COM-20Peak or promo URLs in sweep returning 404 or blocked
COM-21Archived Black Friday URLs from Wayback returning 404 today
COM-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 browser
TAM-17Most of the search volume is the store's own name
WOO-07Public purchase-state discrepancyWooCommerce
WOO-25Repeated public price discrepancyWooCommerce

See the method applied to a real store.

Open the sample report →Get your report · $995