# Magento AEO Checklist 2026: 40 Checks

> Every check that decides if AI can reach, read and use a Magento 2 store: robots.txt, llms.txt, schema, feeds, UCP, MCP and measurement. With verify steps.

Source: https://angeo.dev/magento-aeo-checklist/
Updated: 2026-09-29

Checklist

# Magento AEO Checklist 2026: 40 Checks

**A single page with every check that decides whether AI systems can reach, read and use a Magento 2 store** - from robots.txt and llms.txt to Product schema, feeds, agent endpoints and measurement. 40 checks, each with a way to verify it and a link to the full guide.

**In one sentence**
Everything a Magento store needs for AI search, in the order to do it, with a check you can run for each item.

Work top to bottom. Each check says what to do, how to verify it, and links to the full guide. Every item has its own anchor (#1 to #40), so you can link to a single check.

**Where to start**
Sections 1 to 3 decide whether AI systems can read the store at all. Do them first. Section 5 is a later stage: agentic commerce is early, and being early is a cost.

## Access: can AI crawlers reach the store?

1. **Allow the AI search crawlers.** `OAI-SearchBot`, `Claude-SearchBot` and `PerplexityBot` have `Allow: /`.
**Check:** `curl -s https://yourstore.com/robots.txt`
Guide: [robots.txt for AI crawlers](https://angeo.dev/magento-2-robots-txt-chatgpt-gemini-ai-bots/) - #1

2. **Repeat your Disallow lines in every named group.** A named group does not inherit from `User-agent: *` (RFC 9309). Order in the file does not matter.
**Check:** Read each AI group: checkout, customer and search paths are there too
Guide: [AI crawlers for Magento 2](https://angeo.dev/docs/ai-crawlers/) - #2

3. **Allow the user-triggered fetchers.** `ChatGPT-User`, `Claude-User`, `Perplexity-User` open a page because a person asked.
**Check:** Same file
Guide: [AI crawlers for Magento 2](https://angeo.dev/docs/ai-crawlers/) - #3

4. **Decide about training on purpose.** `GPTBot`, `ClaudeBot`, `CCBot` are training crawlers. Blocking them does not remove you from AI search.
**Check:** Your choice is written down
Guide: [GPTBot vs OAI-SearchBot](https://angeo.dev/gptbot-vs-oai-searchbot/) - #4

5. **Treat Google-Extended as a token, not a crawler.** It controls Gemini training and grounding. It does not affect Search, AI Overviews or AI Mode.
**Check:** No Google-Extended rule meant to leave AI Overviews
Guide: [Google-Extended](https://angeo.dev/google-extended-definition/) - #5

6. **Check that no WAF or CDN rule blocks allowed bots.** A 403 or 429 blocks a bot that robots.txt allows.
**Check:** `grep -E "OAI-SearchBot|Claude-SearchBot|PerplexityBot" access.log`, then the status codes
Guide: [Free web scan](https://angeo.dev/ai-magento-audit/) - #6

7. **Point Sitemap lines at sitemaps only.** Never `Sitemap: .../llms.txt`. The newest `lastmod` should be recent.
**Check:** `curl -s https://yourstore.com/sitemap.xml | head`
Guide: [robots.txt for AI crawlers](https://angeo.dev/magento-2-robots-txt-chatgpt-gemini-ai-bots/) - #7

8. **Set the Search Console generative AI setting deliberately.** Include is the default. Exclude only with a reason.
**Check:** Search Console, Settings, Search generative AI
Guide: [Control AI Overviews](https://angeo.dev/control-ai-overviews-magento/) - #8

9. **Add a Content-Signal line if you want to state use.** For example `search=yes, ai-input=yes, ai-train=no`. A declaration, not enforcement.
**Check:** The line is in robots.txt
Guide: [Content Signals and RSL](https://angeo.dev/content-signals-definition/) - #9

## Content: can AI systems read what you sell?

1. **Serve llms.txt at the root.** HTTP 200, `text/plain; charset=utf-8`, an H1 and a real one-line summary - not an empty `>`.
**Check:** `curl -sI https://yourstore.com/llms.txt`
Guide: [llms.txt](https://angeo.dev/llms-txt-definition/) - #10

2. **Follow llms.txt v2 where you can.** Markdown mirrors, `rel="alternate"` and `rel="describedby"`, and llms.txt links that point to the mirrors.
**Check:** `curl -sI https://yourstore.com/some-page/ | grep -i '^link'`
Guide: [Markdown mirror](https://angeo.dev/markdown-mirror-definition/) - #11

3. **Do not call llms-full.txt part of the spec.** It is an optional convention. Keep it small if you publish one.
Guide: [llms-full.txt](https://angeo.dev/llms-full-txt-definition/) - #12

4. **Publish llms.jsonl for the catalogue.** One product per line, regenerated by cron.
**Check:** `curl -s https://yourstore.com/llms.jsonl | head -3`
Guide: [llms.jsonl](https://angeo.dev/what-is-llms-jsonl-and-why-ecommerce-needs-it/) - #13

5. **Publish agents.md with your policy links.** Delivery, returns and privacy are the links an agent must be able to quote.
**Check:** `curl -s https://yourstore.com/agents.md`
Guide: [AGENTS.md](https://angeo.dev/agents-md-definition/) - #14

6. **Render the product description in the server HTML.** Not only inside a collapsed tab or after JavaScript.
**Check:** View source and search for the first sentence of the description
Guide: [The description AI cannot read](https://angeo.dev/magento-product-description-invisible-ai-chatgpt/) - #15

## Structured data: can a parser trust the product?

1. **Output Product JSON-LD on the server.** Not through Google Tag Manager.
**Check:** `curl -s PRODUCT_URL | grep -c 'application/ld+json'`
Guide: [Product JSON-LD for AI search](https://angeo.dev/magento-2-product-schema-json-ld-ai-search/) - #16

2. **Write availability as a full URI.** `https://schema.org/InStock`, not `InStock`.
**Check:** `curl -s PRODUCT_URL | grep -o '"availability":"[^"]*"'`
Guide: [offers.availability](https://angeo.dev/offers-availability-definition/) - #17

3. **Add sku, brand and GTIN or MPN.** These match your listing to the same product elsewhere.
**Check:** validator.schema.org on one product
Guide: [Product JSON-LD for AI search](https://angeo.dev/magento-2-product-schema-json-ld-ai-search/) - #18

4. **Publish return and shipping policies.** Store-wide on the Organization, exceptions on the Offer.
**Check:** Rich Results Test on one product
Guide: [Return and shipping schema](https://angeo.dev/magento-return-policy-shipping-schema/) - #19

5. **Use one @id graph.** One Organization `@id`, one Person `@id`, `#product` on products. No duplicate Organization or Article nodes.
**Check:** Search the page source for `"@id"`
Guide: [Entity @id](https://angeo.dev/entity-id-definition/) - #20

6. **On Hyvä, add the JSON-LD Hyvä does not emit.** Hyvä has Product microdata, but no JSON-LD, brand, GTIN, shipping or returns.
Guide: [What Hyvä emits](https://angeo.dev/hyva-theme-product-schema-gap/) - #21

7. **Use FAQPage only for visible Q&A.** Google shows no FAQ rich results since May 2026.
**Check:** The questions are visible on the page
Guide: [FAQPage after May 2026](https://angeo.dev/faqpage-schema-after-2026/) - #22

8. **Check canonical, hreflang and Open Graph.** Filter and sort URLs should not compete with the product page.
**Check:** Page source of a filtered category URL
Guide: [Magento 2 audit](https://angeo.dev/magento-2-audit/) - #23

## Feeds: can shopping surfaces use the catalogue?

1. **Generate an ACP feed with the nine required fields.** Price as `79.99 USD`. Variants as separate rows with a `group_id`.
**Check:** `bin/magento angeo:product-feed:generate`, then check three rows
Guide: [ACP product feed](https://angeo.dev/acp-product-feed-definition/) - #24

2. **Keep feed and page in step.** Same price and stock in both. Full snapshot at least daily.
**Check:** Compare one product in the feed and on the page
Guide: [ChatGPT Shopping for Magento 2](https://angeo.dev/magento-2-chatgpt-shopping-registration/) - #25

3. **Apply at chatgpt.com/merchants.** As of September 2026 there is a waitlist, and shopping is live for US users.
Guide: [ChatGPT Shopping for Magento 2](https://angeo.dev/magento-2-chatgpt-shopping-registration/) - #26

4. **Keep Google Merchant Center current.** Google's shopping surfaces lean on it.
**Check:** Merchant Center diagnostics
Guide: [How each AI finds products](https://angeo.dev/perplexity-vs-chatgpt-vs-gemini-how-each-ai-discovers-your-products/) - #27

## Agentic: can an agent act? (later stage)

1. **Publish a UCP profile only for what you serve.** Spec 2026-08-25, public keys in `keys[]`, no redirects, `{}` for empty registries.
**Check:** `curl -sI https://yourstore.com/.well-known/ucp`
Guide: [/.well-known/ucp](https://angeo.dev/well-known-ucp-definition/) - #28

2. **Check authority binding.** A `schema` URL on the wrong host is rejected silently.
**Check:** `bin/magento angeo:ucp:validate`
Guide: [Authority binding](https://angeo.dev/ucp-authority-binding/) - #29

3. **Start MCP read-only, keep it out of the page cache.** Add checkout tools only with server-side limits.
**Check:** `bin/magento angeo:mcp:tools`
Guide: [MCP for Magento](https://angeo.dev/magento-mcp-server/) - #30

4. **Plan for MCP 2026-07-28.** `server/discover` and per-request versions; no sessions.
Guide: [MCP 2026-07-28](https://angeo.dev/mcp-2026-07-28-magento/) - #31

5. **Serve an A2A Agent Card only if you declare A2A.** At `/.well-known/agent-card.json`, not the old `agent.json`.
**Check:** `curl -sI https://yourstore.com/.well-known/agent-card.json`
Guide: [A2A Agent Card](https://angeo.dev/a2a-agent-card-definition/) - #32

6. **Keep payments with your provider.** You stay merchant of record. The agent never holds the card number.
Guide: [Merchant of record](https://angeo.dev/merchant-of-record-definition/) - #33

## Measure: is it working?

1. **Run the audit and keep the score history.** 20 signals from inside, 14 from outside.
**Check:** `bin/magento angeo:aeo:audit`
Guide: [AEO score](https://angeo.dev/aeo-score-definition/) - #34

2. **Read the GA4 AI Assistant channel, plus a custom group.** The native channel is a lower bound.
**Check:** GA4, Traffic acquisition, Session default channel group
Guide: [GA4 AI Assistant channel](https://angeo.dev/ga4-ai-assistant-channel/) - #35

3. **Check Search Console and Bing AI reports.** Search Console shows AI impressions; Bing shows citations.
**Check:** Both reports, monthly
Guide: [How to measure AI visibility](https://angeo.dev/measuring-ai-visibility/) - #36

4. **Measure share of voice on fixed prompts.** Repeat runs, and keep grounded and ungrounded runs apart.
**Check:** The same prompt set every month
Guide: [AI share of voice](https://angeo.dev/ai-share-of-voice-definition/) - #37

## Maintain: does it stay right?

1. **Keep cron running.** Stale llms files and sitemaps lower the score on their own.
**Check:** `bin/magento cron:run` is scheduled
Guide: [Case study: 20% to 86%](https://angeo.dev/magento-ai-visibility-case-study-20-to-86/) - #38

2. **Re-check crawler names every quarter.** Agents are added, split and deprecated.
**Check:** Compare against the dated list
Guide: [AI crawlers for Magento 2](https://angeo.dev/docs/ai-crawlers/) - #39

3. **On Adobe Commerce Cloud, purge Fastly after robots changes.** Otherwise crawlers read the cached file.
**Check:** Check the live file, not the admin
Guide: [robots.txt for AI crawlers](https://angeo.dev/magento-2-robots-txt-chatgpt-gemini-ai-bots/) - #40

## Use this checklist

Link to it, quote it or copy it into your own process - a link back to the item you use is appreciated. A plain Markdown version is at [/magento-aeo-checklist/index.md](https://angeo.dev/magento-aeo-checklist/index.md). Found a check that is wrong or missing? Email [info@angeo.dev](mailto:info@angeo.dev); corrections are listed with the date.

## Questions

What is a Magento AEO checklist?
A list of the checks that decide whether AI systems such as ChatGPT, Claude, Perplexity and Google's AI features can reach, read and use a Magento store. This one has 40 checks in seven groups, each with a way to verify it.

Where should I start?
With access, content and structured data: robots.txt for AI crawlers, llms.txt, server-rendered Product JSON-LD with availability. Without these, nothing later matters.

Does completing the checklist get my store recommended by ChatGPT?
No. It makes the store readable and usable for AI systems. Whether an assistant names it also depends on price, reviews and coverage on other sites.

How often should I go through it?
Once in full, then the measure and maintain sections monthly. Re-check crawler names every quarter.

## Related

- [Magento 2 AEO guide](https://angeo.dev/magento-2-aeo-guide/)

- [AEO score - definition](https://angeo.dev/aeo-score-definition/)

- [Magento SEO audit 2026](https://angeo.dev/magento-seo-audit-2026/)

- [UCP readiness checklist](https://angeo.dev/ucp-readiness-checklist-magento/)

- [Free web scan](https://angeo.dev/ai-magento-audit/)

## Sources

- [RFC 9309: Robots Exclusion Protocol](https://www.rfc-editor.org/rfc/rfc9309.html)

- [llms.txt proposal](https://llmstxt.org/)

- [Google: AI features and your website](https://developers.google.com/search/docs/appearance/ai-features)

- [OpenAI: Overview of OpenAI crawlers](https://developers.openai.com/api/docs/bots)

- [OpenAI: Product Feed Spec](https://developers.openai.com/commerce/specs/file-upload/products)

- [Universal Commerce Protocol](https://ucp.dev/)

Checked 28 September 2026. Each item links to a guide with its own verification date. Disclosure: we build the open-source modules and the audit referenced on this page.

## More on this topic

- [AI Commerce Audit  -  Full AI Visibility Audit for Stores](https://angeo.dev/ai-commerce-audit/)
- [AEO Audit Skill  -  Audit Any Website for AI Visibility](https://angeo.dev/docs/aeo-audit-skill/)
- [Why Is My Magento Store Invisible in ChatGPT? 15 Answers](https://angeo.dev/magento-chatgpt-visibility-questions/)
- [Magento Ranks in Google but Not in ChatGPT: Why](https://angeo.dev/magento-ranks-google-invisible-chatgpt/)
- [Why Your Store Is Invisible to ChatGPT  -  and Who Fixes It](https://angeo.dev/why-your-store-is-invisible-to-chatgpt-and-how-to-fix-it/)
- [Magento AEO (Answer Engine Optimization)  -  Definition](https://angeo.dev/magento-aeo-definition/)
