WooCommerce
We checked 96 WooCommerce stores: what ChatGPT can't read on a product page
ChatGPT recommends products it can read. In 96 Polish WooCommerce stores, one product page in five had no Product data at all. What to fix, and in what order.
By the shoptoai team, updated Oct 3, 2026
Ask ChatGPT about something you have in stock and see which store it sends you to. Quite often it's someone else. Sometimes a bigger shop, sometimes not even a cheaper one. Your product is rarely the problem. The assistant just can't read it.
In early October we checked 96 Polish WooCommerce stores, one product page from each. The median score came out at 74 out of 100, which isn't bad, but the gaps kept showing up in the same places. Below they are in the order we'd fix them.
What ChatGPT reads on a product page
A shopper looks at the photo, the price and the description. An AI assistant mostly reads what sits underneath. The part that matters most is the Schema.org data block (JSON-LD) of type Product. Then there's robots.txt, which tells the bot whether it may open the page at all, and more and more often llms.txt.
When the data includes the brand, a GTIN, the price, availability and a few attributes, the assistant knows what you sell and can put your offer next to others. Without them it has to pick facts out of the page text, so it leans toward a store whose data is easy to read. A nice theme or good photos won't change that. A shorter rundown of these causes, without the scan numbers, is in our post on why WooCommerce products don't show up in ChatGPT Shopping.
1. Check whether the page has Product data at all
This gap is the most serious one, and it's common. On 20 of the 96 pages, one in five, we found no Product data whatsoever. Fourteen of those 20 stores ran Yoast SEO. It described the website and the company, but not the product itself, and WooCommerce's own markup was missing from those pages too.
Checking takes a minute. Paste any product URL into Google's Rich Results Test or into validator.schema.org and look for a Product item (for products with variations it may be a ProductGroup). If all you see is WebPage, Organization and BreadcrumbList, the assistant gets nothing about the product from you.
How you fix it depends on what's installed. Some SEO plugins only describe products through a separate WooCommerce module. The other route is a plugin that outputs one complete Product block. Make sure there's exactly one. Two conflicting blocks are rare (2 pages out of 96 in our scan), but when it happens the assistant can't tell which one to trust. There's more on that in our post about duplicate structured data.
2. Put the brand in the data, not only in the title
Very often the brand is right there in the product name and nowhere in the data. In the scan only 23 of 96 pages had it in the data, fewer than one in four. Shoppers don't care. An assistant comparing offers for the same product across several stores needs the brand in its own field.
Since version 9.6 WooCommerce has brands built in (in the Products menu, under Brands). Assign a brand to every product, then run the validator again and see whether a brand field shows up. If it doesn't, whichever plugin handles your structured data has to add it.
3. Fill in the GTIN where you have one
We found a GTIN (in Europe usually the EAN under the barcode) on 10 of the 96 pages. Only 6 had both a brand and a GTIN. Those two fields are how an assistant links the product in your store to what it already knows about it from elsewhere.
Since version 9.2 WooCommerce has a dedicated field for it on the Inventory tab. Copy the codes from the packaging or from your supplier's file. Don't type in a made-up code or one borrowed from another product, because a wrong GTIN does more harm than an empty one. If you make your own products and have no GS1 codes, leave the field blank and get the rest of the data right. The step-by-step version is in our guide on how to add a GTIN in WooCommerce.
4. Describe the product with attributes
People ask assistants very specific things, say a moisturizer for dry skin, 50 ml, fragrance free. Size, skin type and scent are usually in the description, just buried in sentences a machine struggles to pull them out of. Yet 49 of the 76 pages that did have Product data showed no attributes, neither in the data nor as a table on the page.
You add them on the product's Attributes tab. Put in whatever a shopper weighs when choosing: size, color, material, volume, ingredients. Global attributes (in the Products menu, under Attributes) work better, because the values then stay consistent across the whole store.
Here's how it can look in the data. The example is made up, for a natural cosmetics store.
Before:
{
"@type": "Product",
"name": "Krem do twarzy z masłem shea 50 ml",
"offers": { "@type": "Offer", "price": "49.00", "priceCurrency": "PLN" }
}After:
{
"@type": "Product",
"name": "Krem do twarzy z masłem shea 50 ml",
"brand": { "@type": "Brand", "name": "Brand name" },
"gtin13": "EAN from the packaging",
"additionalProperty": [
{ "@type": "PropertyValue", "name": "Pojemność", "value": "50 ml" },
{ "@type": "PropertyValue", "name": "Rodzaj cery", "value": "sucha" }
],
"offers": {
"@type": "Offer",
"price": "49.00",
"priceCurrency": "PLN",
"availability": "https://schema.org/InStock"
}
}While you're there, look at availability. A price in the data isn't enough on its own; the assistant also wants to know whether the item can be bought right now.
5. Let AI bots in and add llms.txt
Here the news is good. Only 3 of the 96 stores blocked AI bots in robots.txt. Still, open yours (yourdomain.com/robots.txt). The bot behind ChatGPT search is called OAI-SearchBot, while GPTBot collects data for training models, and you control them separately. If you want to show up in ChatGPT answers, at the very least don't block OAI-SearchBot. Sometimes the bots get stopped by a firewall or a security plugin instead, and then robots.txt looks perfectly innocent.
15 stores had an llms.txt file. It's a short description of the store with links to its key pages, written with language models in mind. It isn't required and nobody can promise ChatGPT will read it, but it takes about fifteen minutes to make. Just check that the address really serves a text file: 10 stores returned an ordinary shop page there. More in our post on what llms.txt is.
What to expect
Nobody can honestly promise that ChatGPT will start recommending you after these fixes, because the model decides what goes into an answer. Correct data is what lets the assistant understand your product in the first place and weigh it against others. In a given store the effect shows after a few weeks, once you compare ChatGPT's answers from before and after the changes.
Where to start
The easiest place is a single product page. Paste its URL at shoptoai.com/scan. It's the same free scan we ran on the 96 stores. It takes about 30 seconds, needs no sign-up, and gives you a score from 0 to 100 with a list of what's missing.
With a bigger catalog, fixing things product by product gets old fast. Once you connect your store, shoptoai checks every product and suggests missing brands, categories and attributes. You approve each change yourself and the old value is saved, so everything can be rolled back. We never make up GTINs. Details are on the pricing page.
Common questions
Is Yoast SEO enough?
Not always. Yoast was running in 14 of the 20 stores with no Product data. It described the site and the company, not the product. Rather than assume, check your own page with the validator.
Does every product need a GTIN?
No. Fill in the codes you have. Products without one can still have a proper brand, attributes and offer. Never invent codes.
How long until ChatGPT notices the changes?
There's no fixed time. The assistant sees the new data when its bot next visits the page. That's why it's worth comparing answers before the changes and a few weeks after.
Where do the numbers in this post come from?
From our October 2026 scan of 96 Polish WooCommerce stores. We checked one product page per store, so the results don't describe whole catalogs. We don't publish store names.