GEOAugust 19, 20267 min read
GEO checklist for online stores: llms.txt, Product schema, and AI crawlers
Generative engines now recommend products before shoppers open a search page. This checklist covers llms.txt, AI crawler access, Product schema, and content depth - the seven fixes that decide whether ChatGPT, Gemini, and AI Overviews can find, read, and cite your store.
Shoppers no longer start every purchase with a search results page. They ask ChatGPT what blender to buy, ask Gemini to compare running shoes, or read the AI Overview above the fold and never scroll further. Generative engine optimization, or GEO, is the work of making a store readable and citable by those systems - ChatGPT, Gemini, Google AI Overviews, and Claude - the same way SEO made stores readable to Google's classic crawler. If a generative engine can't fetch a clean page, can't parse what a product is, or isn't even allowed to crawl the catalog, it can't recommend it. This checklist walks through the seven fixes that matter most, in the order a developer can actually ship them.
1. Publish a real llms.txt, not a sitemap dump
Why: An llms.txt file at the site root gives language models a short, curated map of the store: brand name, what it sells, the main category URLs, and a handful of key pages. It's the equivalent of handing a new employee a one-page orientation sheet instead of the entire file cabinet.
How: Create /llms.txt as a plain Markdown file. Keep it short: a one-line brand description, a list of category links with a few words of context each, and links to policies that matter for trust (shipping, returns). Do not paste your full sitemap or every product URL into it - that defeats the purpose and buries the signal.
Verify: Open yourdomain.com/llms.txt in a browser and confirm it loads as plain text, is under roughly one printed page, and every link in it resolves to a real, working page.
2. Stop blocking the AI crawlers you want mentions from
Why: Plenty of stores disallow GPTBot, OAI-SearchBot, ClaudeBot, or Google-Extended in robots.txt - often left over from a generic "block all bots" template - and then wonder why they never show up in AI answers. You cannot be cited by a model that isn't allowed to read your pages.
How: Open robots.txt and check each of those user agents by name. Allow them on your public catalog: product pages, category pages, and content pages. You can still disallow admin routes, cart, checkout, and account pages - those should never be crawled by anyone.
Verify: Fetch robots.txt directly and search for each crawler name. If you see a blanket Disallow: / under any of them, that section needs to be scoped down to private paths only, not the whole site.
3. Add Product and Offer schema to the pages that actually sell
Why: Generative engines lean on structured data to confirm price, availability, and identity before they'll mention a product with confidence. An Organization schema block on the homepage tells a model who you are, not what you sell. A single WooCommerce script tag repeated identically on every page - one that never changes with the product - is functionally the same as having none.
How: Add Product and nested Offer JSON-LD to every real product URL, populated per product: name, description, SKU, price, currency, availability, and a link back to the canonical URL. This has to be generated from the product data, not copy-pasted as a static block.
Verify: Open a handful of product pages, view the page source, and confirm the JSON-LD price and name actually match the product on screen - not a placeholder or the homepage's values.
4. Add BreadcrumbList to category pages
Why: BreadcrumbList schema tells a model exactly where a category sits inside your catalog hierarchy - which helps it answer questions like "best trail running shoes" by understanding that page sits under Shoes > Running > Trail, not floating on its own.
How: Add BreadcrumbList JSON-LD to every category and subcategory template, matching the visible breadcrumb trail on the page exactly - same order, same labels, same URLs.
Verify: Check two or three category pages at different depths (a top-level category and a subcategory) and confirm the breadcrumb schema lists the same path a shopper sees on screen.
5. Add Review and AggregateRating schema only when reviews are visible
Why: Rating schema with no visible reviews on the page is the kind of mismatch that gets a store flagged rather than trusted - by search engines and by generative engines checking for consistency between what's marked up and what's actually on the page.
How: Only emit Review and AggregateRating JSON-LD on pages where real review content and a star rating are rendered for a shopper to see. If a product has zero reviews, skip the schema block entirely rather than defaulting to a placeholder rating.
Verify: Pick a product with no reviews and confirm no rating schema is present. Pick one with reviews and confirm the schema numbers match what's shown on the page.
6. Rewrite thin pages so they answer what, who, specs, and proof
Why: A generative engine is trying to answer a shopper's question, not admire a tagline. A category or product page built entirely out of hero images and a slogan gives it nothing to quote or summarize, so it gets skipped in favor of a competitor's page that actually explains the product.
How: Every key page should cover four things in real text: what the product or category is, who it's for, the specs or details a buyer needs to decide, and some form of proof - materials, certifications, warranty terms, or real customer feedback. This doesn't mean walls of text; a few well-written paragraphs and a spec list beat a single marketing line every time.
Verify: Read the page as if you knew nothing about the brand. If you can't answer what it is, who it's for, and what makes it credible from the text alone, a language model can't either.
7. Fix canonical tags, hreflang, and make sure pages render as real HTML
Why: Generative engines and their crawlers don't always execute JavaScript the way a browser does. A page that ships as an empty shell and fills in with client-side rendering can look blank to a crawler, even though it looks perfectly normal to a shopper. On multi-market stores, missing canonical tags and hreflang annotations also cause the wrong language or region variant to get indexed and quoted.
How: Make sure product and category content is server-rendered (SSR) or present in the initial HTML response, not injected entirely by client-side JavaScript after load. Add a self-referencing canonical tag to every page, and hreflang tags pointing to every language or regional variant if you run more than one storefront locale.
Verify: View the page source (not the rendered DOM) of a product page and confirm the product name, description, and price appear in the raw HTML. Check that canonical and hreflang tags point to the correct, live URLs - not to a staging domain or a redirect chain.
Who does this: you or your developer
Most of this checklist splits cleanly along one line: content decisions are yours, markup and crawler rules are your developer's.
- You (store owner or marketer): writing the llms.txt copy, deciding which categories and pages matter enough to feature, and rewriting thin product or category pages so they actually explain what you sell.
- Your developer: generating Product and BreadcrumbList JSON-LD per page from real data, editing robots.txt to allow the right crawlers, fixing canonical and hreflang tags, and making sure pages render as HTML rather than an empty JavaScript shell.
Neither side can finish the checklist alone - a developer can ship perfect schema on a page with no real content, and a marketer can write great copy that a blocked crawler never sees.
Audit before you guess
Fixing seven items across a whole catalog is easy to get wrong without knowing which pages are actually broken. Aigely runs a GEO audit at both the site level and the page level, checking llms.txt, robots.txt crawler access, schema on real URLs, and content depth against this same kind of checklist. Paste a list of URLs to limit the audit to exactly those pages, or leave the list empty and it pulls your sitemap automatically. The free scan is a quick ChatGPT visibility teaser - useful as a first look, but it's not the full site-level and page-level GEO audit.
Measure again after you ship
None of this is done once you've pushed the fixes live. Re-run your mention rate on the shopping prompts that matter for your store - the ones a real buyer would type into ChatGPT or Gemini before purchasing - and compare it against your baseline. Schema and crawler access changes can take days to show up in model behavior, so give it time before you conclude a fix didn't work.
Start with a full GEO site audit to see where your store stands today, or run a quick free scan to check your current ChatGPT visibility.
See how AI answers mention your store today
Run the free Aigely Scan from your store URL, then upgrade when you need weekly tracking across engines.