Render the facts in HTML
If the price, availability, and specifications only appear after JavaScript runs, many retrieval crawlers will never see them.- Serve body content, price, and availability in the initial HTML
- Do not lock specifications inside tabs or accordions that load on click
- Never put specifications only in an image — a spec table rendered as a JPEG is invisible
State attributes as data, not prose
“Perfect for long days on the trail” is unextractable. A machine cannot filter on it. Give every product complete, explicit attributes:- Material, dimensions, weight, capacity
- Size and fit, including width where relevant
- Compatibility and requirements
- Care, warranty, and returns terms
- Colour, and what variant options exist
Add valid structured data
Product schema in JSON-LD is what makes a page machine-comparable. At minimum include name, description, sku, brand, image, and an offers block with price, priceCurrency, and availability.
The markup must match the visible page and track real availability — see the validation rules in structured data for AI search.
Write the description to be quoted
Front-load the facts. First sentence states what the product is and its defining attribute. Persuasion after, if at all. Compare:Discover our best-selling boot, crafted for adventurers who refuse to compromise.
A waterproof full-grain leather hiking boot with a Vibram sole, available in wide fit, weighing 540g per boot.The second can be extracted, compared, and cited. The first cannot.
Make every variant addressable
Variants that exist only behind a picker cannot be cited or compared separately. Two valid patterns:- Its own page — give a variant its own indexable page when people search for it specifically and it has distinct content. See product variant markup.
- One product URL — otherwise keep one page, make each variant pre-selectable through a stable URL parameter, and describe the set with
ProductGroupandhasVariantmarkup so agents can read every variant’s price and availability.

