Visora
Sign up
← Back to blog

· Visora

GEOProduct variantsStructured data

Does ChatGPT understand that you sell a size run? How to get every product variant cited

Does an AI assistant understand that you sell the same product in twelve sizes? For many merchants, the honest answer is not yet. A store can have a perfect product page in the browser and still lose citations across most of its catalog because the assistant cannot cleanly tell one variant apart from another. When a shopper asks "do you have this dress in a size M in navy," the assistant needs a page or data block that unambiguously answers that exact combination. If your page presents everything as one undifferentiated product, the assistant has nothing precise to cite, and it moves on.

The short answer: assistants understand variants only as cleanly as you expose them. Below is why options slip through the cracks, how engine extractors actually read a variant store, and the exact fixes that turn one SKU into twelve citable products.

## Why variants drop out of AI answers

Assistants assemble shopping answers from facts they can pull and verify. For a variant product, the assistant needs four things to line up: the parent product identity, the list of options such as size and color, the specific combination the shopper asked about, and the live price and stock for that combination. If any of those lives only in JavaScript, or only in text an extractor cannot untangle, the combination effectively does not exist to the assistant.

The most common failure is treating a variant as one product with one price. When a dress costs more in extended sizes, or a colourway briefly sells out, a single generic price on the page contradicts the true per-option picture. Engines that cross-check visible text against structured data notice the conflict and distrust the whole page rather than fix it for you. A second common failure is burying options: sizes shown only in an interactive dropdown, or colours shown only as image swatches, never reach a text extractor, so the assistant reads the base name but not the run of options.

## How to expose every option as a citable unit

The goal is to make each size-and-colour combination resolvable from the raw HTML, with the visible text, the Offer, and the availability all agreeing. Work through these steps for the products you most want cited.

  • Give each variant its own identity. Set a distinct SKU and, where practical, a canonical URL per option, such as /dress-navy/size-m. An assistant that can address one specific variant page has a clean unit to quote.
  • Put a complete Offer per variant in JSON-LD. Inside the Product offers array, list every option as its own Offer with price, priceCurrency, availability, and itemCondition. These are the same fields engine extractors reward on your own domain.
  • Keep option names and values in plain text. Repeat the selectable sizes and colours as visible text, even a compact "Sizes: XS-XXL" line, so they appear in the raw HTML. Never rely on JavaScript to render the option list.
  • Mirror price and stock for each option. When an option costs more or is sold out, reflect that in the Offer and in the visible text. Consistency between the two is the single strongest trust signal for a variant page.
  • Add a spec or size table. A tabled breakdown of measurements gives assistants a parseable reason to name your specific combination rather than a vaguer competitor listing.

## What an assistant actually reads on your variant page

Picture the extractor scanning for a compact, self-contained answer. For "is the navy M in stock," it wants to find navy and M together with a price and an in-stock marker in the same coherent block. If those three facts are scattered across a hidden dropdown, a dynamically loaded price module, and a separate inventory call, scanners may see price but not size, or colour but not availability. Merchants who consolidate the combination into one place, often a variant summary line plus a matching Offer, consistently report fewer "we could not confirm stock" drop-offs.

## FAQ

*Does every size need its own URL for citations?*

Not strictly, but per-option URLs are the most reliable signal. If you cannot add separate URLs, at least keep each option's SKU, price, and availability correct inside a single page's offers array and repeat the option set in visible text. Clean structured data on one page beats broken attempts across many.

*Is a colour swatch without text good enough?*

No. Colour-only swatches are invisible to a text extractor. Include the colour name in text, such as "Navy," even when you also show a swatch, so the assistant can connect the visual to a citable word.

*Why is my price ignored even though it is shown on the page?*

If the price renders only through JavaScript, or differs between what you display and what your Offer declares, extractors flag it as untrustworthy. Put the price in the initial HTML and make the Offer match exactly, including tax and shipping nuances.

*Do options matter if I sell mostly a single configuration?*

Less. But if you offer bundles, gift sets, or one product in two pack sizes, the same principle applies: name each configuration, price it, and expose it as its own Offer, or expect assistants to cite only the cheapest or the first option.

Put this into practice

Audit your PDP or category page with Visora, then fix schema and FAQ gaps that block AI citations.

Run a free GEO audit →

https://geovisora.com/en/blog/product-variants-options-ai-citations-2026