Back to Article List

AI Shopping Reads Your Feed, Not Your Product Page

AI Shopping Reads Your Feed, Not Your Product Page - AI Shopping Reads Your Feed, Not Your Product Page

When an AI shopping assistant recommends a product, it almost never reads your product page. It reads a structured feed - the same Merchant Center-style data file that powers Google Shopping. So if you have poured hours into your WooCommerce product descriptions but never checked your feed, you have been polishing the window while the buyer walks in through a different door.

The fix is not glamorous. It is a spreadsheet-shaped job: clean titles, correct attributes, honest availability, real GTINs. Do it once, keep it tidy, and you become the kind of listing an AI agent can confidently show a shopper. Here is exactly what to check and how to fix it on a small store.

Why AI shopping ignores your product page

AI shopping agents work from structured feed data because a feed is machine-readable and a page is not. When someone asks an assistant for "waterproof hiking boots under €120 in a size 43," the model needs fields it can filter on: price, size, colour, material, availability, category. Your product page has that information buried in prose, images and a theme's layout. Your feed hands it over in labelled columns.

This changes where your effort pays off. A beautifully written page still matters for the human who lands on it - but the AI decided whether to show you that page based on feed fields alone. Miss a size attribute and you vanish from every size-filtered query. Get the product type wrong and you show up in the wrong comparisons, or none.

Think of the feed as the audition and the page as the performance. You do not get the performance if you fail the audition.

The feed fields that decide whether you show up

A handful of fields do most of the work, and small stores get the same few wrong every time. Fix these first before touching anything advanced.

  • title - front-load brand, product, and key attribute. "Meindl Bhutan MFS Leather Hiking Boots - Brown, Size 43" beats "Bhutan MFS - our bestseller."
  • gtin / mpn / brand - the GTIN (barcode) is how agents match your product to reviews and competing offers. Missing it often means suppression.
  • google_product_category and product_type - the first is Google's taxonomy, the second is your own. Set both.
  • price and sale_price - must match the price shown at checkout to the cent, including currency.
  • availability - in_stock, out_of_stock or preorder, kept in sync with real stock.
  • image_link - a clean product shot on a plain background, at least 800px, no promo text baked in.
  • size, colour, material, gender, age_group - the filter fields. Apparel and footwear are useless without them.

Here is the honest ranking of where to spend your time:

FieldImpact if wrongEffort to fix
titleHigh - controls query matchingMedium
gtinHigh - can suppress the listingLow
price / availability mismatchHigh - account warningsLow
product categoryMedium - wrong comparisonsLow
size / colour attributesMedium - lost on filtered queriesMedium

How to generate a clean feed in WooCommerce

On WooCommerce, use a dedicated feed plugin rather than hand-rolling a CSV - it keeps the feed in sync when prices and stock change. The two most reliable choices for small stores are the free Product Feed PRO for WooCommerce (CTX Feed) and the Google for WooCommerce official plugin.

With CTX Feed the path is short. After installing, go to CTX Feed → Make Feed, pick Google Shopping as the template, set the country and currency, and choose XML as the file type. The plugin drops you into a field-mapping table: the left column is the Google field, the right is a dropdown of your WooCommerce data. Most fields auto-map, but the custom ones do not.

This is where stores lose visibility. Your size, colour and material usually live as WooCommerce product attributes (Products → Attributes), and in the CTX Feed dropdown they appear near the bottom under an Attributes heading, prefixed like attribute_pa_size. Point size at attribute_pa_size, color at attribute_pa_color, and so on. If they are not in the dropdown at all, they were saved as plain text in the description rather than as real attributes - fix that on the product first, then re-map. Then:

  • Set the feed to refresh at least daily so stock and price stay accurate. If you run frequent flash sales, refresh hourly.
  • Add a static value for brand if all your products share one, instead of leaving it blank per product.
  • Fill gtin from your barcode field; if a product genuinely has no barcode, set the identifier_exists flag to false rather than faking one.

Once the feed generates, open the XML file directly in a browser and read ten products by eye. You will spot the obvious errors - a title that is just "Untitled," a price of €0.00, an image that is a category banner - faster than any validator will. Then run the machine check too: submit the feed to Google Merchant Center and read the Diagnostics tab, which flags mismatched prices, missing GTINs and disapproved items product by product. The eye catches the ugly, the diagnostics catch the disqualifying.

Handling variable products without breaking the feed

Variable products are where small stores quietly self-sabotage. A t-shirt with five sizes and three colours should generate one feed row per variation - fifteen rows, each with its own size, colour, price and availability - not a single parent row. If your feed emits only the parent, every size-filtered and colour-filtered query skips you.

In CTX Feed, tick Variable Product (or "Include variations") in the feed config so it walks each variation. Give every variation an item_group_id - the shared parent SKU works well - so agents know the fifteen rows are one product in different flavours. Confirm each variation carries its own GTIN if the manufacturer assigns barcodes per variant; a single shared barcode across sizes is wrong and gets flagged. If a colour is sold out, that one variation should read out_of_stock while the rest stay live.

Writing titles and attributes AI agents can parse

Write feed titles as structured facts, not marketing copy, because an agent reads them as a comma-separated list of attributes. The pattern that performs is Brand + Product + Defining Attribute + Variant. Drop the adjectives that mean nothing to a filter - "premium," "amazing," "must-have" - and add the ones a buyer would type: colour, size, capacity, material, model number.

Attributes matter more than the description now. An AI agent comparing three coffee grinders will trust the material: stainless steel and capacity: 250g fields over any paragraph. So move real specs into structured attributes in WooCommerce (Products → Attributes), then map them into the feed. A quick before-and-after:

  • Weak: "The Perfect Morning Grinder - You'll Love It"
  • Strong: "Baratza Encore Conical Burr Coffee Grinder - Black, 250g Hopper"

Keep titles under 150 characters and put the most important words in the first 70 - some surfaces truncate. Do not keyword-stuff; repeated words get flagged and read as spam by both Google and the newer AI surfaces.

Keeping the feed honest so you don't get suppressed

The fastest way to disappear from AI shopping is a feed that lies - a price or stock status that does not match your live store. Automated checks compare your feed against the landing page, and a mismatch triggers warnings first and suppression later. This is a data-hygiene problem, not a marketing one.

A short pre-flight checklist to run monthly:

  • Spot-check five feed prices against live checkout, VAT included.
  • Confirm out-of-stock items show out_of_stock, not in_stock.
  • Verify every image_link loads and shows the actual product.
  • Check no product links 404 or redirect to the homepage.
  • Confirm currency and country match where you actually sell.

Feed accuracy leans heavily on your store staying fast and reachable when crawlers fetch it. If your hosting chokes when the feed is being read alongside real traffic, fields silently go stale. That is the part worth getting right - TPC Hosting is EU-hosted and GDPR-friendly, with real engineers on support 24/7 if a feed refresh or cron job starts misbehaving, and migration is free if you are moving a store over.

A 30-minute audit you can run today

Give your store a focused half hour and you will find most of what is holding it back. Do it in this order:

  • Minutes 0-5: Export your current feed. Open the XML in a browser. Count how many products have blank gtin, brand, or size.
  • Minutes 5-15: Fix the ten bestsellers by hand - titles in Brand + Product + Attribute order, correct category, real GTIN.
  • Minutes 15-25: Map any unmapped WooCommerce attributes (size, colour, material) in your feed plugin.
  • Minutes 25-30: Set the refresh schedule to daily, regenerate, and re-read three products to confirm the changes stuck.

You do not need to fix all 400 products today. Fix the ten that make you money, get the feed structure right, and let the pattern flow to the rest. The store that wins AI shopping is not the one with the prettiest page - it is the one whose feed is clean, complete and true.

FAQ

Is the product feed the same as my product page?

No - the feed is a separate structured data file that AI shopping agents and Google Shopping read, while the page is the human-facing version. Your feed carries labelled fields like price, size and GTIN that machines filter on; the page carries prose and design. Both matter, but the feed decides whether you get shown at all.

Do I need a GTIN for every product?

You need a GTIN for any product a manufacturer assigns a barcode to, and missing it can get the listing suppressed. For genuinely unique or handmade items with no barcode, set the identifier_exists flag to false rather than inventing a number, and make sure brand and MPN are filled instead.

How do I stop my variable products showing only the parent in the feed?

Enable the variations option in your feed plugin (in CTX Feed, tick Variable Product) so it generates one row per variation, each with its own size, colour, price and availability. Give the whole set a shared item_group_id, and confirm every variation carries its own GTIN if the manufacturer assigns barcodes per variant.

How often should my WooCommerce feed refresh?

At least once a day for most small stores, and hourly if you run frequent flash sales or have fast-moving stock. Stale prices or stock statuses that don't match your live checkout trigger warnings and eventually remove your products from shopping surfaces.

Which WooCommerce plugin should I use for the feed?

For a small store, use Product Feed PRO (CTX Feed) for a free, flexible option, or the official Google for WooCommerce plugin if you're primarily on Google Shopping. Both keep the feed synced with your store; the key work is mapping your size, colour and material attributes correctly.