← Blog

The State of AI Commerce Readiness 2026: we scanned 120 stores

Prefero

We scanned 120 live ecommerce stores — well-known DTC brands, mid-market retailers, and a long tail of smaller shops across 21 categories — to answer one question: if an AI shopping agent went looking for these stores' products today, what would it actually get?

The short version: 4 of the 120 produced a product record complete enough for an agent to compare with confidence. Not 4 percent of some subset. Four stores.

The longer version is more interesting than the headline, because the failures are not distributed the way you would expect. Readiness in this sample was almost entirely a function of which platform the store was built on, and merchant effort barely showed up in the data at all.

Method

Each store went through the same pipeline: fetch robots.txt and check it against the published AI crawler user-agents, fetch the sitemap and count product URLs, sample product pages and extract structured data without executing JavaScript, and probe for llms.txt and agents.md. Scores are 0–100 per dimension. Scans ran on 31 May 2026.

Two things this does not measure. It does not run a headless browser, so anything rendered client-side is invisible — which is the point, because it is invisible to a retrieval crawler too. And it is a snapshot: theme updates and app installs move these numbers.

Finding 1 — 40% of stores cannot be enumerated at all

Before parsing anything, an agent has to find your products. Two failure modes stop it:

Enumeration failureStoresShare
No sitemap resolved22 / 12018%
Sitemap resolved but listed zero product URLs26 / 12022%
Cannot enumerate the catalogue48 / 12040%

The second row is the one worth staring at. Those 26 stores publish a sitemap. It works. It lists collections, blog posts, landing pages — and no products. From an agent's perspective this is a store with nothing to sell.

Nothing downstream matters for these 48. You can have immaculate JSON-LD on every product page; if the agent never learns the URLs exist, it never fetches them.

Finding 2 — only 36% expose machine-readable product data

Of the 120 stores, 43 returned parseable Product structured data on the sampled pages. The other 77 returned a page an agent reads as having no product on it.

The split by platform is the finding:

PlatformStoresWith product schemaShare
Shopify633759%
Salesforce Commerce Cloud8338%
Custom builds4137%
BigCommerce / Squarespace / Magento / unknown800%
All1204336%

Seven percent of custom builds. These are not neglected stores — the custom-build cohort skews toward larger brands with real engineering teams, polished storefronts and fast pages. They are beautiful to a human and blank to a machine.

Finding 3 — crawl access is bimodal, and the middle is empty

Crawlability scores did not form a distribution. They formed two piles:

Crawlability scoreStores
10052
807
603
4058

Fifty-two stores at 100. Fifty-eight at 40. Ten stores in between, total.

The reason is that this dimension is mostly composed of binary signals that arrive together or not at all. 52 stores served both llms.txt and agents.md; 58 served neither. Almost nobody had one without the other.

That pattern is a signature of platform defaults rather than deliberate configuration — and the next finding confirms it.

Finding 4 — llms.txt adoption is a Shopify statistic, not a merchant trend

Fifty-nine of 120 stores served an llms.txt. Read alone, that number suggests roughly half the market has thought about AI crawlers. It has not.

SegmentServing llms.txtShare
Shopify51 / 6381%
Everything else8 / 5714%
All stores59 / 12049%

Eighty-one percent versus fourteen. The file is arriving because a platform generates it, not because merchants decided AI buyers matter. Practically: on Shopify, llms.txt is table stakes and differentiates nothing. Everywhere else it is a genuinely cheap signal almost nobody has.

Finding 5 — having schema is not the same as having a usable record

This is the finding that changed how we think about the score.

Among the 43 stores that did expose product schema, the schema validity score was high — median 86 out of 100. The required fields were there: name, an offer, a price, a currency.

Field completeness — whether the record carries the fields an agent actually weighs when comparing — had a median of 58, and ranged from 21 to 75.

CohortStoresMedian completeness
Stores with product schema4358 / 100
Of those, completeness ≥ 704
Of all 120 stores43%

Four stores out of 120 cleared a completeness threshold of 70. The missing fields are consistently the same ones: brand, a product identifier (gtin, mpn, sku), aggregateRating, hasMerchantReturnPolicy, shippingDetails.

Those are precisely the fields that decide a close comparison. An agent choosing between two products that both meet the shopper's constraints breaks the tie on trust and risk — who made this, can I confirm it is the same product I saw elsewhere, what happens if I send it back. A record with a price and nothing else survives the filter and then loses every comparison.

What this adds up to

Stack the funnel and the picture is stark:

StageStores remainingShare of 120
Catalogue can be enumerated7260%
Product data is machine-readable4336%
Record is complete enough to compare confidently43%

The overall readiness distribution across the sample: 25th percentile 48, median 60, 75th percentile 73, mean 59.

A median of 60 is not a story about a market failing. It is a story about a market that has not been asked this question before. Every one of these stores works fine for the buyer who arrives with a browser. The gap opens only when the buyer is a machine that never renders the page.

What we would fix first

Strictly in this order, because each step is worthless without the one above it:

  1. Publish a product sitemap that actually contains product URLs. Forty percent of the sample fails here, and it is the cheapest fix in the list.
  2. Server-render Product JSON-LD. If your theme injects it from JavaScript, treat it as absent. Sixty-four percent of the sample fails here.
  3. Make price, priceCurrency and availability reflect live state. A hardcoded InStock is worse than a missing field — recommending sold-out products gets a source discounted.
  4. Add the completeness fields: brand, an identifier, aggregateRating, hasMerchantReturnPolicy, shippingDetails. This is the step 96% of the sample has not taken, and it is where close comparisons are won.
  5. Allow the retrieval crawlers. OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, Claude-User are the ones that surface a store during a live query — distinct from the training crawlers, and the two are frequently blocked together by accident.

The honest caveat

None of this is an argument that agentic commerce is about to dominate ecommerce revenue. Agent-initiated checkout is early, the standards are unsettled, and some of the first implementations have already been reworked after weak conversion.

It is an argument about asymmetry. The fixes above cost days, not quarters, and every one of them also improves rich results, shopping feeds and comparison-site accuracy — channels you already measure. The cost of skipping them is invisible: there is no impression count for a candidate set you were excluded from, and no referrer for a comparison you lost inside a model's context window.

Four out of 120. Whatever the growth curve turns out to be, that is not a crowded field to enter.


Want your store's numbers instead of the sample's? The free scan runs the same pipeline and returns your score, your percentile against this 120-store benchmark, and the specific fields you are missing. More on what the score means in AI commerce readiness and how AI shopping agents choose products.