← All insights
Guide7 min read

What tires a shopping agent: 33 frictions that slow AI agents down in your store

CAPTCHAs, pop-up storms, prices that only appear after a click, checkout fees that show up at the last step. A checklist of the details that make AI shopping agents slow down, loop or give up, and what to fix first.

An AI shopping agent rarely fails because of one big wall. More often it gets tired: a cookie banner covers the button, the price only appears after a size is chosen, the checkout button sits in a drawer it can't operate, and every extra click costs time and budget. After enough of these, the agent loops, guesses a URL or hands the shopper over to another store.

When we run agent simulations, we see the same patterns again and again. In one run this week, an agent found the right product, picked a size and added it to the cart in five steps, then spent the next fourteen steps opening the cart drawer and clicking the product photo instead of the checkout button. Another agent on the same store only reached checkout by typing the checkout address itself. Neither is a disaster for a human shopper. For an agent, both are friction a store can remove.

Below are the 33 frictions we check. For each group we note how Specoria checks it: automatically during the simulation, or by an expert where a live run can't see it (we never place orders, enter personal data or pay).

Access and blocks

  1. CAPTCHA and "I'm not a robot" boxes. The hardest stop: the agent can't continue at all. Fix: use risk-based protection and reserve challenges for clearly abusive traffic. Check: automatic.
  2. Aggressive bot protection. Interstitial pages, IP blocks, or quietly returning an empty page. Fix: allow verified and signed agents; don't serve blank pages to unknown browsers. Check: automatic.
  3. Geo-redirects. Sending the visitor to another language, currency or country site based on location. Fix: honour the requested URL and language; offer a switch instead of forcing it. Check: automatic.
  4. Cookie and pop-up storms. Cookie banner, newsletter pop-up, discount wheel, "download the app" overlay. Each one is an extra click, and some cover the button the agent needs. Fix: one small, non-blocking consent banner; no overlays on product and cart pages. Check: automatic.

Reading the page

  1. Content loaded only with JavaScript. If price and stock aren't in the first HTML, a fast read comes back empty and the agent has to fall back to a slow browser. Fix: render price, stock and title on the server. Check: automatic (we compare a plain fetch with the rendered page).
  2. Infinite scroll. Products that load only as you scroll take a long time to see in full. Fix: keep paginated URLs alongside infinite scroll. Check: automatic.
  3. Hidden information. Size charts, delivery times and return terms inside accordions, tabs or modals. Each one is an extra click. Fix: show the key facts as visible text on the product page. Check: automatic.
  4. Text inside images. Prices, campaign terms or size details given as pictures are hard to read and easy to misread. Fix: put them in text. Check: expert.
  5. Missing structured data. Without schema.org Product and Offer, price, stock and variants are guessed from the page. Fix: complete Product/Offer JSON-LD with availability and price. Check: automatic.
  6. Slow pages and layout shift. Buttons that move while the page loads lead to wrong clicks. Fix: reserve space for late content; keep interaction targets still. Check: automatic.

Products and variants

  1. Variants without their own URL. If choosing a colour or size doesn't change the address, the agent can't go straight to that variant and has to choose again every time. Fix: give each variant a URL or query parameter. Check: automatic.
  2. Price that changes only after a choice. If the real price appears only after selecting a variant, every option has to be tried. Fix: show the price range and each variant's price up front. Check: automatic.
  3. Vague stock. "Only 2 left" on the page, but real availability only appears in the cart. Fix: publish availability per variant in structured data. Check: automatic.
  4. Filters that don't change the URL. If filters and sorting aren't in the address bar, the agent has to click them again on every visit. Fix: reflect filters in the URL. Check: automatic.

Price transparency

  1. Fees that appear at the last step. Shipping, service fees or taxes that only show at checkout change the amount the shopper approved, and the agent has to ask again. Fix: show all fees on the product page or before checkout. Check: automatic, as far as the cart and checkout summary are visible before personal data.
  2. VAT included or excluded? A net price in the list and a gross price at payment. Fix: state clearly whether prices include VAT. Check: automatic.
  3. Currency ambiguity. A price shown in one currency and charged in another, or a dynamic conversion at payment. Fix: one currency end to end, stated clearly. Check: automatic where visible; expert for the payment page.
  4. Complex campaigns. "Buy 2, pay 1", coupon fields, members-only prices: the agent has to experiment to find the real price. Fix: show the final price the shopper will pay. Check: automatic.

Cart and account

  1. Forced sign-up. No guest checkout means account creation, email verification and a password. Fix: offer guest checkout. Check: automatic.
  2. Surprise login walls. Requiring a login to see the price or add to cart. Fix: let anyone see prices and use the cart. Check: automatic.
  3. Pre-ticked boxes. "Save my account", newsletter, extra insurance, donations, each of which has to be noticed and unticked. Fix: leave optional boxes unticked. Check: automatic.
  4. Items added by themselves. Warranty, gift wrap or extra services added to the cart without asking. Fix: only add what the shopper chose. Check: automatic.
  5. Expiring carts and timers. A cart or room hold that disappears while the shopper is asked to confirm. Fix: hold carts long enough for an agent to ask its user. Check: automatic where a timer is shown.

Forms

  1. Unlabelled fields. Without a label and autocomplete, the agent has to guess what a field wants. Fix: a label and the right autocomplete value on every field. Check: automatic on the forms we see.
  2. Fake buttons and custom dropdowns. Elements built from divs instead of real buttons and selects sometimes don't react to clicks. Fix: use native button and select elements, or proper roles. Check: automatic.
  3. Strict, unexplained formats. Phone numbers with or without spaces or +90, postcodes, ID numbers, with errors that don't explain the rule. Fix: accept common formats and show the expected one. Check: expert.
  4. Unnecessary required fields. Information unrelated to the purchase, each one an extra question for the shopper. Fix: only require what the order needs. Check: expert.
  5. Vague error messages. "Something went wrong" without saying which field is wrong. Fix: name the field and the fix. Check: expert.

Payment, and after the order

  1. Card fields in iframes and 3D Secure. Normal, but slow or timing-out payment windows break the flow. Check: expert, since we never pay.
  2. Uncertainty after payment. A late confirmation page or no order number makes it unclear whether the payment went through, with a risk of paying twice. Check: expert.
  3. Login required to track an order. Fix: allow tracking with the order number and email. Check: expert.
  4. Return information scattered around. Return window and terms deep in an FAQ, in a PDF or only with customer service. Fix: one return page in text, plus MerchantReturnPolicy data. Check: automatic for the return page and structured data; expert for the rest of the process.
  5. Returns only by phone or live chat. Without an online return form, the process stops. Check: expert.

Five changes with the biggest effect

  1. Put price, stock and variants in the first HTML and in JSON-LD.
  2. Show every fee (VAT, shipping) on the product page; no surprises at checkout.
  3. Offer guest checkout and never pre-tick boxes.
  4. Use labelled forms with autocomplete and clear error messages, and drop unnecessary required fields.
  5. Replace CAPTCHAs with risk-based protection, and show a clear order number on the confirmation page.

How to see your own list

The agent simulator sends AI shopping agents to your store and marks which of these frictions it saw in that run, with the step and screenshot where it happened. In the project panel, each friction becomes a task with a fix, and the items a live run can't see are checked by an expert.