Shopify doesn't let you upload files to your domain root, so you can't just drop an llms.txt in place like on WordPress. You have three working options: install an llms.txt app from the App Store, serve the file from an edge layer like Cloudflare, or redirect /llms.txt to a hosted copy. Here's how to do each — plus what a store's llms.txt should actually contain.
Why Shopify makes this harder than other platforms
Shopify controls the web server. You can edit theme code and even customize robots.txt through the special robots.txt.liquid template — but there's no equivalent template for llms.txt, and files uploaded through Content → Files live on Shopify's CDN (cdn.shopify.com/...), not at yourstore.com/llms.txt. Since the llms.txt convention expects the file at your domain root, you need a workaround. All three below produce a working file; pick based on what you already have.
First: create the file content
Whatever method you choose, build the file itself first — our free llms.txt Generator produces a spec-compliant file from a form. For a store, resist listing products (they churn constantly). List what answers buyer questions:
# Your Store Name
> One line: what you sell and who it's for.
## Shop
- [All collections](https://yourstore.com/collections): Main product categories
- [Best sellers](https://yourstore.com/collections/best-sellers): Most popular items
## Customer questions
- [Shipping](https://yourstore.com/pages/shipping): Costs, times, regions
- [Returns](https://yourstore.com/pages/returns): Policy and process
- [Size guide](https://yourstore.com/pages/sizing): Fit charts
Method 1: An llms.txt app (easiest)
Search the Shopify App Store for "llms.txt" — several apps now generate and serve the file at the correct root path (they use Shopify's app-proxy mechanism to answer requests for /llms.txt). Install, paste or generate your content, done.
Trade-offs: the usual app considerations — another subscription line item on some of them, and auto-generated output tends to be a product dump rather than a curated file. If the app auto-generates, review what it produces against the spec with our validator; curation is the whole point of the file.
Method 2: Serve it from the edge (best if you use Cloudflare)
If your DNS runs through Cloudflare (or any CDN/edge platform in front of your store), you can answer /llms.txt before the request ever reaches Shopify:
- In Cloudflare, create a Worker (or a Snippet/Rule on newer plans) matched to
yourstore.com/llms.txt. - Have it return your file content with
content-type: text/plain:
export default {
async fetch() {
const body = `# Your Store\n\n> What you sell...\n\n## Key pages\n- [Shipping](https://yourstore.com/pages/shipping): Costs and times\n`;
return new Response(body, {
headers: { "content-type": "text/plain; charset=utf-8" },
});
},
};
- Deploy, then visit
yourstore.com/llms.txtto confirm.
Trade-offs: requires Cloudflare (or similar) in front of your store, and updating the file means editing the Worker. But it's free, app-free, and rock-solid.
Method 3: Redirect to a hosted file (works anywhere)
Host the file somewhere you control — a GitHub raw URL, an S3 bucket, any static host — then create a redirect from /llms.txt to it. In Shopify admin: Content → Menus → URL Redirects (or Online Store → Navigation → URL Redirects, depending on admin version) → redirect path /llms.txt to your hosted file's URL.
Trade-offs: this is the least clean option — the file technically lives on another domain, and a crawler must follow the redirect. Most fetchers do follow 301s, so it works in practice, but prefer Methods 1–2 when available. It's the universal fallback for any locked-down platform.
Verify whichever you chose
- Open
yourstore.com/llms.txtin a browser — you should see plain Markdown, not a styled page, a 404, or your password page (if your store is password-protected pre-launch, crawlers can't read the file either). - Run it through the llms.txt Validator to confirm the structure parses.
- While you're at it, check your store's AI-crawler posture overall with the AI Crawler Access Checker — Shopify's default robots.txt allows most AI bots, but if you've customized
robots.txt.liquid, confirm you haven't blocked the assistants that send shoppers your way.
Why bother for a store?
Shopping queries are moving into AI assistants — "best ultralight tent under $300", "does X store ship to Canada" — and assistants answer from the pages they can find and parse. An llms.txt pointing at your shipping, returns, and category pages makes those answers more likely to come from your authoritative pages rather than a third party's stale summary. It's a 30-minute job that compounds; see what llms.txt is and real examples for the bigger picture.