No DMARC record
19%
of 963 stores publish no DMARC record at all, so anyone can send email that claims to come from them.
95% interval: 17% to 22%
Research
A random sample of Shopify and WooCommerce stores, read the way a crawler reads them, finds the same avoidable failures again and again.
963 stores, 19,127 pages, one crawl. These are the highest shares of the 963 stores audited.
Email authentication decides whether order and newsletter mail reaches an inbox. DMARC tells a receiving mail server what to do when someone else sends as your domain.
19%
of 963 stores publish no DMARC record at all, so anyone can send email that claims to come from them.
95% interval: 17% to 22%
75%
of 963 stores do not enforce DMARC (no record, or a monitoring-only p=none policy).
95% interval: 72% to 77%
12%
of 963 stores have no SPF record, so their order and newsletter email is more likely to land in spam.
95% interval: 9.9% to 14%
How the store treats crawlers that feed AI assistants, and whether it publishes a machine-readable summary for them.
2.9%
of 963 stores block at least one AI crawler in robots.txt.
95% interval: 2.0% to 4.2%
1.7%
of 963 stores block OpenAI's GPTBot.
95% interval: 1.0% to 2.7%
79%
of 963 stores publish an llms.txt file for AI assistants.
95% interval: 77% to 82%
What a crawler can learn about the products from the pages and from the store's public catalogue.
8.0%
of 963 stores serve at least one page with a JSON-LD block that is not valid JSON (for example a trailing comma or a raw line break in a text value).
95% interval: 6.4% to 9.9%
13%
of 928 stores list at least one product with no valid price in its public catalogue.
95% interval: 11% to 15%
46%
of 928 stores have at least one product that is fully out of stock in every variant.
95% interval: 43% to 49%
Signals that waste crawl effort and split indexation across a site.
6.5%
of 963 stores have dead internal links among the links checked.
95% interval: 5.1% to 8.3%
8.3%
of 963 stores serve a page that answers 200 but reads like "not found" (a soft 404).
95% interval: 6.7% to 10%
6.1%
of 963 stores list a noindex page in their sitemap, sending Google contradictory signals.
95% interval: 4.8% to 7.8%
Page weight and image delivery, measured on the pages the audit read.
45%
of 963 stores serve at least one image over 250 KB on the pages checked.
95% interval: 41% to 48%
41%
of 963 stores serve images only in legacy formats, with no WebP or AVIF.
95% interval: 38% to 44%
48%
of 963 stores have images with no alt text on the pages checked.
95% interval: 45% to 51%
The policy pages shoppers and search systems look for, and whether they are linked from the store.
36%
of 948 stores link no shipping policy page that we could find.
95% interval: 33% to 39%
31%
of 948 stores link no returns or refund policy page that we could find.
95% interval: 28% to 34%
The same checks, side by side. The two groups are not the same size, so a gap between them is a lead to investigate, not a verdict on the platform.
Three gaps worth a closer look, then every check in one place.
| Check | Shopify | WooCommerce | Difference |
|---|---|---|---|
| Email trust | |||
| No DMARC record | 18%n = 713 | 23%n = 250 | Woo +5.1 pp |
| DMARC not enforced | 74%n = 713 | 75%n = 250 | Woo +1.0 pp |
| No SPF record | 13%n = 713 | 8.0%n = 250 | Shopify +5.2 pp |
| AI readiness | |||
| An AI crawler is blocked | 1.3%n = 713 | 7.6%n = 250 | Woo +6.3 pp |
| GPTBot is blocked | 0.7%n = 713 | 4.4%n = 250 | Woo +3.7 pp |
| llms.txt published | 99%n = 713 | 24%n = 250 | Shopify +74 pp |
| Product data | |||
| Invalid JSON-LD | 11%n = 713 | 0.8%n = 250 | Shopify +9.7 pp |
| No valid price | 12%n = 702 | 16%n = 226 | Woo +3.7 pp |
| Fully out of stock | 56%n = 702 | 14%n = 226 | Shopify +42 pp |
| Crawl health | |||
| Dead internal links | 6.0%n = 713 | 8.0%n = 250 | Woo +2.0 pp |
| Soft 404 | 5.2%n = 713 | 17%n = 250 | Woo +12 pp |
| Noindex page in the sitemap | 1.8%n = 713 | 18%n = 250 | Woo +17 pp |
| Speed and images | |||
| A heavy image | 50%n = 713 | 29%n = 250 | Shopify +21 pp |
| Legacy image formats only | 39%n = 713 | 48%n = 250 | Woo +9.2 pp |
| Images with no alt text | 49%n = 713 | 46%n = 250 | Shopify +2.3 pp |
| Trust pages | |||
| No shipping policy | 26%n = 713 | 65%n = 235 | Woo +38 pp |
| No returns policy | 22%n = 713 | 56%n = 235 | Woo +34 pp |
Every store went through the same 20-page audit, so the counts compare like with like. Errors and warnings per store, at the median: 43 for all 963 stores, 40 across 713 Shopify stores and 63 across 250 WooCommerce stores.
Run the same audit on your store and compare its count against this sample.
We took a random sample of 1000 stores from the Tranco L5PZ4 (created 2026-09-25) list (seed 2026), a public ranking of the most visited domains, and kept the ones that sell products on Shopify or WooCommerce. From 22,389 domains probed, 1000 entered the sample. 963 were audited, 24 were blocked and 13 were unreachable. The platform split was 713 Shopify stores and 250 WooCommerce stores.
Platform was detected by calling each store's public product API and parsing the response, not by matching a fingerprint in the HTML. Detection is limited to Shopify and WooCommerce; a store on another platform is not counted.
Each audited store was read with the same 20-page audit the site runs: a sample of public pages, fetched from outside the network that serves them, the way a crawler sees them. Across the sample the audit read 19,127 pages. The audit honours robots.txt: 538 requests were skipped because robots.txt disallowed them. Failed fetches were retried before a page was treated as unavailable.
A blocked store is one whose home page refused an outside crawler, for example with a bot filter, so nothing further could be read. This happened to 24 stores (4 Shopify, 20 WooCommerce). An unreachable store gave no answer at all. Neither is averaged in as a store with one finding. The crawl started on 2026-09-26.
The limits: this is one crawl on one date, so it is a snapshot and not a trend. It is an outside view, which is what a crawler gets, and it can differ from what the owner sees on a signed-in session. It reads a sample of pages per store, not every page a store has. Platform detection covers only Shopify and WooCommerce. The intervals are 95 percent, so overlapping intervals should not be read as a difference.
What we corrected before publishing: running the study exposed errors in our own audit, and we fixed them before counting anything (platform detection fooled by HTML error pages, stores that redirect to www flagged for their canonicals, files and sign-in pages sampled as if they were pages, footer links past our read limit, policy pages missed in languages other than English, sitemap entries past the first 400 ignored). Two measures are left out of this edition because a spot check showed they overstated the problem: product pages without Product structured data (the markup often sits past the part of a large page we read) and content that appears only after JavaScript runs (flagged pages usually had no price at all rather than a hidden one). The out-of-stock figure compares platforms only loosely: WooCommerce stores can hide sold-out products from their public catalogue, so their share is likely understated.
The sample method and seed are described above. The full domain list is below; the sampling, crawl and aggregation scripts are available to researchers on request.
A closer look at the measures and the sample behind them. The report presents the findings; full research files are available on request.
Each figure has its own sample size and 95% interval in the report.
1,000 confirmed stores. The directory shows domain and platform only.
The domains behind the sample, with their detected platform. You can visit each store; the study does not publish findings for individual stores.
Scroll to browse the register. Links open in a new tab without sending a referrer. No store-level results are published.
Open the directory to browse.
If you manage a store in this list, send its domain and an email we can use to verify your request. We review requests by hand.
Shipwork. The State of Ecommerce SEO 2026. 2026. https://shipwork.io/research/state-of-ecommerce-seo-2026
Published figures may be reused under CC BY 4.0 with credit to Shipwork and a link to the study. More numbers from the same sample are on the statistics page.