ShipworkSite inspection
Checks

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?Meta tag builderWhat should my title and share tags say?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?Page DoctorWhy is this page not doing well?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

Research

The State of Ecommerce SEO 2026

A random sample of Shopify and WooCommerce stores, read the way a crawler reads them, finds the same avoidable failures again and again.

75%do not enforce DMARCof 963 stores checked
48%have images with no alt textof 963 stores checked
46%have a fully out-of-stock productof 928 stores checked

963 stores, 19,127 pages, one crawl. These are the highest shares of the 963 stores audited.

Email trust

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.

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%

Check your store

Embed this chart
  • All storesn = 96319%
  • Shopifyn = 71318%
  • WooCommercen = 25023%

DMARC not enforced

75%

of 963 stores do not enforce DMARC (no record, or a monitoring-only p=none policy).

95% interval: 72% to 77%

Check your store

Embed this chart
  • All storesn = 96375%
  • Shopifyn = 71374%
  • WooCommercen = 25075%

No SPF record

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%

Check your store

Embed this chart
  • All storesn = 96312%
  • Shopifyn = 71313%
  • WooCommercen = 2508.0%

AI readiness

How the store treats crawlers that feed AI assistants, and whether it publishes a machine-readable summary for them.

An AI crawler is blocked

2.9%

of 963 stores block at least one AI crawler in robots.txt.

95% interval: 2.0% to 4.2%

Check your store

Embed this chart
  • All storesn = 9632.9%
  • Shopifyn = 7131.3%
  • WooCommercen = 2507.6%

GPTBot is blocked

1.7%

of 963 stores block OpenAI's GPTBot.

95% interval: 1.0% to 2.7%

Check your store

Embed this chart
  • All storesn = 9631.7%
  • Shopifyn = 7130.7%
  • WooCommercen = 2504.4%

llms.txt published

79%

of 963 stores publish an llms.txt file for AI assistants.

95% interval: 77% to 82%

Check your store

Embed this chart
  • All storesn = 96379%
  • Shopifyn = 71399%
  • WooCommercen = 25024%

Product data

What a crawler can learn about the products from the pages and from the store's public catalogue.

Invalid JSON-LD

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%

Check your store

Embed this chart
  • All storesn = 9638.0%
  • Shopifyn = 71311%
  • WooCommercen = 2500.8%

No valid price

13%

of 928 stores list at least one product with no valid price in its public catalogue.

95% interval: 11% to 15%

Check your store

Embed this chart
  • All storesn = 92813%
  • Shopifyn = 70212%
  • WooCommercen = 22616%

Fully out of stock

46%

of 928 stores have at least one product that is fully out of stock in every variant.

95% interval: 43% to 49%

Check your store

Embed this chart
  • All storesn = 92846%
  • Shopifyn = 70256%
  • WooCommercen = 22614%

Crawl health

Signals that waste crawl effort and split indexation across a site.

Soft 404

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%

Check your store

Embed this chart
  • All storesn = 9638.3%
  • Shopifyn = 7135.2%
  • WooCommercen = 25017%

Noindex page in the sitemap

6.1%

of 963 stores list a noindex page in their sitemap, sending Google contradictory signals.

95% interval: 4.8% to 7.8%

Check your store

Embed this chart
  • All storesn = 9636.1%
  • Shopifyn = 7131.8%
  • WooCommercen = 25018%

Speed and images

Page weight and image delivery, measured on the pages the audit read.

A heavy image

45%

of 963 stores serve at least one image over 250 KB on the pages checked.

95% interval: 41% to 48%

Check your store

Embed this chart
  • All storesn = 96345%
  • Shopifyn = 71350%
  • WooCommercen = 25029%

Legacy image formats only

41%

of 963 stores serve images only in legacy formats, with no WebP or AVIF.

95% interval: 38% to 44%

Check your store

Embed this chart
  • All storesn = 96341%
  • Shopifyn = 71339%
  • WooCommercen = 25048%

Images with no alt text

48%

of 963 stores have images with no alt text on the pages checked.

95% interval: 45% to 51%

Check your store

Embed this chart
  • All storesn = 96348%
  • Shopifyn = 71349%
  • WooCommercen = 25046%

Trust pages

The policy pages shoppers and search systems look for, and whether they are linked from the store.

No shipping policy

36%

of 948 stores link no shipping policy page that we could find.

95% interval: 33% to 39%

Check your store

Embed this chart
  • All storesn = 94836%
  • Shopifyn = 71326%
  • WooCommercen = 23565%

No returns policy

31%

of 948 stores link no returns or refund policy page that we could find.

95% interval: 28% to 34%

Check your store

Embed this chart
  • All storesn = 94831%
  • Shopifyn = 71322%
  • WooCommercen = 23556%

Shopify vs WooCommerce

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.

The platform split

Same audit. Different patterns.

Three gaps worth a closer look, then every check in one place.

Shopify · 713WooCommerce · 250
Share of eligible stores with each finding. Counts vary by check. The gap is the absolute difference in percentage points, not a test of statistical significance.
CheckShopifyWooCommerceDifference
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

Email trust

No DMARC record
Shopify n = 71318%
WooCommerce n = 25023%
WooCommerce +5.1 percentage points
No SPF record
Shopify n = 71313%
WooCommerce n = 2508.0%
Shopify +5.2 percentage points

AI readiness

GPTBot is blocked
Shopify n = 7130.7%
WooCommerce n = 2504.4%
WooCommerce +3.7 percentage points

Product data

Invalid JSON-LD
Shopify n = 71311%
WooCommerce n = 2500.8%
Shopify +9.7 percentage points
No valid price
Shopify n = 70212%
WooCommerce n = 22616%
WooCommerce +3.7 percentage points

Crawl health

Soft 404
Shopify n = 7135.2%
WooCommerce n = 25017%
WooCommerce +12 percentage points

Speed and images

A heavy image
Shopify n = 71350%
WooCommerce n = 25029%
Shopify +21 percentage points

Trust pages

No returns policy
Shopify n = 71322%
WooCommerce n = 23556%
WooCommerce +34 percentage points

Benchmark your store

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.

Benchmark your store

Methodology

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.

Inside the study

A closer look at the measures and the sample behind them. The report presents the findings; full research files are available on request.

01 / Aggregate measures

What we measured

Each figure has its own sample size and 95% interval in the report.

DMARC not enforced75%
A heavy image45%
Images with no alt text48%
Explore the platform comparison
02 / Sample register

Who was counted

1,000 confirmed stores. The directory shows domain and platform only.

20percent.co.zaShopify
360cookware.comShopify
3dprintcart.comWooCommerce
View the clickable preview

The stores sampled

The domains behind the sample, with their detected platform. You can visit each store; the study does not publish findings for individual stores.

Sample register1,000 stores
Domain Platform
Browse all 1,000 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.

    Need your store removed?

    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.

    How to cite

    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.

    Top