Fixing AI Agent Compatibility on a Shopify Store
Shopify stores are usually easy for AI agents to read, because product and collection pages come from the server as complete HTML. They are often hard for agents to use.
The trouble tends to arrive through apps and theme tweaks: a discount pop-up that covers the page, colour swatches built from plain boxes, a cart drawer that never becomes a real page, filters that live only in script, and checkout extras that ask questions no agent can answer. This guide goes through a Shopify store as a shopping agent would and fixes each point where it gets stuck.
- Where Shopify stores lose AI shoppers
- The shopping journey, stage by stage
- App pop-ups, overlays and drawers
- Variant pickers and swatches
- The cart, search and filters
- The fix, step by step
- Checkout on Shopify: what you control and what you do not
- Keeping the store agent-friendly after changes
- Questions and answers
Where Shopify stores lose AI shoppers
A shopping agent is given a job such as "find a waterproof walking jacket in medium under ยฃ120 and put it in my basket". To do that on your store it has to land on a page, get past whatever appears on top of it, search or browse to a product, choose a size and colour, add it to the cart, reach the cart and start checkout. Somewhere near payment it hands control back to the person, who confirms and pays.
Shopify itself handles much of this well. Its themes produce server-rendered HTML, the Online Store 2.0 themes such as Dawn use proper form controls for variants, and the checkout is run by Shopify rather than by your theme. Most of the problems on real stores come from three places:
- Apps that inject scripts into the storefront. Email capture pop-ups, spin-to-win wheels, age gates, country pickers, chat bubbles, upsell drawers and custom swatch apps all add markup after the page loads. Many of them cover the page or replace native controls with styled boxes that have no name an agent can read.
- Theme customisations. Edits made by a freelancer or copied from a forum often swap a real link or button for a clickable element that only works in script, or make the cart open only as a drawer.
- Store settings aimed at bots. Spam protection on forms, required customer accounts and password protection all make sense for some shops but can stop an agent working for a genuine customer.
This guide is about agents using the store. If your concern is whether AI crawlers can read your products at all, including robots.txt.liquid and app content that crawlers never see, that is covered in the Shopify agent readiness guide.
The shopping journey, stage by stage
Map your store against the stages below. The middle column is what the agent needs; the right-hand column is the usual Shopify cause when it does not get it.
| Stage | What the agent needs | Common Shopify cause of failure |
|---|---|---|
| Landing | To see the page and reach its content | Full-screen discount pop-up, age gate or country picker with no clear close button |
| Finding a product | A search box and filters it can use, and results at their own address | Predictive search that only shows a dropdown; filters built by a third-party app that only work in script |
| Choosing options | Size and colour controls with readable names and a visible selected state | Swatch apps that draw coloured squares as plain boxes with no label |
| Adding to cart | A named button and clear confirmation that the item is in the cart | Add to cart replaced by an upsell modal that must be dismissed first |
| Reviewing the cart | A cart page with quantities, prices and a checkout button | Cart only available as a slide-out drawer; /cart redirected away |
| Starting checkout | A guest route to checkout | Customer accounts set to required; login forced before checkout |
| Checkout | Standard, labelled fields and a clear order summary | Extra checkout apps asking for gift notes, surveys or add-ons with unclear controls |
App pop-ups, overlays and drawers
Overlays are the most common reason an agent stops on a Shopify store. A browser-driving agent looks at a screenshot and at the accessibility tree. If a pop-up covers the page and its close control is an unlabelled "x" drawn with CSS, the agent may not recognise it as a way out, and every click it makes on the page underneath is swallowed by the overlay.
What a well-behaved overlay looks like
- It waits: it appears after a delay, on scroll or on exit intent, rather than the instant the page loads.
- It uses a dialog element or
role="dialog"witharia-modal="true"and a heading, so the agent knows what it is looking at. - Its close button is a real
<button>with a name such as "Close" or "No thanks", and pressing Escape closes it. - It does not come back on every page once dismissed.
<div role="dialog" aria-modal="true" aria-labelledby="signup-title">
<h2 id="signup-title">Get 10% off your first order</h2>
<form action="/contact#newsletter" method="post">
<label for="signup-email">Email address</label>
<input id="signup-email" type="email" name="contact[email]" autocomplete="email">
<button type="submit">Sign up</button>
</form>
<button type="button" class="modal-close">No thanks</button>
</div>
Most pop-up apps let you set a delay, choose which pages it appears on and limit how often it shows. Setting a delay and keeping it off product and cart pages removes most of the harm without losing sign-ups from people who browse.
Age gates and country pickers
If you sell age-restricted goods you may need an age check, and that is a point where an agent should hand back to the person. Make it a clear dialog with labelled buttons, and do not reset it on every page. For countries, Shopify Markets can show local prices and currency without a blocking pop-up; a small selector in the header or footer is far easier for an agent than a modal on arrival that insists on a choice.
Variant pickers and swatches
Choosing a size and colour is where many agents pick the wrong item. The agent needs to know what options exist, which is selected and which are sold out. Dawn and most current Shopify themes do this with radio inputs inside a fieldset with a legend, which is exactly what an agent can read. Problems start when an app or customisation replaces those inputs with styled boxes.
<!-- Hard for agents: a box with a colour, a script click handler and nothing else -->
<div class="swatch" data-value="Forest"></div>
<!-- Works: a real radio with a name, even if it is styled as a swatch -->
<fieldset>
<legend>Colour</legend>
<input type="radio" id="colour-forest" name="Colour" value="Forest" checked>
<label for="colour-forest">Forest green</label>
<input type="radio" id="colour-navy" name="Colour" value="Navy" disabled>
<label for="colour-navy">Navy (sold out)</label>
</fieldset>
The label text can be visually hidden if the design only shows a coloured circle, but it must be there.
Say "sold out" in text rather than only with a strike-through line, and keep the price and the product
URL in step with the chosen variant. Shopify themes update the address with ?variant= and
the variant ID when an option is chosen; if a customisation has broken that, an agent that shares or
revisits the link lands on the default variant instead of the one it picked.
The cart, search and filters
Cart drawers
Slide-out cart drawers are fine as long as the store still has a working /cart page and
the drawer is a labelled dialog with a real checkout button. Some themes and apps remove the cart page
or redirect it to the home page. An agent that cannot open a page listing what is in the cart cannot
check its own work, and a person handed the task has nothing to review. Keep the cart page, link to it
from the drawer with a "View cart" link, and make sure the header cart icon is a link to /cart
with an accessible name that includes the item count.
Shopify also supports cart permalinks, addresses in the form /cart/VARIANT_ID:QUANTITY
that fill a cart and go to checkout. They are handy for testing and for links in emails, and they show
whether checkout works independently of your theme.
Search and filters
Shopify's search page lives at /search?q= and collection filters from the Search &
Discovery app appear in the address as parameters such as filter.v.availability=1 or filter.v.price.lte=120.
That is ideal for agents: every filtered view has its own URL, it can be loaded directly, and the result
is server-rendered. Third-party filter and search apps vary. Some keep filters only in the page's script
state, so a filtered list cannot be reached by address and the filter controls are unlabelled checkboxes
drawn with CSS. If you use one, check that choosing a filter changes the URL, that loading that URL gives
the same results, and that the search box is a form with a submit button rather than a predictive dropdown
only.
The fix, step by step
Step 1
Shop the store as an agent would
Run the AI Agent Compatibility audit on your home page, one collection page and one product page, then open the store in a private window with no apps logged in. Using only the keyboard, search for a product, choose a size and colour, add it to the cart, open the cart page and start checkout. Write down every place where focus disappears, a control has no name, or something covers the page and cannot be closed.
Step 2
Quieten pop-ups and overlays from apps
In the theme editor, open Theme settings and then App embeds, and switch embeds off one by one while previewing to see which app adds each overlay. For the ones you keep, set a delay, stop them showing on product, cart and checkout pages, and check that the close control is a real button with a text name and that Escape dismisses it. Remove leftover snippets from apps you no longer use.
Step 3
Make variant pickers real form controls
Inspect the size and colour options on a product page. Each option should be a radio input or a select with a visible or visually hidden label, grouped in a fieldset with a legend such as Size. If a swatch app uses plain boxes, switch it to its accessible mode, replace it, or go back to the theme's own picker. Check that sold out options say so in text and that the URL gains the variant ID.
Step 4
Give the cart a real page and working links
Visit /cart directly and confirm it shows the items, quantities, prices and
a checkout button rather than redirecting. Make the header cart icon a link to that page with a name
that includes the item count, and add a View cart link inside any drawer. Test a cart permalink such
as /cart/VARIANT_ID:1 with a real variant ID to prove checkout works without the theme getting
in the way.
Step 5
Keep search and filters in the address
Search for a product and check the address becomes /search?q= with your term,
and that loading it in a new window gives the same results. Apply a filter on a collection and confirm
the address changes too. If a third-party filter app keeps filters only in script, look for a setting
that writes them to the URL, or move to Shopify's Search & Discovery filters, which do this already.
Step 6
Loosen login and spam checks that block shoppers
In the customer account settings, make accounts optional so shoppers can check out as guests. Under Online Store and Preferences, review spam protection: Google reCAPTCHA on contact and account forms stops some junk, but it also stops agents sending an enquiry, so weigh how much spam you actually get. Remove store password protection once the shop is live, and check that no app forces a login before the cart.
Step 7
Trim checkout extras and retest the journey
List every app that adds something to the cart or checkout, such as gift messages, delivery date pickers, upsells and post-purchase surveys. Keep the ones that earn their place and make sure each adds labelled fields that are optional unless truly needed. Then repeat the keyboard walk from step one, run the audit again, and ask an AI agent you have access to for a realistic purchase up to the payment step.
Checkout on Shopify: what you control and what you do not
Shopify runs the checkout, so the core fields, their labels and the payment step are the same on every store and generally well built. That is good news for agents. What you can change are the things around it:
- Checkout apps and extensions. Shopify has moved stores from the old checkout.liquid customisation to Checkout Extensibility, where apps add blocks through checkout UI extensions. These use Shopify's own components, which are more consistent than hand-written HTML, but an app can still ask for information in a confusing way. Keep checkout blocks few and optional.
- Accelerated checkout buttons. Shop Pay, Apple Pay, Google Pay and PayPal buttons on product and cart pages are a quick route for people. For an agent they usually mean a hand-over, because they open a payment sheet or a separate window that the person must confirm. Keep the standard Check out button visible alongside them so the agent always has a route it can follow.
- Customer accounts. Shopify's newer customer accounts sign people in with a one-time code sent by email. An agent cannot read the customer's inbox, so a forced login always means handing back to the person. Guest checkout avoids that.
- Bot protection at checkout. Shopify can add its own checks at checkout, particularly on high-demand launches, and these are not settings a theme can switch off. That is a reasonable place for a check, and the person will complete it when the agent hands over.
Keeping the store agent-friendly after changes
- Test after every app install. Most regressions on Shopify come from a new app. Walk the journey from step one after installing or updating anything that touches the storefront, the cart or the checkout.
- Keep a note of app embeds. A short list of which embed does what saves time when something starts covering the page months later.
- Update the theme with care. A theme update can bring back a native variant picker you replaced, or drop a fix you made to the cart link. Duplicate the theme, update the copy, check the journey, then publish.
- Watch your contact form spam. If you loosen reCAPTCHA and spam rises, add a honeypot field or a simple server-side check rather than a challenge on every submission.
- Re-run the audit quarterly on a product page and a collection page, because apps change their code without asking you.
For the underlying techniques, the forms guide covers labels and autocomplete in depth, and the checkout guide covers the hand-over to the customer.
1. Can AI agents buy from a Shopify store?
Agents can usually browse a Shopify store, choose products and fill a cart, and many can move into checkout and fill in the delivery details. Reputable agents are designed to stop before paying and ask the person to confirm, so the final step is normally completed by the customer. What decides whether the agent gets that far is mostly your apps and theme: overlays, unlabelled swatches, a missing cart page and forced logins are the usual points where it gives up.
2. Which Shopify apps cause the most trouble for agents?
The ones that put something on top of the page or replace a native control. Email capture pop-ups, spin-to-win wheels, age gates, country selectors that insist on a choice, upsell modals triggered by add to cart and custom swatch apps are the common culprits. That does not mean removing them all. Set a delay, keep them off product and cart pages, and check that each one has a named close button and closes with the Escape key.
3. Does the Dawn theme work well with AI agents?
Dawn and Shopify's other current free themes are a good starting point. They render content on the server, use radio buttons and labels for variants, have a real cart page and put search and filter choices in the address. Problems usually come from what has been added since: app embeds, custom sections and code pasted into the theme. If you are on an old or heavily customised theme, compare its product page with a fresh copy of Dawn to spot the differences.
4. Should I turn off reCAPTCHA on my Shopify contact form?
It depends on how much spam you receive. Google reCAPTCHA stops a lot of automated junk, but an agent sending an enquiry for a real customer will usually stop and hand back when it meets a challenge, and some never get past it. If spam on your store is low, try turning it off and watch the inbox for a few weeks. If spam jumps, switch it back on or use a less intrusive check such as a hidden honeypot field.
5. Is a cart drawer bad for agents?
Not on its own. A drawer that is a labelled dialog, lists the items with prices and has a real Check out button works fine. The problem is when the drawer is the only way to see the cart, because the /cart page has been removed or redirected. An agent that wants to confirm what it added, or a person picking up the task later, needs a page they can load directly. Keep /cart working and link to it from the drawer.
6. Will these changes affect my conversion rate for human shoppers?
Usually in a good direction. Most of the fixes are also accessibility fixes: named buttons, labelled options, dismissible pop-ups and guest checkout help keyboard users, screen reader users and people on small screens. Delaying a discount pop-up may reduce sign-ups a little, so measure it over a few weeks rather than assuming. If you are worried, change one thing at a time and compare sales and sign-ups before and after each change.
7. Do I need robots.txt changes for agents to use my store?
Not usually. Agents acting for a person are a different kind of visitor from crawlers, and the main blocks they meet on Shopify are overlays, controls and logins rather than robots.txt rules. Robots.txt matters more for whether AI crawlers read and cite your products, which is covered in the separate agent readiness guides. If your store is behind extra bot protection from an app or a proxy in front of Shopify, check that too, as it can refuse agents outright.
The AI Agent Compatibility audit tests your page for bot blocks, content hidden behind JavaScript, unlabelled forms and controls, navigation agents cannot follow and missing structured data, and links each finding to the guide that fixes it.
Open AI Agent Compatibility Fixes โ