Spots

We checked 100 WooCommerce stores for AI-shopping readiness

AI shopping agents (ChatGPT's shopping answers, Perplexity, Google's AI results) decide which products to show by reading what a store publishes. We make a free plugin that checks this from inside WordPress, and we wanted to know how common each problem really is. So on 27 September 2026 we looked at 100 WooCommerce stores from the outside, using only public signals, and counted.

The short version: almost nobody is blocking AI

The short version: almost nobody is blocking AI crawlers, but almost nobody is giving them what they need to identify a product. Only 4 of the 76 product pages we could check carried a GTIN or an MPN in their structured data. Only 12 of 76 (16%) named a brand. Where the stores came from, and why that matters

We took the stores from the public WooCommerce

We took the stores from the public WooCommerce showcase and its filter pages: stores that chose to be featured by WooCommerce. That makes this a sample of well-kept, established stores, not of WooCommerce as a whole. If anything, a random sample of the millions of WooCommerce sites would look worse. We don't name any store, and we don't publish per-store results. How we checked (and what we didn't do)

A small script made at most five requests

A small script made at most five requests per store, one request per second overall, identifying itself as LeyMishCensus/1.0 with a link to our method page. It obeyed each store's robots.txt for its own name. It never pretended to be a browser or an AI crawler. For each store it read:

/robots.txt: the rules for nine AI crawler names

/robots.txt: the rules for nine AI crawler names (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended). The home page: to spot "coming soon" or maintenance mode. WooCommerce's public Store API (/wp-json/wc/store/v1/products): does it answer with valid JSON?

One product page: the Product structured data (JSON-LD)

One product page: the Product structured data (JSON-LD) that search engines and AI tools read, and whether it includes identifiers (GTIN, MPN, SKU) and a brand. /llms.txt: does one exist?

Because we didn't impersonate crawlers, we can't see

Because we didn't impersonate crawlers, we can't see firewall or CDN blocks that only trigger for real bot traffic. That's the one thing our plugin checks from inside the store that a polite outside census can't. 1. Blocking AI crawlers is rare, at least in robots.txt

Only two stores out of 93 with a

Only two stores out of 93 with a robots.txt blocked any AI crawler, and each blocked just one (one GPTBot, one PerplexityBot). None blocked the crawlers OpenAI uses for search and shopping. The fear that stores are "invisible to ChatGPT because of robots.txt" doesn't match what we saw here. The blocks we can't see from outside, CDN and security-plugin rules that answer bots with 403 or 429, are a different matter: we've seen those on real stores (including our own case study, where a host's CDN answered GPTBot with HTTP 429). 2. Identifiers are the big gap

A GTIN is the number under a barcode

A GTIN is the number under a barcode. An MPN is the manufacturer's part number. They're how a shopping agent works out that your listing and a shopper's request are the same product. In the structured data we read: 72 of 76 product pages had neither a GTIN nor an MPN.

21 of 76 had no Product structured data

21 of 76 had no Product structured data in the page at all (a theme may have removed WooCommerce's, or it's added later by JavaScript, which many crawlers don't run). SKUs were common (64%), but a SKU is the store's own code: it doesn't identify the product anywhere else.

News

We checked 100 WooCommerce stores for AI-shopping readiness

AI shopping agents (ChatGPT's shopping answers, Perplexity, Google's AI results) decide which products to show by reading what a store publishes.

@spots #dev
Source: Dev.to
See more like this