llms.txt on Shopify
Every Shopify store already answers /llms.txt with a file Shopify generates. What that default contains, how a theme template replaces it, and how to tell which one your store is serving.
Shopify serves the root files it has built features for. It generates /agents.md for every store, points /llms.txt and /llms-full.txt at that content by default, and lets a theme template override any of the three.
Serving /llms.txt from Shopify.
Read the file your store already serves
Shopify generates an /agents.md for every store, and /llms.txt and /llms-full.txt mirror that content unless a theme template says otherwise. The first question is not how to add a file, then, but what your store is already handing to AI clients. Fetch both paths and read the first lines.
curl -s https://your-custom-domain.com/llms.txt | head -10
curl -s https://your-custom-domain.com/agents.md | head -10Decide whether the default is good enough
Shopify's default describes how agents can interact with your store. It is written for shopping agents rather than as an index of your best content, and every store that has not overridden it serves the same opening line - which is how you spot one: in a probe of the 10,000 most popular sites, most Shopify stores serving a file were serving that default unchanged. If your store has guides, documentation or a brand story worth pointing at, the default is not pointing at them.
Override it with a theme template
Add templates/llms.txt.liquid to your theme and Shopify serves that instead. The lookup order is llms.txt.liquid, then agents.md.liquid, then Shopify's generated default, so one agents.md.liquid covers all three paths and a dedicated llms.txt.liquid is only worth adding when /llms.txt should differ from /agents.md. The template takes text, Markdown and Liquid, it cannot be a JSON template, and the only objects available inside it are request and agents - there is no looping over collections or products here.
# {{ request.host }}
> One sentence on what this store sells and who it is for.
## Guides
- [Size guide](https://{{ request.host }}/pages/size-guide): How our sizes run, with measurements
- [Care instructions](https://{{ request.host }}/pages/care): Washing and storage by material
## Policies
- [Shipping and returns](https://{{ request.host }}/policies/refund-policy): Windows, costs, and how to start a returnCheck the domain customers actually use
A template only takes effect on the published theme, and the file is served from the bare primary domain. Fetch it there rather than on .myshopify.com, confirm it comes back as text rather than your storefront HTML, and run the URL through a checker that reads the body.
What Shopify gets wrong.
The failures below are specific to Shopify. A generic llms.txt guide will not mention any of them.
Shopify already answers the path, so a 200 proves nothing
The Shopify-specific trap. Because the platform mirrors /agents.md at /llms.txt on every store, a checker that only reads the status code reports a file on a store where nobody has written a word of one. Read the body before counting it as done - and apply the same scepticism to an app that claims to have added the file, because what it changed may be a page, or nothing at all.
The .myshopify.com domain versus your custom domain
Anything you set up is reachable on both hostnames, and Shopify redirects the .myshopify.com one to whichever domain you have set as primary. Test on the domain customers and crawlers actually use, or you will validate a URL nobody visits.
A theme change takes your template with it
llms.txt.liquid, agents.md.liquid and robots.txt.liquid all sit in the theme's templates/ folder, and templates/ is the one directory Shopify leaves out of the code edits a theme update carries over. The update does say so - it reports that code edits could not be included - but the file is gone all the same, and how you move a theme decides it: Shopify documents a CLI or ThemeKit push as preserving robots.txt.liquid, while a theme uploaded through the admin does not import it at all. Refetch the path after any theme change, because falling back to Shopify's default looks exactly like nothing having happened.
Blocking AI crawlers in robots.txt while inviting them elsewhere
Shopify generates the default robots.txt and says it updates those rules regularly, but it documents no AI user-agent among them, and its own help pages say a store can be indexed by search engines and LLMs as it ships. So a block on AI clients is very likely one somebody added in robots.txt.liquid rather than a platform default - and if you publish an index for those clients while telling them to stay out, the block is the half they obey. Worth knowing either way: blocking crawlers does not stop your products being syndicated through Shopify Catalog.
Next to read.
Questions, answered.
Can you add an llms.txt file to Shopify?
What is the difference between llms.txt and agents.md on Shopify?
Where does Shopify put files I upload in Settings, then Files?
Does Shopify block AI crawlers by default?
LintPage is not affiliated with any platform or plugin named on this page. The claims here were last checked against vendor documentation on 2026-09-18. Settings and defaults move quickly, so confirm against your own install before relying on one.
An llms.txt will not fix a site AI cannot read.
Before writing an index for AI clients, check that they can fetch your pages at all. LintPage runs 60 checks against a URL in about 30 seconds - free, no signup.
run a full scan →