Free guide · last checked 16 Oct 2026
Shopify llms.txt and robots.txt
A Shopify Online Store already serves /robots.txt and /llms.txt. You add a theme template only when the generated file is not the one you want. Adding robots.txt.liquid replaces the generated robots file.
llms.txt unless /llms.txt must differ from /agents.md. For one AI crawler, add templates/robots.txt.liquid, print robots.default_groups, and append a User-agent group. Put the price in Liquid, not in a script that runs after the page loads.
1. Read the files Shopify already serves
On the store's primary domain, open /robots.txt and /llms.txt. Shopify's theme docs say /llms.txt is served on the bare primary domain, with no locale and no Shopify Markets subfolder in front of it. Check example.com/llms.txt, not example.com/en/llms.txt.
The Help Center says the default robots.txt works for most stores, and that the file is at the root of the primary domain. The developer docs say themes do not include robots.txt.liquid or llms.txt.liquid until you add them. Paste the homepage or a product URL into the free AI crawler & raw-HTML checker to see the rules for GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, plus whether /llms.txt came back as plain text.
2. Add a crawler rule without throwing away Shopify's groups
Adding robots.txt.liquid replaces Shopify's generated output. The developer tutorial says to save a copy of the current /robots.txt and compare it with the template before you publish. The Help Center says the same thing from the admin:
- Go to Online Store.
- On the theme you will publish, open Edit code. The developer docs say Online Store → Themes → … → Edit code.
- Add
templates/robots.txt.liquid. In the code editor that is Templates → New file, namedrobots.txt.liquid. The Help Center also describes Add a new template and choosing robots.
The template cannot be a JSON template. It only has these Liquid objects: robots, group, rule, user_agent, sitemap and request. Shopify says to print the default groups rather than replace the whole file with plain text. The rendered template does not always match the generated file exactly. Their Help Center gives a concrete case: a template that reprints older default groups can still emit Disallow: /search and Disallow: /policies/ after the generated file no longer has those lines. To go back to the current generated file, delete robots.txt.liquid.
Print the defaults, then add a crawler the way their "block certain crawlers" example adds discobot. The user-agent tokens below are the ones you write. Shopify's tutorial does not ship a GPTBot preset.
{% for group in robots.default_groups %}
{{- group.user_agent }}
{%- for rule in group.rules -%}
{{ rule }}
{%- endfor -%}
{%- if group.sitemap != blank -%}
{{ group.sitemap }}
{%- endif -%}
{% endfor %}
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
A bot that has its own User-agent group uses that group. If you need the same path blocks as the * group, repeat those Disallow lines inside the new group. Google's robots.txt documentation is the reference Shopify's tutorial points at for how groups work. Save the template on the published theme, fetch /robots.txt again, and diff it against the copy you saved.
Host-specific rules are documented only for Shopify Markets domains, using request.host. Skip that unless you actually have more than one market host.
3. llms.txt, agents.md and llms-full.txt
Shopify's llms.txt.liquid doc says /llms.txt is an agent-discovery file and an alternate URL for /agents.md, which is the canonical document. By default Shopify manages /llms.txt by mirroring /agents.md. The template is not in themes because that managed file is what they say most stores should keep.
Lookup order for /llms.txt:
llms.txt.liquid, if you added itagents.md.liquid, if you added it- The Shopify-generated default
A dedicated llms.txt.liquid changes /llms.txt only. /agents.md and /llms-full.txt stay as they are. Their docs say not to add llms.txt.liquid unless that URL must diverge. To change all three together, edit agents.md.liquid. /llms.txt then falls back to it.
Both templates render with a restricted Liquid context: only request and agents. shop, articles and collections are not injected. This is the example Shopify publishes:
# {{ agents.store_name }}
> Agent-discovery summary. The canonical, full description is at {{ agents.store_url }}/agents.md.
- UCP discovery: {{ agents.ucp_discovery_url }}
- MCP endpoint: {{ agents.mcp_endpoint_url }}
- Sitemap: {{ agents.sitemap_url }}
Create the file from Online Store → Themes → Edit code → Templates → New file, named llms.txt.liquid. After it is on the published theme, request /llms.txt on the primary domain. The checker wants a non-empty text body and HTTP 200. An HTML document at that URL does not count.
4. Prices in the HTML Shopify returns
Shopify's performance guide, "Render essential content in Liquid and HTML, not JavaScript," says the initial view of every page should be Liquid and HTML. Their before-and-after shows a product title, description and price rendered by Liquid. The price line they publish is:
{{ product.selected_or_first_available_variant.price | money }}
The money filter formats that number with the store's HTML-without-currency setting. Their sample output for a price of 1000 is $10.00 in the HTML. They also say that if the page is blank, or missing the product title, images, prices or navigation until JavaScript runs, that content has to move into the Liquid template.
The product template (or a section it references, when the template is JSON) is where that markup belongs. Variant changes can be loaded later through the Section Rendering API. The first response should already contain the selected variant's price.
In our 14 Oct 2026 check, 29 of 46 usable homepages had no price-like text in the raw HTML. A Shopify product page can still pass while the homepage does not, so check the URL that actually shows the price.
5. Verify
- Fetch
/robots.txt,/llms.txtand/agents.mdon the primary domain. - Diff robots.txt against the copy from before the template.
- Paste the product URL into the checker and confirm the price string is in the visible HTML.
Want the full check?
Every AI Visibility Report ($49 PDF, generated by our software) includes a technical check of the HTML and robots.txt, plus what Perplexity and Grok answer for 10 buyer questions. Or request a free mini report.
More platform guides
- How to block or allow AI bots on Cloudflare
- Webflow robots.txt for GPTBot and other AI crawlers
- WordPress robots.txt for AI crawlers
- Next.js robots.txt and llms.txt
- Wix robots.txt and llms.txt for AI crawlers
- AI crawler & raw-HTML checker
Sources
Last checked 16 Oct 2026 against Shopify's developer docs and Help Center.
- Shopify, Customize robots.txt: shopify.dev/docs/storefronts/themes/seo/robots-txt
- Shopify, robots.txt.liquid: shopify.dev
- Shopify Help Center, Editing robots.txt.liquid: help.shopify.com
- Shopify, llms.txt.liquid: shopify.dev
- Shopify, Render essential content in Liquid and HTML, not JavaScript: shopify.dev
- Shopify, money filter: shopify.dev/docs/api/liquid/filters/money
- Google, How Google interprets the robots.txt specification: developers.google.com
- Our data: 60-homepage check, 14 Oct 2026.
Independent guide; not affiliated with Shopify. Product names are trademarks of their owners.