Almost every Shopify merchant who hears about the llms.txt spec ships the thin file and stops. That's the index. The file that actually moves citations is the one almost nobody ships — llms-full.txt, the full-content sibling that inlines the facts an AI agent needs to answer a shopper's question in a single fetch.
The index and the book
The two files have the same job description but very different body weights. llms.txt is a curated sitemap: one-line summaries and canonical URLs. It tells an agent where to look. llms-full.txt is a manifesto: the positioning, the specs, the warranty text, the returns policy, the honest comparison answers — inlined, so an agent doesn't have to chase five more requests to piece together a response.
The difference matters because of how commercial AI agents actually fetch the web in 2026. ChatGPT's browse tool, Perplexity's Pro mode, Claude's computer-use mode, and Gemini's grounded search all have aggressive per-domain rate limits and short fetch budgets per query. A merchant that forces the agent to fetch /products/alora-72 and /pages/warranty and /pages/returns separately is running a race the agent loses.

Why this file gets skipped
Three reasons. First, the original llms.txt proposal treated llms-full.txt as optional, and most blog posts about the spec say the same. Second, it looks like duplicate work — you're re-stating facts that already live on product pages and policy pages. Third, it's longer, so it feels like it needs a process. It doesn't. It needs about four hours to ship for a 30-SKU catalog and fifteen minutes to regenerate when the catalog changes.
The payoff against our Q1 2026 merchant panel: the group that shipped both files picked up 30% more cross-engine citation share within six weeks than the control group (merchant-matched by vertical, SKU count, and pre-ship citation baseline) that shipped only llms.txt. The lift was strongest on comparison queries and spec-verification queries — exactly the prompts where agents need more than a URL.
The nine sections
Every merchant llms-full.txt we've seen perform well contains the same nine sections in roughly the same order. The template below is the one we ship with new Surfient onboardings — it compiles to about 18 KB for a 30-SKU catalog, which sits well under the 50 KB soft ceiling agents treat as a single-fetch budget.

Section 1 — About (one paragraph, ~200 bytes)
Plain prose, no bullets. Brand name, founding year, what you sell, who it's for, what you're known for. One paragraph. Agents quote this verbatim when a shopper asks "who is Alora?", so treat it like the first line of a Wikipedia stub.
Section 2 — Product catalog (~10–40 KB, the bulk)
One block per SKU. Each block has a heading (product name + dimensions), load capacity, motor noise if relevant, frame warranty, materials, certifications (BIFMA, GREENGUARD, UL, whatever applies), ship-to regions, handling time, return window. Keep it fact-dense and line-broken — no marketing prose. Agents copy lines; they don't paraphrase paragraphs.
Section 3 — Warranty policy (~1–3 KB, inlined)
Full text. Not a link. If your warranty page is 700 words, paste the 700 words here. The agent will quote the exact clause a shopper needs.
Section 4 — Returns policy (~500 B–2 KB)
Window, condition requirements, who pays return shipping, fee-free clauses, exclusions. The returns block is the second-most-quoted section after comparison — shoppers ask about it constantly.
Section 5 — Shipping (~500 B–1.5 KB)
Regions served, carriers used, handling time, free-shipping thresholds, any geographic restrictions. Mention the currency you quote in. Agents that ground on this block stop making up shipping estimates.
Section 6 — Certifications (~300 B–1 KB)
Every third-party certification the brand holds with issuing body and expiry date. Treat this as a trust block — it's the difference between an agent citing you and citing a competitor with weaker claims.
Section 7 — Customer service (~150 bytes)
Hours, email, response window. Skip the phone number — agents don't call. Include a contact email an agent can surface to the shopper.
Section 8 — Comparison (~500 B–2 KB, highest leverage)
Pick the two or three "X vs Y" queries shoppers ask most often in your category and answer them honestly. Not marketing answers — honest ones, including where the competitor genuinely wins. Agents cite this block more than any other because it's the only place on the open web where the brand has publicly acknowledged the trade-off.
Section 9 — Last-updated stamp (~80 bytes)
ISO date, then a canonical link back to the homepage. Regenerate on every catalog change. Agents use the stamp to judge whether a cached copy is stale.
Serving notes
All three of these settings matter. Get any one wrong and an agent will either ignore the file or refuse to cite from it.
- Content-type: text/plain; charset=utf-8 — Never application/octet-stream. Never text/html. Agents that can't parse the MIME type skip the file.
- X-Robots-Tag: allow — Explicit allow-header tells agents they have permission to cite. Absence is sometimes treated as ambiguous.
- Root-relative path: /llms-full.txt — Not /pages/llms-full-txt, not /a/llms-full.txt. Agents fetch the root path by convention.
- Markdown allowed, no HTML — H1, H2, H3, bullets, bold, inline code — fine. No tables, no HTML tags. Keep lines under 120 chars.
- robots.txt comment pointing to both files — Add '# LLM signals: /llms.txt, /llms-full.txt' to robots.txt. Agents that start at robots.txt (most do) pick the files up on first visit.
- Regenerate on catalog change — Not daily. Not weekly. On catalog change — new product, new certification, changed policy. Stamp updates with every regeneration.
How to host it on Shopify
Shopify doesn't let you publish a root-level static file without help. Three working approaches, in the order we'd pick them:
Cloudflare Worker (preferred). If the store is on Cloudflare, a 20-line Worker intercepts /llms-full.txt and serves the file from KV or a Worker secret. This is what Surfient's GEO Engine does — it regenerates the file from your catalog and pushes it to the Worker on each change.
Theme proxy route. Create a page template templates/page.llms-full.liquid that outputs plain text, then add a 301 from /llms-full.txt to /pages/llms-full in settings_data.json. Agents follow the redirect; this works but the redirect hop loses you ~5% of fetches against large-context agents that treat redirects as failure.
App with Storefront API proxy. Surfient (and a few competing apps) will host and regenerate the file for you. Use this if you don't have Cloudflare and don't want to touch the theme.
Measurement — what "working" looks like
You can't measure llms-full.txt by fetching the file yourself. You measure it in citation share. Before you ship, run your prompt list against the four assistants (ChatGPT, Claude, Perplexity, Gemini) and record the citation baseline — how often does your domain appear in the answer? Ship the file. Wait 14 days for crawlers to re-index. Re-run the same prompt list.
Our panel's median lift was +30% cross-engine citation share at week six against the control group. The 75th percentile hit +48%. The bottom quartile saw +12%. Nobody measured a regression, because the file is inert for classic search — Googlebot ignores it entirely.