Deep Dive

Why Shopify's own llms.txt isn't enough

Shopify built a real four-layer agentic commerce stack. Here's where the gap is, in Shopify's own words, and why it's not a knock on Shopify.

We spend most of our time at OtoRank thinking about one question: what does an AI shopping agent actually need to read before it will recommend a product? So we've spent a lot of hours inside Shopify's agentic commerce architecture, and we want to lay out what we found, because it's more thoughtful than most people realize, and it also leaves a gap that Shopify itself has publicly acknowledged.

This isn't a "Shopify dropped the ball" post. It's the opposite. Shopify built something real here. We just want to be precise about what it covers and what it doesn't, because that precision is the whole reason OtoRank exists.

Shopify's four layers

Shopify describes its own agentic commerce stack as four layers, and it's a genuinely useful way to think about the problem:

Data. Shopify Catalog syndicates titles, prices, inventory, and images out to AI platforms. This is live today.

Discovery. AI platforms surface products based on relevance, availability, and engagement signals. Also live, in the US, on select platforms.

Transaction. UCP and MCP handle cart creation, checkout, and Shop Pay directly inside tools like ChatGPT, Copilot, and Google AI Mode. Live and expanding in the US.

Fulfillment. Orders flow into the Shopify admin with AI channel attribution attached, so a merchant can see an order came from an AI agent instead of a normal browser session.

Read that list again. That's four layers of real, working infrastructure, built and shipped, that most merchants don't even know exists on their own store. The /llms.txt file that sits at your store's root right now already contains a UCP discovery endpoint, MCP tool definitions for searching the catalog and creating a cart, a full agent flow from discovery through checkout, and your store's policies. /agents.md gives AI agents an operator manual for how your store works. None of that is hypothetical. It's shipping today.

The gap Shopify names but doesn't fill

Here's the part that matters most, and we want to be exact about it because it's not our claim, it's Shopify's own documentation:

"Success requires thorough, specific structured product data in machine-readable formats."

Read that sentence carefully. Shopify is telling merchants, in their own words, that the Data layer alone (titles, prices, inventory counts, whatever raw HTML description you already had) is not sufficient. It's enough for an AI agent to confirm a product exists and complete a transaction. It is not enough for that same agent to form an opinion about whether your product is the right one to recommend.

There's a real difference between these two statements, and it's the entire gap:

The first sentence lets a transaction happen. The second sentence is the reason a transaction happens in the first place, and Shopify's own architecture, by its own admission, doesn't generate it. Shopify ships a Knowledge Base app for brand voice and store-level policy, which is useful and human-authored, but it operates at the store level, not the product level. Nothing in Shopify's default stack writes "thorough, specific structured product data" for each individual SKU. That's the exact language Shopify used to describe the requirement for success, and it's also, not coincidentally, the exact thing OtoRank generates.

Annotated diagram showing the store protocol block staying intact with a product-discovery block appended directly after it
Illustrative diagram, not an actual store's file.

Why this is a complement, not a competition

We want to be clear about something, because it would be easy to spin this into "Shopify's file is broken" and that's not true and not what we're saying. /.well-known/ucp, the actual commerce protocol endpoint, is intentionally not overridable. Shopify owns that layer on purpose, and it should stay that way. Meanwhile /llms.txt is deliberately built to be extended through Shopify's own templating system, specifically so the content layer can be filled in by merchants or by tools like OtoRank. That's not an oversight. That's the architecture working as designed.

So OtoRank writes into templates/llms.txt.liquid, the same file Shopify already generates, and appends the product discovery layer right after Shopify's protocol content, which stays completely untouched. One canonical file, at the URL AI crawlers already know to check, doing both jobs: Shopify's layer answers "how do I transact here," and the appended layer answers "what's actually worth buying." Nobody has to choose between the two. For a plainer walkthrough of what that looks like in practice, see what llms.txt actually is and what Shopify's version leaves out.

Where this goes next

Shopify has said publicly that the next phase of its roadmap is agent-to-agent negotiation, where a shopper's AI agent evaluates and negotiates directly with a retailer's agent, without a human clicking anything in the middle. When that becomes normal, the agent making the decision needs a reason to prefer one product over another before any negotiation even starts. A price and an inventory count won't give it that reason. Product-level content will.

That's the direction this is heading, and it's worth watching regardless of what tool you end up using to close the gap. If you want to see what OtoRank does with this specifically, feel free to book a short call, we're happy to walk through it.

Check your own store's AEO score

No login, no email, just a score and what to fix first.