Agent Readiness in Shopify
Shopify takes care of hosting, so many of the server problems that trip up other sites never arise.
The agent readiness problems on Shopify stores come from elsewhere: a store still behind its password page, robots.txt rules changed through a theme template, apps that inject reviews, size guides and FAQs with scripts after the page loads, and product pages whose only description is a supplier paragraph with the specifications in an image. This guide works through each of those in the Shopify admin and theme code, and points to the general guides for the parts that work the same on every platform.
Where agent readiness breaks on Shopify
A Shopify page is built on Shopify's servers by your theme's Liquid templates, then delivered through Shopify's CDN. That gives you complete server-rendered HTML for the theme's own content, without any configuration. What arrives in that HTML, and whether a crawler is allowed to ask for it, is still up to you. The usual trouble spots are:
| Area | What goes wrong | Where to change it |
|---|---|---|
| Store access | Password protection left on, so every request gets the password page | Admin: Online Store, Preferences |
| robots.txt | Custom rules added to robots.txt.liquid that block more than
intended | Theme code: templates folder |
| App content | Reviews, Q&A, size charts and bundles injected by script after load | App settings and theme app blocks |
| Product text | Short or supplier-copied descriptions; specs only in images or tabs | Product editor, metafields, theme sections |
| URLs | Products reachable through collection paths, variant parameters and market subfolders | Theme canonical tag, Markets settings |
| Structured data | Theme and SEO app both output Product markup, sometimes disagreeing | Theme snippets and app settings |
Server speed is rarely the issue on Shopify, because you do not run the servers. If the audit reports slow rendering, it is almost always the amount of app script and the content that waits for it.
Store access and robots.txt
The password page
New stores are password protected until they are launched, and some owners switch it back on during a redesign. While it is on, every crawler receives the password page instead of your content. Check under Online Store, Preferences, and fetch your home page with curl to make sure the response is your store rather than a login form.
Editing robots.txt the Shopify way
You cannot upload a robots.txt file to a Shopify store. Shopify generates a default one with sensible
rules, such as keeping crawlers out of the basket, checkout, customer accounts and internal search results.
To change it, you add a robots.txt.liquid template to your theme, which then controls the
output. The template Shopify documents as the starting point reproduces the default rules:
{% for group in robots.default_groups %}
{{- group.user_agent }}
{%- for rule in group.rules -%}
{{ rule }}
{%- endfor -%}
{%- if group.sitemap != blank -%}
{{ group.sitemap }}
{%- endif -%}
{% endfor %}
Anything you add goes after that loop. For example, if you decide to opt out of a particular training crawler while leaving AI search crawlers alone, you add a group for that crawler's documented user agent name:
User-agent: ExampleTrainingBot
Disallow: /
User-agent: SomeAIBot with Allow: /, that bot no longer reads the default
rules for all user agents, so it is now allowed into the basket and search pages too. Copy the relevant
default disallow lines into any bot-specific group you add.If the audit says a crawler is blocked, open /robots.txt on your live domain and check
whether a robots.txt.liquid template exists in the theme. Themes bought from third parties
and edits made by past developers are the usual source of surprise rules. Which crawlers to allow is
a business choice; the crawler access
guide explains the options, and the Shopify
robots.txt and sitemap guide covers the template in more depth.
App content that crawlers never see
Shopify apps usually add content to your storefront in one of two ways. Some use theme app blocks or Liquid snippets that render on Shopify's servers, so the output is in the HTML. Many others add a script that runs in the browser, calls the app's own servers and inserts the content afterwards. For a crawler that does not run scripts, that content does not exist.
Content commonly added this way includes:
- Review text and star ratings
- Product questions and answers
- Size guides and fit advice
- Delivery estimates and stock messages
- FAQ accordions and specification tabs added by page-builder apps
- Bundles, "frequently bought together" and upsell blocks
To check a product page, fetch it with curl or view the source (not the element inspector) and search for a phrase from a review, a size-guide row and an FAQ answer. Whatever is missing is script-loaded. Then check the app's settings and documentation: some review apps can write a summary to product metafields or render a server-side block, which puts at least the rating and a few reviews in the HTML. Where an app has no such option, and the content matters, consider whether the same information can live in the product itself.
Product pages a crawler can use
An AI assistant answering "which waterproof walking boots have a wide fit under ยฃ150" needs facts in text: materials, sizes, fit, weight, care, price. On many stores those facts are in a supplier image, a PDF or a tab filled by an app. Put them in the page as text instead.
Specifications in metafields
Create product metafield definitions in the admin under Settings, Custom data, for the specifications you sell on: material, dimensions, weight, compatibility, care. Fill them for each product, then connect them to text or table blocks in the theme editor using dynamic sources. The values are rendered by Liquid, so they arrive in the HTML, stay consistent across products and can also feed your structured data.
Descriptions that answer questions
Descriptions copied from a supplier appear word for word on every store that sells the product, and they rarely say who the product suits. Rewrite the first paragraph for your best sellers so it states plainly what the product is, who it is for and what distinguishes it, then follow with the detail. For a fictional store, Fernside Outdoor, that might read: "A waterproof leather walking boot in wide and standard fits, for day walks on wet ground, with a grippy rubber sole and a 12-month guarantee."
Collection and blog pages
Collection pages with only a product grid give a crawler little to work with. A short introduction explaining what is in the collection and how to choose helps. On the blog, Shopify records the staff member who wrote each article, but most themes show little about them; the author and trust signals guide covers what to add.
The fix, step by step
Step 1
Confirm the store is open and crawlable
In the Shopify admin, go to Online Store, Preferences and check that password protection is off for the live store. Then fetch the home page, a product and a collection with curl using an AI crawler user agent and check each returns status 200 with your real content. If you use a separate proxy, firewall or bot-management app in front of the store, check its settings for rules that block or challenge crawlers.
Step 2
Review the live robots.txt and its template
Open /robots.txt on your domain and read every group. In the theme code
editor, check whether templates/robots.txt.liquid exists. If it does, compare its extra
rules with what you actually want, remove any that block crawlers you intend to allow, and copy default
disallow lines into any bot-specific groups. Make changes on a duplicate theme first, then publish and
recheck the live file.
Step 3
Find app content that loads by script
View the source of a product page and search for text from each app-driven block: a review, a question, a size-guide row, an FAQ answer. List the blocks that are missing and which app provides each. Check each app for a server-rendered option, such as a theme app block or metafield output, and switch it on. Remove leftover script tags and snippets from apps you have uninstalled.
Step 4
Put specifications into the theme as text
Create product metafield definitions under Settings, Custom data, for the specifications customers ask about, and fill them for your main products. In the theme editor, add a text or collapsible block to the product template and connect it to the metafields with dynamic sources. Collapsible blocks in most themes keep their content in the HTML. Retire specification images once the same facts appear as text.
Step 5
Rewrite the first paragraph of key products
Start with your best-selling and highest-margin products. Replace supplier opening lines with one or two sentences that say what the product is, who it suits, the key measurements or materials and anything that sets it apart, using the words customers use. Keep the rest of the detail below. Check the product title is descriptive rather than just a brand name and model code, and make sure the same facts appear in the price and variant options.
Step 6
Check canonicals, variants and markets
Open a product through a collection link and view the source: the canonical tag should
point to the plain /products/ address, not the collection path. Do the same with a ?variant=
address. If you sell through Markets with subfolders or separate domains, confirm each version has its
own canonical and hreflang tags. Check the theme and any SEO app are not both printing canonical or Product
markup.
Step 7
Retest a product, collection and article
Run the Agent Readiness Audit on one product, one collection, one blog article and the home page. Fetch each again with curl and confirm the specifications, the new opening paragraph and at least a summary of reviews now appear in the raw HTML. Keep a note of the theme version and installed apps alongside the results, so you can compare after the next theme update or app installation.
The rest of the audit on Shopify
Several findings work the same on Shopify as anywhere else. Use the general guides for these, with the Shopify notes below:
- Structured data. Many current themes output Product JSON-LD automatically, and SEO apps often add their own. Keep one source and make sure it includes price, availability and brand. See fixing missing or incomplete JSON-LD and the Shopify JSON-LD guide.
- Duplicate URLs. Collection-path product URLs, filtered collections and market subfolders are covered in fixing canonical and URL conflicts.
- Page structure. Section files with headings chosen for size are the usual Shopify problem; see fixing non-semantic HTML.
- Extractability. Content in tabs, sliders and images; see fixing poor content extractability.
- llms.txt. Because Shopify does not let you upload files to the root of the domain, adding one needs a workaround; the Shopify llms.txt guide covers the options.
Staying ready through theme and app changes
- Before installing an app that adds storefront content, ask whether it renders in the HTML or loads by script, and test it on a duplicate theme.
- After each theme update, check that
robots.txt.liquid, the canonical tag and your structured data survived, since updating a theme can mean moving to a fresh copy of its code. - Keep specifications in metafields so a theme change keeps the data, and you only need to reconnect the blocks.
- Re-run the Agent Readiness Audit on a product, a collection and an article every few months and after any major store change.
If you also want AI agents to be able to add to basket or check out, rather than read your pages, that is a separate question covered in the Shopify agent compatibility guide.
1. Does Shopify block AI crawlers by default?
Shopify generates a default robots.txt with rules that keep all crawlers out of areas such as the basket, checkout, customer accounts and internal search. Those rules are meant to stop crawlers wasting time on pages with no public value. Check your own live robots.txt file to see exactly what applies to your store, because a robots.txt.liquid template in your theme, or a third-party proxy or firewall in front of the store, can add further blocks that the default file does not contain.
2. How do I edit robots.txt on Shopify?
In the theme code editor, add a new template and choose robots, which creates robots.txt.liquid. It starts with Liquid code that outputs Shopify default rules, and you add your own lines after that loop. Shopify recommends keeping the defaults, and its support team may not be able to help with custom rules, so test on a duplicate theme, keep the change small and check the live robots.txt file after you publish the theme.
3. My reviews app shows stars, so why does the audit not see reviews?
Many review apps insert their widgets with a script that runs in the visitor's browser after the page loads. People see the reviews; a crawler that reads only the HTML from the server does not. Check the page source for a phrase from one review to confirm. Then look in the app settings for an option that writes review data to metafields or renders a server-side block, which puts at least the rating and some review text into the HTML.
4. Are collapsible tabs on product pages a problem for AI crawlers?
It depends on how they are built. The collapsible blocks in most current Shopify themes put the full text in the HTML and only hide it visually until clicked, so crawlers receive it. Tabs added by some apps load their content from the app servers only when opened, so the text is not there at all. View the page source and search for text from inside a closed tab to find out which kind you have.
5. Should I rewrite supplier product descriptions for AI?
For your most important products, yes. Supplier descriptions are often identical across many stores, rarely say who the product suits and often leave the key facts in an image. A clear opening paragraph with what the product is, who it is for and its main measurements or materials gives any reader, human or machine, a precise summary to work from. There is no need to rewrite a large catalogue at once; start with best sellers.
6. Can I add llms.txt to a Shopify store?
Not as a simple file upload, because Shopify does not let you place files at the root of your domain. Workarounds include serving the content from a page or template and redirecting the llms.txt address to it, or using an app built for the purpose. Remember that llms.txt is an optional proposal with limited confirmed support among AI providers, so fix store access, app content and product text first. The Shopify llms.txt guide covers the options.
7. Will these changes affect my Google Shopping or product listings?
They should only help. Server-rendered specifications, accurate structured data and a single canonical address per product are the same things Google uses for product results and Merchant Center matching. The main risk is structured data changes: if you remove a duplicate Product block, make sure the one that remains still includes price, availability and identifiers such as GTIN where you have them, and check Search Console for new errors after publishing.
The Agent Readiness Audit requests your page with real AI crawler user agents, checks robots.txt and llms.txt, reviews JSON-LD coverage and semantic HTML, tests how much depends on JavaScript and measures how easily the content can be extracted.
Open Agent Readiness Fixes โ