When a shopper asks an AI assistant which product to buy, the answer is built from pages the assistant can read. If your product page does not state a fact, the answer cannot quote it, and it quotes a page that does.
This guide lists what a product page needs so that Google's AI features, ChatGPT and other answer engines can read it, trust it and name it. Each step is a check you can run on your own pages today.
1. State the facts of the category in plain text
Every category has a few facts that decide the purchase. For shoes, they are fit, width, materials and use. For a generator, they are running and surge watts, fuel type and noise. Google describes how its AI Mode answers a shopping question: it runs several searches to find what makes a product good for the need, and then picks products by those criteria.
So write the page for the criteria, not only for the brand story:
- List the attributes that buyers of the category compare, with units.
- Answer the questions your support team hears most: fit, sizing, compatibility, care.
- Name the return terms on the page, since returns are a common reason not to buy.
Put the facts in the HTML
Some AI crawlers do not run JavaScript. Vercel tested the major AI crawlers and reported that "none of the major AI crawlers currently render JavaScript". A fact that loads only through a script, a tab widget or an image is invisible to them. Check your page with JavaScript turned off: what you see then is what they read.
Write for the question, not the keyword
A shopper asks an assistant a full question: "which running shoe works for wide feet on long runs?" The assistant looks for pages that answer the parts of that question. A page that says "wide fit available in sizes 8 to 13, tested for runs over 10 miles" can be quoted. A page that says "our most comfortable shoe ever" cannot.
- Write facts, with units and numbers where they exist.
- Use the words buyers use. Read your support tickets and reviews for them.
- Keep one topic in each paragraph, so a sentence can be quoted without the paragraph around it.
2. Keep one price everywhere
Show the same price in three places: the visible page, the product feed and the structured data. A different price in each place tells a machine that one of them is wrong. When an agent compares offers, a clear and consistent price is part of what it can trust.
3. Add product structured data
Structured data describes the product in a form that machines read without guessing. Google documents two kinds of product structured data: product snippets for pages that review or describe products, and merchant listings for pages where the shopper can buy.
For a product you sell, include at least:
- name, image and description;
- brand and an identifier such as GTIN or MPN;
- offers with price, currency and availability;
- the aggregate rating and review count, when the page shows reviews.
The markup must describe what the page shows. Markup for facts that are not on the page does not help.
4. Show reviews on the page
Buyers trust other buyers, and so do the systems that answer for them. Show recent reviews on the product page, in text. Reply to the complaints you can resolve, on the page and on public review sites.
5. Let the answer engines read the page
An AI answer can only use a page its crawler may read. Your robots.txt decides that. OpenAI documents its crawlers: OAI-SearchBot is used to show sites in ChatGPT's search answers, and a site that blocks it is not shown there. GPTBot is a separate crawler for model training, and you can allow one without the other. Perplexity documents PerplexityBot for its answers.
Open your robots.txt and check that the bots of the answer engines you want to appear in are not blocked.
| Check | How to test it | Pass |
|---|---|---|
| Category facts in text | Read the page with JavaScript off | Every key attribute is visible |
| One price | Compare page, feed and structured data | The same price in all three |
| Product structured data | Google Rich Results Test | Product with offers, no errors |
| Reviews on the page | Read the page as text | Recent reviews in plain text |
| Bot access | Read robots.txt | OAI-SearchBot and PerplexityBot are not blocked |
Common mistakes
These gaps show up often, even on well-kept stores:
- Facts only in tabs that load later. The shopper sees them after a click; a crawler that reads plain HTML may not see them at all.
- One description for many variants. When sizes or colors differ in fit or material, say so for each variant.
- Return terms only in the footer. A buyer's last question before paying is often about returns. Name the terms on the product page.
- A blocked answer bot. A robots.txt rule written years ago for another reason can block a crawler you now want.
- Markup that disagrees with the page. Structured data copied from a template, with an old price or a wrong availability, is worse than none.
6. Start with the pages that sell
Do not rewrite the whole catalog at once. Take your top products by revenue, run the checks above, and fix the gaps in order: facts first, then price, structured data, reviews and access. Then move down the list.
To see how far a real store is from these checks, read What we found when we read 293 product pages the way an AI does.
Check every product at once
ecommerce.com runs these checks on every product of your store from its public address. Each product gets a GEO score that shows which facts of its category the page states, whether the text is in the HTML, whether the price matches the feed, and whether answer bots may read it. The fixes that add the most points come first.
Questions and answers
Do I need structured data for AI answers?
It helps machines read price, availability and identifiers without guessing, but it must match the visible page. The facts in the page text matter first.
Should I block GPTBot?
That is your choice. OpenAI documents GPTBot (training) and OAI-SearchBot (search answers) as separate crawlers, so you can block one and allow the other.
How do I see what an AI crawler reads?
Open the product page with JavaScript turned off. Many AI crawlers read only the HTML, so the text you see then is what they can quote.


