B2B stores and AI agents: what we measure
Case and wholesale terms, price on request, minimum orders and login walls can stop an AI agent from buying. What Specoria measures today, and what it doesn’t.
Possible hidden constraints (free test, no effect on score)
On the product page, the free test looks for conditions that can stop an agent from buying on its user’s behalf. Those that matter for B2B stores:
- case / wholesale / dealer-only sale
- price on request
- an offer without a price in structured data
- a minimum order quantity above 1
We search the product name, the category and the start of the description, not the whole page: a “wholesale” link in the menu doesn’t count. A minimum quantity (eligibleQuantity.minValue above 1) in structured data counts too. It is a dictionary signal, not a verdict.
Examples the dictionary recognizes: Wholesale only
, Case of 12
, Price on request
, Request a quote
.
If a constraint is real, state it in structured data as well, for example with eligibleQuantity, so an agent can tell its user before it tries to buy.
Login walls (agent simulator)
The agent simulator shops in a real browser. On each page it visits, it looks for text that asks the shopper to sign in before seeing prices or adding to cart, for example: Log in to see prices
, Sign in to add to cart
.
The report lists it as a friction: “Login required for the price or the cart”. An agent can’t create an account or sign in for its user, so a login wall is where its journey ends.
Scored checks
These checks are part of the agent readiness score; each links to its own page with the fix and how to verify it.
Price, currency, availability and URL
SC-DATA-02 · weight 6 · Product data
Why it matters: A product whose price and stock can’t be verified drops out of the agent’s price filter and shortlist.
What passes: The offer carries price, an ISO currency code, availability and the product URL together.
How the free test measures it
We count four fields in the product’s offer: price, a valid ISO 4217 currency, availability and the offer URL. All four pass, none fails; anything in between earns points in proportion.
Add-to-cart button in the initial HTML
SC-CART-02 · weight 5 · Action (cart and orders)
Why it matters: Browser agents (ChatGPT agent, Comet, Operator) need to find the button to add to cart.
What passes: Add to cart is a real <button> or form in the initial HTML.
How the free test measures it
We look for an add-to-cart signal in the product page’s initial HTML: a cart form, cart attributes or “Add to cart” text. Present passes, absent fails.
Is the cart button accessible?
SC-CART-03 · weight 3 · Action (cart and orders)
Why it matters: What works for screen readers works for agents; an icon button with no name can’t be clicked reliably.
What passes: The button is a <button> or form submit with visible text or an aria-label.
How the free test measures it
If add-to-cart was found, we check whether it’s a real button or form and whether it has a readable name (text or aria-label). Both pass, one is a partial pass, neither fails.
Buying without an account
SC-CHECKOUT-01 · weight 4 · Action (cart and orders)
Why it matters: If an account is required, a browser agent can’t get to payment.
What passes: Guest checkout is on; few steps, no pop-ups or forced newsletter sign-ups.
How the free test measures it
Guest checkout can’t be seen from outside without a browser; in the free test it’s always marked “couldn’t check” and doesn’t count. The deep audit report measures it with a real browser.
What we don’t measure
- Prices shown only after signing in: the free test reads public pages, so it can’t see them.
- Whether tiered, volume or customer-specific prices are correct.
- Payment terms such as invoice or open account, and dealer approval or account application flows.