Skip to main content
Benian Technologies
Benian Technologies
Home
Services
About
Case Studies
Resources
Get Started
Services
AI Consulting
ROI-ranked roadmap in 4 weeks
Workflow Automation
Eliminate repetitive tasks
Voice AI
24/7 inbound call automation
Chat AI
Cited chatbots on your docs
AI Agents
Purpose-built task agents
AI Visibility
Get found by AI answer engines
ProductBenian OSThe AI-native business operating systemSee all services
Resources
Blog
Playbooks, pricing math, and field notes
Free AI Audit
An engineer maps your three highest-payback automations
AI Visibility Scan (free)
Instant check: can AI engines read your site?
Missed-Call Calculator (free)
What unanswered calls cost you a month
See all resources

Services

  • Benian OS
  • Workflow Automation
  • Voice AI
  • AI Agents
  • Chat AI
  • AI Consulting
  • AI Visibility

Resources

  • Blog
  • Free AI Audit
  • AI Visibility Scan
  • Missed-Call Calculator
  • FAQ

Company

  • About Us
  • Case Studies
  • Download
  • Book a Call

Legal

  • Privacy Policy
  • Terms of Service
  • Sitemap
© 2026 Benian Technologies. All rights reserved.
Follow us on LinkedInFollow us on Instagram

Also on Clutch, F6S, and Crunchbase

Benian Technologies
1
Back to Blog
Guides

Google AI Mode doesn't read your ad copy. It reads your product feed.

Emre Benian
Emre Benian · August 26, 2026 · 8 min read

Drafted by Benian’s in-house content engine and reviewed by a human before publish. How this site runs: /how-this-site-runs

TL;DR

Shopping results have never used the ad copy you wrote. They are generated from your Merchant Center feed. Here are the attributes that decide whether your products can answer a question, a worked example of a feed that fails without a single error, and an afternoon audit you can run yourself.

You rewrote the headlines. You tested three new descriptions. Spend is flat, and someone on your team keeps sending you screenshots of competitors' products showing up inside Google's AI Mode answers while yours do not. Here is the part that usually gets skipped: on shopping surfaces, Google has never used the copy you wrote. A Shopping unit is generated from the product data you send to Merchant Center. Your headlines run in text ads. Your feed runs wherever products get shown, and a system answering a full-sentence question has even less use for adjectives than a blue link did.

So the creative test you just finished was never connected to that surface. The thing that is connected is a spreadsheet most merchants have never read line by line: the feed.

What actually changed in AI Mode

In a classic Shopping listing, the feed decided eligibility and the shopper saw a title, an image, and a price. In a text ad, you wrote the words. In AI Mode, the shopper types a full question, something like "20x25x1 MERV 13 filters, six pack, in stock and shipping this week," and the answer is assembled around whatever products can satisfy that sentence. The question now carries constraints. Your product data either contains those constraints or it does not.

Which means a blank field is not a small gap. It is a fact the system cannot state on your behalf. If your title says "Premium Filter 6 Pack, Best Value" and never says 20x25x1 or MERV 13, you are not a weak match for that question. You are not a match at all, because nothing in your data answers it.

What is known, and what is not.

I want to be exact here, because this topic attracts confident nonsense. Google has not published which feed attributes it weights on AI surfaces, and I have not seen an outside source that credibly reverse engineered one. If you read a post that ranks the fields by importance for AI Mode, ask where the ranking came from. What is published, publicly and in detail, is the Merchant Center product data specification: which attributes exist, which are required, and what values are valid. That specification is the surface area you control. Everything below comes from it, plus one thing that has been true since Product Listing Ads existed: shopping creative is generated from feed data, not from advertiser copy.

Ad copy is a claim you make about your product. Feed data is a fact about your product. An answer engine cannot quote a blank field.

How does Google AI Mode decide which products to show?

Nobody outside Google can hand you the selection logic. What is knowable is the input: the structured product data in your Merchant Center feed is the description of your catalog that Google's shopping systems hold, and shopping units are built from it rather than from headlines you wrote. So treat selection as a question of whether your feed carries the facts a shopper's question asks about: size, spec, identifier, category, price, availability, shipping. Adjectives are not facts. A product whose only differentiator lives in a headline is invisible to a query that asks about a specification.

The five feed attributes worth fixing first

1. Title: structure it like a spec sheet, not a billboard.

Google's spec allows up to 150 characters, and most surfaces truncate, so the front of the string carries the weight. A working order is brand, product type, then the specs a buyer would actually type (size, count, model, capacity), then the variant. Strip promotional text: Google's own product data spec tells you not to put things like "free shipping" or "sale" in the title, and that copy was never doing selection work anyway.

2. GTIN and identifier_exists: this is how you get matched to a product, not just a page.

If a manufacturer assigned a barcode to the item, Google expects the GTIN. Without it you are a loose listing instead of a known product, harder to compare, and exposed to item level issues. If the product genuinely has no manufacturer identifier (handmade, custom fabricated, private label with no barcode), set identifier_exists to no and say so explicitly. Do not fabricate a number, and do not leave the field ambiguous.

3. availability: it has to be true right now, and it has to match your product page.

The valid values are in_stock, out_of_stock, preorder, and backorder. Google also crawls structured data on your landing page and can use it to update price and availability (that feature is called automatic item updates). So a feed that says in stock while the page says backordered is not a private inconsistency. It is two contradicting sources of truth, and you lose either way: a mismatch flag, or a shopper who bounces.

4. google_product_category and product_type: two taxonomies, two different jobs.

google_product_category places you inside Google's own taxonomy, and it should be set at the leaf level, not the top node. If you leave it blank, Google infers it, and inference from a vague title is a coin flip. product_type is your taxonomy, free text, and it is the field that makes your reporting usable later. Set both. They take one afternoon and they do not change again until your catalog does.

5. custom_label_0 through custom_label_4: not a selection signal, a measurement tool.

Be clear about this one: custom labels do not make Google favor you. You get five slots, and their value is segmentation. Tag margin band, season, stock depth, price tier, or bestseller rank. Then when performance moves, you can answer the only question that matters, which is which slice of the catalog is producing. Without labels you are optimizing blind, and you will credit the wrong change.

Around those five sit the supporting attributes that make an item quotable: image_link with a clean product image and no promotional overlays, a description that front loads specifications instead of brand story, item_group_id plus size, color, and material so variants resolve as one product family, and the structured product_detail attributes for the specs that buyers filter on.

A worked example: a feed that fails silently

This is a composite built from failure patterns, not a specific client account. Picture a distributor with roughly 4,000 SKUs in replacement HVAC filters and parts. The feed uploads cleanly every week. Merchant Center shows no disapprovals on this item. Nobody investigates it, because from the dashboard, nothing is wrong.

The item is eligible and never chosen. When a shopper asks for a 20x25x1 MERV 13 six pack that is in stock, this row has nothing to say. The title is marketing. The identifier is missing. The category was guessed. Availability was last touched by hand nine days ago. Here is the same row before and after.

One product row, before and after a feed audit (composite example)
AttributeWhat the failing feed sendsWhat a readable feed sends
titlePremium Filter 6 Pack, Best Value, Free ShippingBrand MERV 13 Air Filter 20x25x1, 6 Pack, Pleated Furnace Filter
gtinblank, identifier_exists not setmanufacturer barcode on every SKU that has one, identifier_exists set to no where none exists
availabilityin_stock, updated by hand each weeksynced from inventory, matching the structured data on the product page
google_product_categoryblank, left for Google to inferthe leaf category for air filters, set explicitly
product_typeProductsFilters > Furnace > MERV 13 > 20x25x1
custom_label_0blankmargin band, so you can see which slice gets pulled

The reason this pattern survives for years is that it never triggers an alert. There is no error state for "technically valid, semantically empty." You only find it by reading your own feed the way a stranger would.

How to audit your product feed in an afternoon

Step 1: Download the feed as Google receives it, not your source spreadsheet.

The gap between what your PIM or Shopify app exports and what actually lands in Merchant Center is where most of the damage lives. Work from the received file.

Step 2: Measure coverage instead of eyeballing it.

Four percentages, one row of formulas: share of SKUs with a GTIN or an explicit identifier_exists value, share with google_product_category set, share with a title longer than a slogan, share with a working image_link. Those four numbers tell you whether you have a hygiene problem or a strategy problem.

Step 3: Read 25 titles as a stranger.

For each one, ask whether a person who has never heard of your company could match that title to a query containing a size, a model number, or a spec. If the answer is no more than a couple of times, titles are your first fix, ahead of everything else.

Step 4: Spot check 20 availability values against the live product pages.

Open the URLs and compare. Any mismatch means your inventory sync, not your feed, is the actual defect. Fix the sync first, or you will just publish wrong data faster.

Step 5: Set the taxonomy fields by hand for your top revenue categories.

You do not need all 4,000 SKUs on day one. Set google_product_category at leaf level and product_type in your own structure for the categories that carry the revenue, then work down the list.

Step 6: Fix the refresh cadence.

A correct feed refreshed weekly is a wrong feed six days out of seven. Move to a daily scheduled fetch at minimum, and use the Content API for price and stock if your catalog moves faster than that.

What a clean feed will not do for you

It will not create demand. If nobody is asking questions your catalog answers, perfect attributes change nothing. It will not rescue a price or shipping disadvantage, and it arguably exposes one: when the comparison is made on structured facts, being slower and more expensive becomes easier for a machine to notice.

Attribution on this surface is also thin right now. You may not be able to cleanly isolate AI Mode performance from the rest of your Shopping activity, which is exactly why the custom labels matter and why I would not promise anyone a measurable lift from a feed cleanup in week one. And feed work is maintenance, not a project. It decays every time you add SKUs, change suppliers, or migrate carts.

I do not know how much of AI Mode's current behavior will look the same in twelve months. Google changes surfaces constantly. What I am confident about is the direction: every layer Google has shipped in the last few years reads structured data better than it reads prose, and none of them have gotten worse at it.

This is the same job as schema markup and llms.txt

We treat feed attributes exactly the way we treat schema.org markup and llms.txt: machine readable facts about your business, placed where machines look. Your product page should carry Product and Offer markup with the same GTIN, price, and availability your feed sends. When those two disagree, you have two sources of truth about your own inventory, which is a bigger problem than any ad surface. We wrote about that failure mode in more depth in giving your business facts one source of truth.

If you want to see how the rest of your site reads to answer engines before you touch the feed, our AI Visibility scan is free and grades the twelve signals AI engines look at, with the fix sprint quoted from the scan results and shipping in 7 to 10 business days. Start with the free scan.

But if you sell products and you have to pick one thing this month, pick the feed. It is unglamorous, it is a spreadsheet, and it is the only copy about your products that Google's shopping systems have ever read.

Emre Benian, Founder of Benian Technologies

Emre Benian

Founder and CEO, Benian

LinkedIn

Emre started Benian in a dorm room at the University of Illinois Urbana-Champaign in May 2025. It took him 300 cold calls to land the first client. He’s an unusual kind of AI builder: he scopes the project, signs the contract, and writes the code that runs after. Based in Chicago. Finishing a BS in Industrial Engineering, which he treats as the lens of his practice: getting complex technology to work inside a running business, not in theory.

Get Started

Related Articles

Guides6 min read

Give your business facts one source of truth before AI repeats them

Guides14 min read

How to Measure AI ROI in a Small Business: 5 Numbers, 3 Formulas, and the Stats You Should Stop Trusting

AI Strategy14 min read

Agentic AI Is Being Oversold to Small Businesses. Here’s What Will Still Be Running in 2027.

Ready to Put AI to Work?

Get an honest breakdown of what AI would look like in your business.

Get StartedAbout Us
Free ConsultationNo CommitmentCustom Roadmap