I've written here before about fixing robots.txt for the AI bots and checking your store's ChatGPT visibility with a free audit module. This post zooms out and puts the whole thing in one place: the four layers that decide whether an AI assistant can find, trust, and recommend your Magento store — and the honest data on which layers actually matter in 2026.
Default Magento 2 typically scores around 23% on an AEO audit across the stores I've measured. Not because anything is broken — because every one of these signals ships off by default and nobody flipped them on.
Here's the stack, in priority order.
Layer 1 — robots.txt: you're probably blocking the bots you want
The most common failure, and almost always accidental. A robots.txt written for Google in 2019 says nothing about the AI fleet, and some security/hardening configs block unknown bots — which now includes the crawlers feeding ChatGPT, Claude, Gemini, and Perplexity.
There's no single user-agent to allow. In 2026 you're dealing with ~10 distinct AI bots across four platform families. Minimal explicit allow-list:
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Google-Extended
Allow: /
Sitemap: https://yourstore.com/sitemap.xml
Key gotcha: Google-Extended is not Googlebot. Blocking it doesn't touch your Google ranking — it only governs whether Google's AI products may use your content. Tons of sites blocked it during the 2023–24 anti-scraper panic and never revisited. If you want AI visibility, reconsider it.
Highest-leverage 20 minutes in the whole stack. Do it first.
Layer 2 — JSON-LD: Magento ships the wrong format and skips the one field that matters
This one is Magento-specific and it's the difference between being eligible for AI Shopping answers and being silently dropped.
Default Magento 2 outputs product structured data as microdata, not JSON-LD. AI extraction systems strongly prefer JSON-LD — a clean, self-contained block they can parse without reconstructing meaning from scattered HTML attributes.
And the field that quietly kills you:
offers.availabilityis frequently missing — and ChatGPT Shopping will skip a product with no availability signal entirely.
From the model's side, it's assembling a purchasable recommendation. A product it can't confirm is in stock is a liability, so it drops it. No warning. You just don't appear.
Correct, AI-friendly block:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Pre-Seasoned Cast Iron Skillet 12\"",
"sku": "CAST-SKILLET-12",
"brand": { "@type": "Brand", "name": "YourBrand" },
"offers": {
"@type": "Offer",
"url": "https://yourstore.com/cast-iron-skillet-12",
"priceCurrency": "EUR",
"price": "59.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "212"
}
}
</script>
Three traps:
- Don't inject schema via GTM. AI crawlers generally don't execute JavaScript, so tag-manager-injected schema is invisible to them even though it validates in DevTools. It must be server-rendered.
- Hyvä themes ship with zero product schema by default — neither microdata nor JSON-LD. If you migrated to Hyvä for speed, you may have silently dropped your structured data. Check now.
-
Bind
availabilityto real stock, never a hardcodedInStock. A model that recommends your out-of-stock item once learns to distrust your feed.
Verify it's in the raw HTML (no JS):
curl -s https://yourstore.com/your-product | grep -A30 'application/ld+json'
Nothing returned = the AI layer sees nothing.
Layer 3 — llms.txt: ship it, but not for the reason you've been sold
llms.txt is a Markdown file at your root giving AI systems a curated map of your store — to LLMs what robots.txt is to crawlers, but editorial rather than access-control.
Now the honest part. The "llms.txt boosts your AI rankings" pitch isn't supported by 2026 data:
- A 300k-domain study found ~10% adoption; among the 50 most AI-cited domains, only one had the file.
- One vendor logged 62,100 AI bot visits over 90 days — 84 hit
llms.txt. That's 0.1%. Another tracking 500M+ bot events found GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot and Google-Extended overwhelmingly skip it and crawl HTML directly. - OpenAI, Anthropic, and Perplexity haven't committed to reading it automatically.
So why ship it? Because it's a Business-to-Agent (B2A) play, not an SEO play. Agentic and IDE-style tooling already fetches it, agentic commerce is heading the same way, and conventions like this often get published before platforms formally commit (robots.txt predated official search-engine support). It's half a day of cheap insurance.
# YourStore
> Premium cast iron and carbon steel cookware. EU-based, ships across Europe,
> 30-day returns, mid-range pricing.
## Categories
- [Cast Iron Skillets](https://yourstore.com/cast-iron)
- [Dutch Ovens](https://yourstore.com/dutch-ovens)
## Buying Guides
- [Cast iron vs carbon steel](https://yourstore.com/guides/cast-vs-carbon)
## Policies
- [Shipping & Returns](https://yourstore.com/shipping)
Ship it, spend the half day, then stop optimizing it and put your energy into Layers 1, 2, and 4. And remember: a stale llms.txt is worse than none — wrong stock claims train models to distrust you.
Layer 4 — ACP & UCP: the part that's actually about money
The 2026 shift bigger than schema tweaks: AI is moving from discovery ("here are some pans") to transaction ("I bought the pan for you"). Two protocols define that layer, and Magento merchants — unlike Shopify merchants — wire it up themselves.
- ACP (OpenAI + Stripe) — live in ChatGPT since late 2025; settled into a discovery-and-feed role. You submit a spec-compliant feed, ChatGPT surfaces products, checkout uses delegated single-use payment tokens, with a transaction fee on completed Instant Checkout orders.
-
UCP (Google + Shopify + 20-plus partners incl. Walmart, Target, Visa, Mastercard) — announced at NRF Jan 2026, expanded at Google Marketing Live in May. Broader, protocol-agnostic (REST, MCP, A2A), spanning discovery → cart → checkout → post-purchase across Google AI Mode, Gemini, YouTube, Gmail. Agents discover capabilities via
/.well-known/ucp.
Reality check:
- It's not "pick one." They target different agent ecosystems; dual-protocol merchants reportedly see meaningfully more agentic traffic.
- Most groundwork is shared — clean schema, an accurate live feed, defined shipping/return/pricing policies are prerequisites for both and survive any spec reshuffle (ACP already pivoted away from native checkout once).
- Sensible Magento order: solid Layers 1–3 → ship ACP feed → prepare UCP manifest.
Shopify gets much of this by partnership default. Magento/Adobe Commerce: you own the stack — full control, full responsibility.
TL;DR priority order
- Fix
robots.txtso the AI fleet can crawl you. (~20 min, highest leverage) - Emit server-rendered JSON-LD with a live
offers.availability. (Hyvä users: confirm you have any schema.) - Verify with no-JS
curl. Not in raw HTML = invisible. - Ship
llms.txtas cheap B2A insurance, then leave it. - Build the shared commerce substrate, attach ACP, then UCP.
Google decides whether you rank. AI engines increasingly decide whether you exist in the answer. Two separate jobs now.
The open-source modules behind this (AEO audit CLI, llms.txt generator, multi-store AI description tooling) are on Packagist and documented at angeo.dev. The llms.txt and ACP/UCP figures come from independent 2026 studies — verify current spec versions as you implement, this area moves monthly.
If you've pulled your own AI-bot server logs on a Magento store, drop the numbers in the comments — real crawler data is still scarce and I'd like to compare.
Top comments (0)