Read the product-schema breakdown →

Agency retainer vs a US$59 fixed report →

9,510 live storefronts, measured. Most have no product markup.

We fetched the homepage of every store in this sample on 20 October 2026, plus the public product feed where one was exposed. 1,838 stores returned no product feed and are counted as 0 products, not skipped. FACT
9,510storefronts measured
3.6%product markup
96.9%canonical tag
92.4%open graph tags

n = 9,510 live storefronts out of 10,514 attempted · 8,226 run Shopify · 1,284 other platforms, included in every rate below

CheckPass95% CI
Product structured data3.6%3.2–4.0%read
Offer structured data3.9%3.5–4.3%—
FAQ structured data3.2%2.9–3.6%—
Breadcrumb structured data16.0%15.3–16.7%—
Open Graph tags92.4%91.8–92.9%—
Canonical tag96.9%96.6–97.3%—
Some image alt text missing81.1%80.3–81.9%read
Not exactly one H136.9%36.0–37.9%—

Counts are literal rows. Rounding is one decimal place, so intervals may differ by 0.1 from a theoretical normal approximation.


What we measured, page by page

Product structured data

Only 3.6% of 9,510 storefronts carry the markup that tells Google a price.

Klaviyo stores

Stores running Klaviyo are 33% less likely to have product markup (2.8% vs 4.2%).

Image alt text

89.2% of storefronts had at least one homepage image with no alt text.

Price bands

Cheaper stores have better markup: 4.3% under $50 vs 3.3% at $150 and over.


How we measured it

Every store was fetched server-side: the homepage, and the public product feed where one existed. The HTML was parsed for structured data, canonical tags, Open Graph tags, headings and image alt attributes. No model scoring, no weighting, no estimates.

Why this is defensible: the raw rows are available on request (support@seoscanaudit.com), and individual stores are never named.

What this does not tell you

We measured homepages. A store can carry Product markup on its product pages and still fail here, so read every number as "not visible from the homepage", not "the developer forgot". Themes, apps and regional CDNs change what a single fetch sees.

Why this matters

The easy tags are already solved (canonical at 96.9%), while the one block that carries price and availability sits at 3.6%. Our reading is that themes and apps ship the generic tags and nobody owns the commercial one — that is an interpretation, not a measured cause. INFERENCE


Run the free scan on your store See a 7-page sample report