# GEO barometer: what 475 Shopify stores actually do
> Measured across 475 French Shopify stores: 97.9% have an llms.txt, 0% an agent-card.json, 4.6% structured shipping. The GEO checklist against the field.
- Canonical HTML: https://verityscore.io/en/blog/geo-barometer-shopify/
- Markdown alternate: https://verityscore.io/en/blog/geo-barometer-shopify.md
- Language: en
- Content type: blog
- Published: 2026-08-13
- Updated: 2026-08-14
- Tags: geo, barometer, llms-txt, agents-md, schema-org, robots-txt, shopify, agent-card, structured-data
## The problem in 60 words

The GEO checklist in circulation fits in three lines: publish an `llms.txt`, expose your `/.well-known/` files, open your `robots.txt` to AI crawlers. We tested it against 475 French Shopify stores. Result: **97.9% already have an llms.txt without having written it, 0% have an agent-card.json, and 0.4% block an AI search crawler**. The checklist describes the layer the platform already handles.

### What we measured

On 13 August 2026 we read the discovery files of 480 French Shopify stores, over plain HTTP with the user-agent `VerityScoreBot/1.0`, no JavaScript execution. The product page layer reuses our [13 August measurement across 457 pages](/en/blog/customer-reviews-invisible-ai-engines/).

**Discovery layer, what the platform provides** (475 reachable stores):

| File | Present |
|---|---|
| `robots.txt` | 475 / 475 (100%) |
| `llms.txt` | 465 / 475 (97.9%) |
| Valid `sitemap.xml` | 464 / 475 (97.7%) |
| `agents.md` | 464 / 475 (97.7%) |
| `/.well-known/agent-card.json` | **0 / 475 (0%)** |

**robots.txt layer, what the merchant decides**:

| Rule | Stores |
|---|---|
| Names at least one AI crawler | 10 / 475 (2.1%) |
| Blocks a training crawler | 5 / 475 (1.1%) |
| Blocks an AI search crawler | 2 / 475 (0.4%) |
| Blocks a shopping agent | 2 / 475 (0.4%) |
| Global `Disallow: /` | 3 / 475 (0.6%) |

**Product page layer, what decides whether an AI can quote you** (457 pages):

| Signal | Present |
|---|---|
| `Product` JSON-LD | 86.9% |
| Brand | 85.6% |
| Price | 67.4% |
| Availability | 66.7% |
| SKU | 35.7% |
| GTIN | 10.9% |
| `AggregateRating` | 6.1% |
| Structured shipping | 4.6% |
| Structured return policy | 4.6% |

**Limits, and they matter.**

The list of 480 stores was compiled on 25 June 2026 from the Shopify partner directory: these are agency clients, so likely better maintained than average. The files themselves were all re-read on 13 August. The seven-week gap between building the list and running the measurement explains the 5 stores out of 480 that had become unreachable.

A file may have been published since the test. Finally, we queried each store with an identifiable user-agent rather than impersonating an AI crawler: a store that varies its response by user-agent appears here under its "unknown bot" face.

### Check against an independent sample

Because the main list comes from a single source and is seven weeks old, we re-ran the measurement the same day on a second corpus, built independently and without going through agencies: 22 French Shopify stores identified by search then verified one by one (platform signature and product endpoint).

| Signal | Main corpus | Independent corpus |
|---|---|---|
| `robots.txt` | 100% (475) | 100% (22) |
| `llms.txt` | 97.9% | 90.9% |
| `agents.md` | 97.7% | 86.4% |
| `agent-card.json` | 0% | 0% |
| Blocks an AI search crawler | 0.4% | 0% |
| SKU | 35.7% (457) | 36.8% (19) |
| GTIN | 10.9% | 10.5% |
| `AggregateRating` | 6.1% | 0% |

The orders of magnitude hold, and SKU and GTIN land within a point of each other. The second corpus percentages should be read with caution: on 19 to 22 observations the confidence interval is wide and a single site moves the rate by 4 to 5 points. This check does not replace the main measurement, it verifies that the main measurement does not depend on how the sample was built.

<figure>
  <img src="/diagrams/barometre-geo-couches-en.svg" alt="The two GEO layers measured across 475 French Shopify stores: a discovery layer provided by the platform at 97.7% and above, except agent-card.json at 0%, against a product page layer falling from 86.9% to 4.6%" width="800" height="420" loading="lazy" decoding="async" style="width:100%;height:auto;" />
  <figcaption style="text-align:center;font-size:0.875rem;color:#6B6B76;margin-top:0.5rem;">Figure 1: the layer the platform handles sits at 98%. The layer deciding whether an engine can quote your product falls between 4.6% and 67%.</figcaption>
</figure>

## llms.txt is not an action, it is a factory default

This is the most counter-intuitive result. Almost every store has the file the GEO consulting industry recommends creating, and almost none of them created it.

Shopify serves `/llms.txt`, `/llms-full.txt` and `/agents.md` natively, and documents customising them since 28 May 2026 ([developer changelog](https://shopify.dev/changelog/customize-llmstxt-llms-fulltxt-and-agentsmd)). The content is generated from store data: name, URL, sitemap link, policies and discovery endpoints.

Two measurements confirm it on our sample:

- **97% of the `llms.txt` files observed follow the platform template format.** Same header, same structure, same opening section, with the store name injected.
- **`llms.txt` and `agents.md` are the same document.** Across the 460 stores where both files could be compared, the median gap is 43 bytes, and 97.8% differ by less than 50 bytes. The difference is one line, the one where the file introduces itself: `/llms.txt` states that it mirrors `/agents.md`, which declares itself canonical.

Customising these files remains possible, through `llms.txt.liquid` or `agents.md.liquid` templates ([Shopify documentation](https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid)). But until that work is done, publishing an `llms.txt` is not a GEO lever on Shopify: it is already there, and it is identical at your competitors.

Worth recalling in passing: Google states explicitly that no machine-readable file and no particular markup is required to appear in AI Overviews or AI Mode ([Google Search Central](https://developers.google.com/search/docs/appearance/ai-features)).

## The file everyone recommends, nobody publishes

Zero stores out of 475 expose a `/.well-known/agent-card.json`.

This is not a measurement artefact: our detector does return a valid file on sites that publish one, and a 404 on all 475 stores in the sample. The result is therefore clean, and worth stating plainly given how much room these discovery files now occupy in GEO recommendations.

Our reading: this is not where the priority sits. A file describing your capabilities to an agent is useless while the product page it points to exposes neither a structured price, nor a rating, nor delivery terms. The logical order runs from data to discovery, not the other way round.

## Blocking AI crawlers: a problem affecting one store in 250

The advice to "check that your `robots.txt` does not block AI crawlers" appears in almost every guide. Measured, it covers very few cases.

2.1% of stores name an AI crawler in their `robots.txt`. 1.1% block a training crawler, which remains a defensible choice: you give away your content for nothing in return. 0.4%, two stores out of 475, block an AI search crawler or a shopping agent, the two families whose blocking actually costs visibility or a customer.

These figures extend our [July measurement across 432 stores](/en/blog/check-blocked-ai-crawlers-store/), which found a single AI search crawler block. The order of magnitude is stable month on month: Shopify ships a permissive `robots.txt` by default, and breaking it takes manual intervention.

The check is still worth two minutes. It cannot amount to a GEO strategy.

## Where the gap actually sits

Put the two layers side by side.

| Layer | Signal | Stores |
|---|---|---|
| Discovery | `llms.txt` | 97.9% |
| Discovery | `agents.md` | 97.7% |
| Discovery | `sitemap.xml` | 97.7% |
| Product | `Product` JSON-LD | 86.9% |
| Product | Price | 67.4% |
| Product | Availability | 66.7% |
| Product | GTIN | 10.9% |
| Product | `AggregateRating` | 6.1% |
| Product | Shipping and returns | 4.6% |

The layer the platform handles sits at 98%. The layer that decides whether an engine can quote your product falls between 4.6% and 67%.

A conversational engine asked to compare three products needs four things: a price, an availability value, an identifier to recognise the same item elsewhere, and something to establish trust. On our sample, the price is missing in a third of cases, the product identifier in nine out of ten, and the rating in more than nine out of ten.

This is not a discovery-file problem. It is a matter of product data published in a format engines read, in JSON-LD or microdata, both accepted by Google ([Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)).

## What we take from it

Three conclusions, in the order we would apply them on a store.

**Do not bill for an llms.txt.** On Shopify it already exists, it is generated, and it looks like everyone else's. Customising it can make sense once the rest is in place, not before.

**Handle the product layer first.** Price, availability, identifier, rating, shipping, returns. That is where the double-digit gaps are, and that is what an engine quotes when it recommends an item.

**Check the discovery layer, but do not build on it.** Two minutes on `robots.txt` and `sitemap.xml` are enough. Beyond that, the time is better spent on product pages.

This measurement will be re-published on the same corpus in February 2027, with the same method, so the change is comparable.

*Kamil Kaderbay, founder of Verity Score. Measured 13 August 2026; method and limits detailed above.*

---

## Related articles

- [Customer reviews: 1 in 4 equipped stores is silent to AI](/en/blog/customer-reviews-invisible-ai-engines/) - The 457 product page measurement
- [Blocked AI crawlers: the verification procedure](/en/blog/check-blocked-ai-crawlers-store/) - The July measurement across 432 stores
- [Shopify, agents.md, llms.txt and UCP: what really changes](/en/blog/shopify-agents-md-llms-txt-ucp-ai-commerce/)
- [AggregateRating: the rating AI engines actually read](/en/kb/aggregate-rating/)

---

**Want to know where your store sits on these signals?** The Verity Score Shopify app measures the same layers across your catalog, product page by product page. [Install Verity Score from the Shopify App Store →](https://apps.shopify.com/verity-score)
## FAQ

### Do I need to publish an llms.txt for GEO on Shopify?

On Shopify the question no longer applies: 97.9% of the stores measured already serve one, because the platform generates it natively, with template customisation documented since late May 2026. Publishing an llms.txt is therefore not a GEO action on Shopify, it is a starting state. The file can be customised through an llms.txt.liquid template, but 97% of the files observed still follow the platform default.

### What is the difference between llms.txt and agents.md on a Shopify store?

In practice, none. Across the 460 stores where we could compare both files, they differ by a single self-referential line, a median gap of 43 bytes. Shopify serves the same document at both addresses, one simply stating that it mirrors the other. Customising them separately requires two distinct Liquid templates.

### How many stores block AI crawlers in robots.txt?

Very few. Across 475 stores, 2.1% name at least one AI crawler in robots.txt, 1.1% block a training crawler such as GPTBot or ClaudeBot, and 0.4% block an AI search crawler or a shopping agent. The common advice to open your robots.txt to AI crawlers therefore addresses a problem affecting roughly one store in 250.

### What is an agent-card.json and should I publish one?

It is a discovery file placed under /.well-known/ describing a site's capabilities to agents. In our sample no store publishes one: 0 out of 475. We do not recommend making it a priority. The signal is useless while the product page it points to exposes no structured price, no rating and no delivery terms, and that is where the real gap sits.

### Which GEO signals are most often missing on Shopify product pages?

In order of scarcity across 457 pages measured: structured shipping and return policy (4.6% each), AggregateRating attached to the product (6.1%), GTIN (10.9%) and SKU (35.7%). Price and availability, the two most basic fields for comparing a product, appear on only about two thirds of pages.

### Do these figures apply to non-Shopify stores?

Not for the discovery layer, which depends directly on what the platform generates: a store on another stack will have neither llms.txt nor agents.md by default. Yes for the product layer mechanism: anything not written into the served HTML stays invisible to an engine that does not render JavaScript, whatever the platform.

### How do I check these signals on my own store?

Open your-store.com/robots.txt, /llms.txt, /agents.md and /sitemap.xml in a browser: within seconds you will see what the platform serves on your behalf. For the product layer, open a product page source with Ctrl+U, not the element inspector, and search for aggregateRating, gtin, shippingDetails and hasMerchantReturnPolicy.

## Sources

- [Shopify: customize /llms.txt, /llms-full.txt and /agents.md (developer changelog, 28 May 2026)](https://shopify.dev/changelog/customize-llmstxt-llms-fulltxt-and-agentsmd) (official)
- [Shopify: agents.md.liquid template, theme documentation](https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid) (official)
- [Google Search Central: AI features, no special structured data required](https://developers.google.com/search/docs/appearance/ai-features) (official)
- [Google Search Central: review snippet structured data, AggregateRating required](https://developers.google.com/search/docs/appearance/structured-data/review-snippet) (official)
- [Google Search Central: JSON-LD, microdata and RDFa are equally supported](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data) (official)
- [Vercel and MERJ: AI crawlers do not render JavaScript (17 December 2024)](https://vercel.com/blog/the-rise-of-the-ai-crawler) (industry)

