Benchmarks / All stores / v2.0.3
Agentic commerce benchmark across all stores v2.0.3
This is version v2.0.3, issued 5 October 2026. The current version is v4.0.0.
An AI shopping agent reached the payment step on 32% of the 249 stores Ottom measured at every stage in the 90 days to 5 October 2026, in every category and including stores whose category could not be determined, and the median agentic readiness score was 57 out of 100. Cite
This benchmark pools every store Ottom has scanned, across all categories, including stores whose category could not be determined. Each store is counted once, whichever category it is in. It is counted under exactly the rules each category is, set out in the methodology.
n = 249 measured of 255 scanned · 7 July 2026 to 5 October 2026 · v2.0.3 · bench-v5 · methodology
Scores come from the 249 stores Ottom measured at every stage. A further 6 were scanned but stopped before checkout, usually at bot protection or a robots.txt rule, so they have no comparable score. All 255 are still counted in the stalls below, because what was found on a store does not depend on how it was scored.
A store enters Ottom’s survey only if a catalogue of at least ten products can be read from it in one request, which in practice means Shopify and WooCommerce storefronts. These figures therefore describe the storefronts Ottom can read in bulk rather than online retail as a whole. The methodology sets out what that excludes.
Between 1 and 10 October 2026 the median score across all stores rose from 55 to 97. The stores did not change. Our agent did. On 4 October 2026 we replaced the scripted agent that walked checkout, agent-v1, with a new one, agent-v2, and from 8 October 2026 we measured every surveyed store again with it. On 250 stores measured by both, the old agent reached the payment step on 5 and the new one on 212. Figures before 10 October 2026 were measured wholly or partly by the old agent and are not compared with figures after it. The methodology sets out which agent measured these figures.
Reaching the payment step
32% of the 249 stores Ottom measured let an AI shopping agent reach the payment step. Ottom stops there and never submits payment. Cite
Where agents stall
Of the 249 stores Ottom measured at every stage, 32% scored 80 or better at the buy stage, against 91% at the compare stage. Cite
Each stage of the journey, and the share of stores whose score at that stage was 80 or better.
| Stage | Median score | Stores passing | Stores measured |
|---|---|---|---|
| Discover | 100 | 57% | 249 |
| Evaluate | 88 | 88% | 249 |
| Compare | 100 | 91% | 249 |
| Buy | 9 | 32% | 249 |
What stops them
The most common stall across all stores is products have no GTIN or MPN to match against, found on 64% of the 255 stores Ottom scanned in the 90 days to 5 October 2026. Cite
The most common stalls across all stores, as a share of all 255 stores scanned. A stall found on fewer than 5 stores is withheld, because at that count it points at a merchant rather than at a pattern.
- No sitemap38%
- No product structured data9%
- No llms.txt3%
- No product identifier64%
- Variants undescribed12%
- Shipping cost revealed late7%
- Hover only variant picker37%
- Add to cart needs JavaScript16%
- Payment step unreachable7%
- Popup blocks the flow5%
| Stall | Stage | Severity | Share of stores |
|---|---|---|---|
| Products have no GTIN or MPN to match againstEvaluate | Evaluate | Medium | |
| No sitemap for agents to crawlDiscover | Discover | High | |
| Size or colour can only be chosen by hoveringBuy | Buy | High | |
| Add to cart needs JavaScript the agent cannot runBuy | Buy | Medium | |
| Variants are not described in structured dataEvaluate | Evaluate | High | |
| Product pages have no schema.org markupDiscover | Discover | High | |
| Shipping cost cannot be determined before checkoutCompare | Compare | High | |
| Agent could not reach the payment stepBuy | Buy | Critical | |
| A popup blocks the path to the cartBuy | Buy | High | |
| No llms.txt to orient agentsDiscover | Discover | Low |
What to change first
- No product identifier
Populate the barcode field (GTIN, EAN or UPC) on each variant, which most platforms already have a field for.
- No sitemap
Publish /sitemap.xml covering product, collection and policy URLs. Most platforms generate this for you once it is enabled.
- Hover only variant picker
Make each option a real control: a select, a radio input, or a button that responds to a click and to the keyboard.
6 further stalls were found but withheld: too few stores showed them to report a share without pointing at an individual store.
Readiness score
The median of the 249 stores Ottom measured at every stage in the 90 days to 5 October 2026 scored 57 out of 100, and a quarter of them scored 52 or below. Cite
The spread of overall readiness scores across the category. We publish quartiles rather than a best and worst store, because the best and the worst are each one identifiable merchant.
How to cite this benchmark
These figures are published under CC BY 4.0. Quote them, chart them and reuse them, commercial use included. Credit Ottom and link to this page, as below.
Suggested citation
Ottom, Agentic commerce benchmark across all stores v2.0.3, 7 July 2026 to 5 October 2026, methodology bench-v5. https://ottom.io/benchmarks/all. Licensed CC BY 4.0.
As HTML, for a web page
Source: Ottom, <a href="https://ottom.io/benchmarks/all">Agentic commerce benchmark across all stores v2.0.3</a>, 7 July 2026 to 5 October 2026, methodology bench-v5. Licensed under <a href="https://creativecommons.org/licenses/by/4.0/" rel="license">CC BY 4.0</a>.Cite one figure
Each figure has its own link, so a quote can point at the sentence it came from.
- Summaryhttps://ottom.io/benchmarks/all/v2.0.3#summary
- Reaching paymenthttps://ottom.io/benchmarks/all/v2.0.3#checkout
- Stageshttps://ottom.io/benchmarks/all/v2.0.3#stages
- Most common stallhttps://ottom.io/benchmarks/all/v2.0.3#stalls
- Median scorehttps://ottom.io/benchmarks/all/v2.0.3#score
The citation names version v2.0.3, so the exact figures quoted can be checked later.
The same figures as JSON.