Home › Blog › Product descriptions for AI agents
Shopify product descriptions for AI shopping agents: the six signals ChatGPT, Perplexity, and Google AI Mode extract
AI shopping agents don't rank products the same way Google does. They generate recommendations by extracting signals from your product description — and if your description is too short, too generic, or stripped of context, they quote a competitor instead. Here's exactly what ChatGPT, Perplexity, and Google AI Mode read, the six signals that determine whether your products get recommended, and how to rewrite descriptions that work for all three.
On this page
- Why product descriptions matter more now than in the SEO era
- How AI shopping agents read product descriptions
- The 150-word threshold and why it exists
- Per-agent behavior: ChatGPT vs. Perplexity vs. Google AI Mode
- The six description signals that determine AI visibility
- Common Shopify description problems that hurt AI visibility
- The JSON-LD description connection
- Writing descriptions that work for all three agents
- Before / after: a real description rewrite
- Auditing your catalog with CatalogScan
- FAQ
Why product descriptions matter more now than in the SEO era
For the past decade, conventional e-commerce SEO advice pushed merchants toward shorter, keyword-dense product pages. A/B tests consistently showed that shoppers didn't read long descriptions. The advice became: put your keywords in the title and meta description, keep the body copy short, and let structured data carry the catalog signals.
That logic was correct for traditional search engines, which primarily ranked products by keyword match and PageRank signals. It is wrong for AI shopping agents.
When a shopper asks ChatGPT "find me a lightweight running shoe under $120 that works for wide feet," ChatGPT doesn't return a ranked list of keyword-matching URLs. It generates a recommendation — a natural language response that may quote specific product attributes, contrast options, and explain why a particular product fits the shopper's query. To generate that recommendation, the agent needs rich source material. Your product description is that material.
Structured data (Product JSON-LD) handles price, availability, GTIN, and review scores. But the qualitative fit signals — why this shoe works for wide feet, what materials make it lightweight, which training styles it's designed for — come from the description. If the description doesn't contain them, the agent either skips your product or invents them (hallucinating specifications is a known failure mode for LLM-based shopping agents when product data is thin).
How AI shopping agents read product descriptions
AI shopping agents access your product descriptions through three pathways, each with different implications for how they use the content:
1. Direct page crawl
GPTBot (ChatGPT), PerplexityBot, Google-Extended, and ClaudeBot all crawl your product pages directly. When they render your product page, they extract the text content from the body_html field that Shopify outputs inside the product description container (.product-description or [data-product-description] in most themes). This is the full HTML description — including any formatting you've applied in the Shopify product editor.
What they don't always do: execute JavaScript that loads description content after the initial page render. If you're using a third-party app that injects enriched product content via client-side JS, that content may be invisible to crawlers. The description that matters is what appears in the server-rendered HTML response.
2. /products.json feed ingest
ChatGPT Shopping's OAI-SearchBot and Perplexity's PerplexityBot both consume Shopify's /products.json endpoint as a bulk catalog ingest. This endpoint exposes the body_html field for every product. However, HTML tags are stripped during processing — the agent sees plain text, not formatted HTML. Bullet points created with <ul><li> survive as whitespace-separated text, but visual formatting cues are lost. The underlying word content is what matters.
3. Google Merchant Center / Shopping Graph
Google AI Mode's product knowledge panels draw from the Google Merchant Center Shopping Graph, which in turn is fed by your Google Shopping product feed. If you're using the Google & YouTube channel app or a third-party feed tool, the description field in your feed is typically sourced from the Shopify body_html field (HTML-stripped). Google's Shopping Graph enrichment process does additional processing — including entity extraction and cross-reference matching — but the raw description quality still anchors the signal strength.
The 150-word threshold and why it exists
There is no published minimum word count requirement from any AI shopping agent. But analysis of product visibility patterns shows a consistent inflection point around 150 words: products with descriptions below this threshold appear significantly less often in AI-generated shopping recommendations, even when their structured data (price, GTIN, AggregateRating) is correctly implemented.
The reason is probabilistic. AI recommendation models work by measuring semantic similarity between the shopper's query and the product content. A 30-word description — "Premium running shoes with breathable mesh upper and cushioned sole. Available in multiple colors." — matches almost any shoe query. It provides no differentiating signal. With hundreds of similarly vague products competing for the same query, the model has no basis for preferring yours over any other.
A 200-word description that includes material composition, intended use cases, fit characteristics, and comparison context gives the model enough signal to match the product to specific shopper intents — "wide width," "trail vs. road," "for marathon training," "lightweight for speed work." Each concrete attribute is an additional match vector.
| Description length | Typical AI agent behavior | Common outcome |
|---|---|---|
| < 50 words | Treated as a product stub; may be indexed but rarely quoted in recommendations | Invisible in conversational queries; appears only in near-exact name matches |
| 50–100 words | Insufficient context for use-case matching; description usually skipped in favor of structured data (price, rating) | Price-only visibility — recommended only when explicitly cheapest in a category |
| 100–150 words | Borderline; matches generic category queries but loses out on specific intent queries | Moderate visibility; wins on exact product name, loses on "best for X" and comparison queries |
| 150–300 words | Sufficient for attribute extraction; recommended for both category and use-case queries | Good visibility across most query types; CatalogScan baseline recommendation |
| 300–500 words | Rich source material; frequently quoted verbatim in Perplexity and Google AI Mode | High visibility; strong performance on comparison queries ("X vs Y", "best for Z") |
| > 500 words | Excellent for long-tail query coverage; diminishing returns past ~600 words | Maximum visibility on niche and specification queries; Google AI Mode knowledge panel enrichment |
Per-agent behavior: ChatGPT vs. Perplexity vs. Google AI Mode
Each AI shopping agent extracts different information from product descriptions and weights that information differently in its recommendation model.
| Signal in description | ChatGPT Shopping | Perplexity Shopping | Google AI Mode |
|---|---|---|---|
| Use-case language ("for marathon training," "for sensitive skin") | HIGH — primary match vector for conversational queries | HIGH — Perplexity's evidence-based model cites use-case language directly | MEDIUM — supplements Shopping Graph entity matching |
| Material / ingredient / specification | MEDIUM — used for spec comparison queries | HIGH — Perplexity frequently quotes exact specs in product summaries | HIGH — Google Shopping Graph uses spec data for product knowledge panels |
| Comparison language ("unlike standard foam," "similar to X but lighter") | HIGH — explicitly surfaced in "X vs Y" and "alternative to X" queries | MEDIUM — Perplexity prefers external review citations for comparisons | LOW — Google Shopping avoids competitive references in knowledge panels |
| Problem/solution framing ("if you have X problem, this solves it") | HIGH — ChatGPT's recommendation layer maps problems to solutions | HIGH — problem framing matches shopper query intent well | MEDIUM — matters for Featured Snippet candidacy in AI Overviews |
| Numbers and measurements (weight, dimensions, capacity) | MEDIUM — used when shopper query includes specific number constraints | HIGH — cited in Perplexity answer cards with source attribution | HIGH — extraction target for Google Shopping specification attributes |
| Social proof in description ("trusted by 10,000+ runners") | LOW — ChatGPT uses AggregateRating schema, not description text, for social proof | LOW — Perplexity cites external review sites, not product copy | LOW — Google ignores merchant-written social proof claims |
The six description signals that determine AI visibility
Based on analysis of product visibility patterns across CatalogScan's scan database, six structural elements in product descriptions consistently separate products that appear in AI shopping recommendations from those that don't.
Common Shopify description problems that hurt AI visibility
Most description problems in Shopify stores fall into one of six categories. Each one reduces AI shopping visibility in a different way.
Problem 1: Marketing copy substituted for product information
The most common failure mode. Descriptions written to "convert" rather than to inform: "Experience the pinnacle of craftsmanship with our award-winning collection. Every detail has been carefully considered to bring you a product that exceeds your expectations." This copy contains no attributes, no use-case signals, no specifications — nothing an AI agent can extract to answer a shopper's question.
Problem 2: Shopify Magic defaults left in place
Shopify Magic, the AI writing assistant built into the product editor, generates short (40–80 word) generic descriptions when given minimal input. These descriptions consistently score low on the signal checklist: they're typically two sentences of marketing phrasing with no specific attributes. If you used Shopify Magic to generate descriptions and didn't rewrite them, your catalog likely has a systemic description quality problem.
Problem 3: HTML in the description that doesn't render as content
Some merchants paste in raw HTML, inline CSS, or embed code directly into the product description editor. When AI agents process the body_html field from /products.json, they receive this HTML as literal text — including tag names, attributes, and encoded characters. The effective word count drops dramatically once all the non-content markup is removed. A 500-character description field can have fewer than 80 words of actual product text.
# Check how much of your description is actually text vs. HTML markup
# Run this in your browser console on a product page:
const desc = document.querySelector('.product-description');
const text = desc ? desc.innerText.trim() : '';
console.log('Word count:', text.split(/\s+/).filter(Boolean).length);
console.log('HTML length:', document.querySelector('[data-product-description]')?.innerHTML?.length || 0);
Problem 4: Variant-level attributes missing from the main description
Shopify's product structure separates product-level attributes (title, description, vendor) from variant-level attributes (size, color, SKU, weight, price). AI agents consuming /products.json do get variant data — but the description field is product-level only. If your description says "available in three sizes" without specifying what those sizes are, and the weight or dimensions differ by variant, that per-variant spec is either buried in the variant object or missing entirely from the text the agent reads.
The fix: add a brief specification section to the product description that enumerates variant-level differences — "Available in S (255g), M (285g), L (310g)" — so agents can match queries like "the lightweight version" or "the XL size."
Problem 5: Duplicate descriptions across product variants or similar products
Using the same boilerplate description across multiple products (different colors of the same item, different SKUs in a product line) creates a content duplication problem. AI agents normalize their content index and down-rank duplicated text. More practically: if 12 products share the same 80-word description, none of them stand out in the semantic similarity matching that determines recommendations. Each product needs description text that's differentiated enough to match distinct queries.
Problem 6: No query-matching language for long-tail intents
Shoppers query AI agents in natural language, often with very specific constraints: "water bottle that fits in a car cup holder and keeps drinks cold for 12 hours," "yoga mat thick enough for joint pain that doesn't slip on hardwood." These are multi-constraint queries. A description that mentions "12-hour insulation" and "2.75 inch diameter" matches the first query. A description that says "thick, non-slip" without measurements matches neither query specifically.
The JSON-LD description connection
Your Product JSON-LD schema includes a description property. Most Shopify themes that auto-generate structured data populate this field from the same body_html source as the visible page description — which means whatever problems exist in your HTML description also exist in your structured data description.
There's an additional constraint in JSON-LD: the description property should be plain text, not HTML. Some auto-generated Product schemas pass the raw HTML string into the JSON-LD, which creates invalid structured data (Rich Results Test will flag this as an HTML parsing error).
The correct Liquid pattern for a clean, plain-text description in JSON-LD:
{%- liquid
assign desc_text = product.description | strip_html | strip_newlines | truncatewords: 500
-%}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ desc_text | json }},
...
}
</script>
The strip_html filter removes all HTML tags. strip_newlines flattens the text to a single line, which prevents JSON parsing errors from literal newlines inside a string value. truncatewords: 500 caps the field at 500 words — past that, the JSON-LD size starts affecting page weight without proportional benefit for structured data.
description in your JSON-LD is consistent with the visible page content. Significant divergence (e.g., a long JSON-LD description with a minimal visible description, or vice versa) can trigger a quality warning. Keep them in sync — the JSON-LD version should be the plain-text equivalent of the visible description, not a separate document.
Also important: the description in the Product schema is different from the description of an Offer (which is used for condition/availability notes) and from the meta description tag (which is what Google shows in standard blue-link search results). These three description fields serve different audiences and should be maintained separately.
Writing descriptions that work for all three agents
The description structure that scores highest across ChatGPT, Perplexity, and Google AI Mode follows a consistent five-part format. This isn't a template to paste verbatim — it's a checklist of the elements to hit, in approximately this order:
- Lead with the specific USP. First sentence, 15–25 words. State the one thing that's true about this product that isn't generically true of every product in its category. This anchors the agent's understanding before it reads the rest.
- Name the primary use case and user type. One or two sentences. Who is this for, in what context, doing what activity? "Built for professional baristas pulling 200+ shots per day" is infinitely more useful to an AI agent than "perfect for coffee lovers."
- List the key specifications with numbers. The most important measurable attributes. For physical products: weight, dimensions, materials, capacity. For consumables: concentration, ingredients, size/volume. For software: limits, integrations, supported platforms. Numbers are the most extractable unit in product descriptions — AI agents quote them precisely.
- Address a specific constraint or problem. One sentence, explicitly stating what kind of shopper problem this product solves. Mirrors the structure of high-intent queries ("for people who need X," "if you have Y problem").
- Brief comparison context. One or two sentences positioning against the category norm or a well-known alternative. This activates comparison query matching. Be factual, not disparaging.
This structure produces a description in the 150–250 word range for most products. For high-ticket, complex, or technical products, adding a "what's in the box" section and an FAQ block (3–5 questions) extends coverage of long-tail queries without diluting the core content.
Before / after: a real description rewrite
Here's a representative example of a Shopify product description rewritten using the framework above. The "before" version is a common real-world pattern — not a strawman.
Product: Stainless steel insulated water bottle, 32 oz
Stay hydrated in style with our premium stainless steel water bottle. Featuring double-wall vacuum insulation technology, this bottle keeps your drinks cold for hours. Crafted from high-quality, BPA-free materials that are safe for the whole family. The leak-proof lid means you can toss it in your bag without worry. Available in a variety of colors to match your lifestyle. The perfect companion for any adventure.
The 32 oz TrailKeep vacuum bottle keeps drinks cold for 24 hours and hot for 12 — verified at 35°F ambient temperature with ice-to-water ratio testing, not marketing-lab conditions.
Built for hikers and trail runners who need full-day hydration without a resupply stop. The wide 2.4" mouth fits standard ice cubes and accepts most carabiner clips directly without an adapter ring.
Construction: 18/8 grade 304 stainless steel body, 18/10 grade 316L stainless steel lid contact surface (the grade used in surgical instruments — more corrosion-resistant than the 304 standard). No plastic liner. No PFAS-coated coating. Weighs 350g (12.3 oz) empty.
Works for people who've had problems with cheaper bottles retaining coffee or metallic taste after a few months — the 316L lid contact and mechanical polishing (not chemical polishing) prevent flavor transfer that builds up in lower-grade stainless.
Narrower than most 32 oz bottles at 2.9" diameter — fits every standard car cup holder we've tested (Tacoma, Subaru, Tesla Model 3). Some 32 oz competitors run 3.5–3.8" and don't fit.
Comes with a standard loop lid and a straw lid. Dishwasher safe on the top rack.
The "after" version hits all six signals: specific USP with quantified claim, named use case and user type, exact materials with grades, constraint language ("for people who've had problems with"), comparison context (diameter, competitor fit), and quantified specs throughout. At 218 words, it comfortably exceeds the 150-word threshold and gives AI agents multiple distinct match vectors for different query types.
Auditing your catalog with CatalogScan
Running a manual description audit across a large product catalog is impractical — a 500-product Shopify store can take days to review and rewrite by hand. CatalogScan's description signal check identifies which products fall below the length threshold, which have high HTML-to-text ratios, and which are missing key attribute categories (material, specification, use case) — so you can prioritize rewrites where they'll have the most impact on AI shopping visibility.
The scan also correlates description quality against the other 12 visibility signals (GTIN coverage, AggregateRating implementation, robots.txt access gates, canonical URL discipline) to show where description problems compound with other issues — the cases where fixing the description alone won't fully unlock visibility because a structured data gap is blocking the same product.
See which products have description gaps
Free scan — enter your Shopify store URL and get a full signal audit in under 60 seconds.
Scan my store free View pricingFAQ
Does the Shopify product meta description affect AI shopping agents?
The meta description tag (<meta name="description">) is primarily used by standard search engines for blue-link snippets. AI shopping agents consuming /products.json don't read the meta description — they read the body_html field. Google AI Mode crawlers read both, but the product body description is weighted higher for Shopping Graph content. Write your meta description for search engine CTR; write your product description for AI agent recommendations. They're separate optimization targets.
Should I write one long description or use bullet points?
Both formats work for AI agents — the underlying text is what matters, not the HTML formatting. However, AI agents processing /products.json receive your description as HTML-stripped plain text, so bullet points become whitespace-separated text fragments. If your specifications are in a bullet list, make sure each bullet is self-contained ("Weight: 350g (12.3 oz)") rather than dependent on a preceding sentence for context. Prose paragraphs communicate better when the HTML is stripped; structured data (JSON-LD specifications property) is the better home for pure tabular data.
How often should I update product descriptions?
AI agents re-crawl your product pages periodically — the interval is product-category and traffic-dependent, but high-selling products typically get crawled every 2–4 weeks by major crawlers. If you add a new use case, update a specification, or want to add comparison language after seeing competitor data, updates take effect within one to two crawl cycles. The bigger leverage is getting all products above the 150-word threshold before optimizing individual descriptions further — batch improvement across the catalog beats perfecting a handful of top products.
Will AI-optimized descriptions hurt my conversion rate on the product page?
Not if you write them well. The attributes that help AI agents are also the attributes shoppers read when evaluating a purchase — specific specs, clear use cases, honest comparison context. The descriptions that hurt conversion rates are the ones that obscure product attributes behind marketing language. Rewriting toward specificity tends to improve both AI visibility and human conversion rate simultaneously. The two goals are more aligned than the conventional "short copy for conversion" wisdom suggests.
My descriptions are auto-generated by an AI tool — is that a problem?
It depends on the input quality. AI description generators (including Shopify Magic) produce generic output when given generic input. If you're feeding them just a product title and a few tags, you'll get a description that looks like every other AI-generated description in the category — and it will score poorly on the six signals above. AI generation tools work well when you give them specific input: exact materials, numeric specifications, known use cases, comparison context. The tool's job is to turn that information into readable prose; your job is to supply the information the tool needs.