
Product page SEO for Google and AI shopping means your product page, its Product schema and your Merchant Center feed all show the same price, stock, barcode (GTIN), reviews and policies, in a form machines can read. Most D2C stores get the basics right and still miss two things: real GTINs and reviews that crawlers can actually see.
This guide gives you a product page SEO checklist for AI search and Google, with what to check, how to fix it on Shopify, and how to measure the result. Examples are in ₹ and assume a Shopify store.
KEY TAKEAWAYS
- In an October 2026 scan of 7,979 mostly Shopify stores, 77% were flagged for products without barcodes or part numbers, and 90% for reviews that AI can’t see. Stricter “on any page checked” figures were 58.7% and 73.8%. (ProductSeen)
- Google says there is no special schema or AI file needed for AI Overviews or AI Mode. Accurate structured data that matches the page, plus an up-to-date Merchant Center account, is what it asks for. (Google Search Central)
- A price mismatch between your feed and your page can get products disapproved and “may lead to an account suspension”. (Google Merchant Center Help)
- Google reports that retailers who added correct GTINs saw a 20% increase in clicks on average. (Google Merchant Center Help)
Disclosure: this post contains an affiliate link to Semrush. If you buy through it, I may earn a commission at no extra cost to you.
Table of Contents
What Is Product Page SEO for Google and AI Shopping?
It is the work of making each product detail page (PDP) easy to find, understand and trust, for people and for the systems that now answer shopping questions for them. The definition hasn’t changed much. What counts as “understood” has.
Definition: Product page SEO for Google and AI shopping is the process of making a product page’s visible content, its Product structured data and its product feed describe the same product, with the same price, availability, identifiers, reviews and policies, so that Google Search, Google Shopping, AI Mode and AI assistants can match it to a shopper’s question and show it with confidence.
How AI shopping changed what product pages must do
A few years ago, a product page needed a good title, decent copy, photos and a fast template. You optimised for blue links. Now a shopper in Pune can type “best vitamin C serum under ₹800 for oily skin” into Google and get an AI answer with products, prices, ratings and a comparison table, without opening a single site.
To appear in that answer, your page has to supply facts a machine can match: price in rupees, stock, size, skin type, a barcode that ties it to the same product elsewhere, and a rating backed by real reviews. Copy that sounds nice but says nothing specific gives the AI nothing to work with. That is the whole shift, really. Fewer adjectives, more facts.
How Many D2C Stores Actually Fail Their Product Pages?
More than you’d guess. The best recent data comes from a scan published this month, and it needs a careful reading before anyone quotes it in a pitch deck.
What the October 2026 store scan measured
ProductSeen scanned 7,979 online stores (2,363 of them in the US) between 17 and 26 October 2026. Most were small and mid-size Shopify shops. For each store it read the homepage, robots.txt, llms.txt, the sitemap, Shopify’s public catalogue and up to five product pages, without running JavaScript, which is roughly how many AI crawlers see a page (ProductSeen methodology).
The median store scored 88 out of 100. Sounds healthy. The detail underneath it does not.
The ten most common product page failures
This is ProductSeen’s own “most common failures” table, copied as reported.
| Issue | Share of stores |
| Reviews aren’t visible to AI | 90% |
| Products lack barcodes (GTIN/UPC) or part numbers | 77% |
| Product images missing from structured data | 35% |
| Product page titles are too short or too long | 33% |
| No Organization schema on homepage | 31% |
| Thin product descriptions | 22% |
| Brand is missing from product data | 20% |
| Product pages missing meta descriptions | 19% |
| Product pages are missing Product schema | 16% |
| Products have no category (product type) | 16% |
Source: ProductSeen, State of AI Shopping Readiness, October 2026.
The same report’s headline cards give stricter figures: 58.7% of stores show no GTIN or part number on any page checked, 73.8% show no ratings AI can read on any page checked, and 12% have no Product data on any product page checked.
Why these numbers need careful, honest reading
Nothing else this recent exists at this scale, but three things limit it.
- The sample isn’t random. It leans towards Shopify and stores on public lists, by ProductSeen’s own admission.
- Five pages per store is a sample. A 400-SKU store might have GTINs on bestsellers and nothing else.
- ProductSeen sells a paid fix service. That makes it a vendor study. It also doesn’t explain why the failure table (90%, 77%) differs from the headline cards (73.8%, 58.7%), so I quote both.
Still, the pattern is plain: stores pass the obvious checks and fail on identifiers and reviews.
How Do Google, AI Mode, ChatGPT and Perplexity Read Product Pages?
Each system pulls product facts from a slightly different mix of sources, which is why “I added schema” never settles the question.
Page, structured data and feed: three copies
Every product exists in three places: the page a shopper sees, the JSON-LD your theme or apps print in the code, and the feed sent to Merchant Center. When they agree, every system can trust the data. When they don’t, none can.
| Google Search and AI Mode | Google Merchant Center | ChatGPT shopping | |
| Main data source | Crawled page, structured data and Merchant Center data | Your product feed, checked against your landing page | Product feeds (Shopify stores via Shopify Catalog) plus web crawling |
| JavaScript | Rendered, but Google recommends Product markup in the initial HTML | Markup must be in the HTML your server returns, not added by JS after load | OpenAI crawlers did not execute JS in the Vercel and MERJ study |
| Identifiers | GTIN and MPN recommended | GTIN recommended whenever one is assigned | gtin and mpn feed fields; don’t invent values |
| Reviews | aggregateRating, reviews must be visible on the page | Product ratings | review_count and star_rating, excluding store reviews |
| What breaks it | Markup that doesn’t match the visible page | Price or availability mismatch, leading to disapproval | Missing or stale product data |
Sources: Google merchant listing docs, Merchant Center structured data setup, OpenAI product feed spec, Shopify Catalog, Vercel.
What happens when AI crawlers skip JavaScript
If a crawler doesn’t run JavaScript, it only sees what your server sends in the first HTML response. Vercel and MERJ found that none of the major AI crawlers they measured rendered JavaScript, including OpenAI’s OAI-SearchBot, ChatGPT-User and GPTBot, while Google’s Gemini uses Googlebot’s infrastructure and does render (Vercel). That data is from December 2024, so treat it as a strong signal, not a permanent rule.
So a review widget that loads stars after the page opens? Invisible to those bots.
Google AI Mode shopping in India today
This is the channel that matters most for Indian brands right now. In April 2026, Google rolled out what it called its “biggest upgrade to shopping in AI Mode in Search in India”, with answers that pull price, reviews and inventory from the Shopping Graph and show comparison tables for products you’re deciding between (Google India Blog).
AI answers on shopping searches have also jumped. In Semrush’s commercial-keyword study, AI Overview coverage on eCommerce queries rose from 32.62% in September 2025 to 85.11% in August 2026 (Semrush). Not an India-only dataset, but the direction is clear.
ChatGPT and Perplexity shopping for Indian D2C brands
OpenAI’s merchant page says shopping in ChatGPT is currently live for users in the US, with more regions planned (OpenAI). OpenAI has also moved away from in-chat Instant Checkout, so purchases happen on the merchant’s own site. For a Shopify store, Shopify says ChatGPT access through Shopify Catalog is active by default for eligible stores (Shopify Help).
Perplexity has shopping features too, but I haven’t seen them confirmed for Indian merchants yet.
So if you sell only in India, Google is the urgent job and ChatGPT is the one to prepare for. If you ship to the US, your Shopify catalogue may already be reaching ChatGPT, planned or not.
Which Product Data Must Match Across Page, Schema and Feed?
Type “shopify product page seo checklist india” into Google and most results stop at titles, meta tags and speed. Those matter, but this layer comes first: if price, stock and identifiers don’t line up, every other fix sits on a weak base.
Match price, sale price and stock everywhere
Google crawls your landing pages and compares the price in your feed with the price on the page or in your markup. If they differ, the product may be disapproved, and Google warns that mismatches “may lead to an account suspension” (Google).
An illustrative festive-sale example: the page shows ₹1,299, the JSON-LD still says ₹1,499 because a theme snippet reads the compare-at price, and the daily feed sync shows yesterday’s ₹1,499. Three prices for one serum.
How to check: open the product page, press Ctrl+U to view the source, search for “price”, and compare it with the same item in Merchant Center. Then look in Merchant Center for “Mismatched product price” issues.
How to fix: use Shopify admin as the single source of truth, pick a feed app that syncs often, and switch on Merchant Center’s automatic item updates for price and availability. Google is clear that these automatic updates are a safety net for occasional mismatches, not a replacement for regular feed updates (Google).
Add complete Product schema in the initial HTML
Google requires name, image and offers for merchant listings, and recommends description, brand, sku, identifiers, aggregateRating, shipping and returns (Google).
Where the markup lives matters as much as what’s in it. Google recommends Product markup in the initial HTML “for best results”, and Merchant Center goes further: markup “can’t be generated with JavaScript after the page has loaded” if it’s going to match your product data (Google). On Shopify, that means Liquid-rendered JSON-LD, not a script-injected block.
A cut-down example for an Indian store (illustrative values):
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Vitamin C Face Serum 10% 30 ml",
"image": ["https://example.in/images/serum-1x1.jpg"],
"description": "A 30 ml vitamin C serum for oily and combination skin.",
"sku": "VCS-30",
"gtin13": "8901234567890",
"brand": { "@type": "Brand", "name": "ExampleBrand" },
"offers": {
"@type": "Offer",
"url": "https://example.in/products/vitamin-c-serum",
"price": "1299.00",
"priceCurrency": "INR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.4",
"reviewCount": "212"
}
}
One honest note: schema tells systems what your product is and what it costs. It doesn’t guarantee you’ll be picked.
Give every variant a real GTIN barcode
A GTIN is the barcode number on your pack. In India that’s usually a 13-digit EAN, and codes issued by GS1 India start with 890.
Google says products without unique identifiers “are difficult to classify”, and that “accurate matching to products can’t be assured when GTIN is missing” (Google). OpenAI’s feed spec asks for one assigned GTIN of 8, 12, 13 or 14 digits with a valid check digit, and says not to invent a value to replace a missing one (OpenAI). This is the 77% (or 58.7%) problem from the scan.
Selling on Amazon, Flipkart or a quick-commerce app? You probably have GS1 barcodes already, so put the same numbers in Shopify’s “Barcode” field for each variant. If not, only the brand owner can apply to GS1 India, it usually takes 7 to 10 working days, and your barcode quantity can’t be changed later, so count future variants first (GS1 India).
Never buy random barcodes from a reseller or make one up. Google’s own advice: “When in doubt don’t provide a GTIN.”
Mark up offers with INR and live availability
The Offer block holds price, currency and stock, which is exactly what AI Mode shows in Indian shopping answers. Get it wrong and you’re advertising something you can’t deliver.
Check three small things. Is priceCurrency set to INR? Is price a plain number like 1299.00, not “₹1,299/-“? And does availability change when a variant sells out? Plenty of themes hard-code InStock for every product, forever.
Group sizes and colours with ProductGroup markup
A 50 ml and a 100 ml bottle are two variants of one product. If your markup doesn’t say so, they can look like one product with two prices, which feeds straight back into the mismatch problem.
Google’s variant guidance uses ProductGroup with hasVariant or isVariantOf, variesBy, and a group ID. It says each variant needs a unique ID such as sku or gtin, and each product group needs its own ID too (Google). Merchant Center adds a related rule: when a page shows several offers, each one should carry a SKU or GTIN that matches the feed (Google).
Test it by switching variants: the markup’s price, SKU and GTIN should change with the ?variant= URL.
How Do You Make Reviews and Product Content Machine-Readable?
Most D2C brands have plenty of reviews and content. The trouble is where it sits on the page and how it loads.
Make AggregateRating visible in the raw page source
Your customers see 4.4 stars. A crawler that doesn’t run JavaScript may see nothing at all, because many review apps load the widget after the page opens. That’s the 90% problem.
Press Ctrl+U and search the source for aggregateRating. Not there? Then your rating doesn’t exist for bots that read raw HTML. Most established review apps have a server-side or theme-level schema setting; switch it on and keep the rating inside your single Product block.
Google’s review snippet guidelines also say the reviews you mark up must be “readily available to users from the marked-up page” (Google). Don’t mark up ratings that shoppers can’t see.
Keep product reviews separate from store reviews
“Fast delivery” reviews your store. “Faded my pigmentation in 6 weeks” reviews the product. Many D2C sites blend both into one star average.
OpenAI’s feed spec is direct on this: product review_count should exclude seller and store reviews, and store ratings have their own separate fields (OpenAI). Keep them apart, and only put product reviews in Product markup.
Write unique, factual descriptions with real specifications
ProductSeen flagged 22% of stores for thin descriptions. In my experience the bigger problem is copied ones: one template pasted across 40 SKUs with only the shade name changed.
AI answers match facts to questions. “Best sunscreen for oily skin under ₹600” needs the page to say oily skin, give the SPF, the size and the price, in plain text. OpenAI asks for a “factual product description”, and Shopify tells merchants selling through ChatGPT to put legal disclosures within the first 6,000 characters of the description (Shopify).
| Before (illustrative) | After (illustrative) |
| “Our bestselling serum gives you glowing, radiant skin you’ll love. Made with the finest ingredients.” | “A 30 ml serum with 10% vitamin C for oily and combination skin. Fragrance-free. Use 3 to 4 drops at night. Not recommended for sensitive skin without a patch test.” |
| Says nothing a machine can match | Answers skin type, strength, size, usage and limits |
Open with what it is and who it’s for, then specs, use cases and honest limitations.
Put specifications in HTML tables, not images
Many beauty brands put ingredient lists and “how to use” steps inside a designed image. Shoppers can read it. Crawlers can’t, not reliably.
Keep the image if it helps conversion, but repeat the facts as real text, ideally in a simple HTML table: ingredient, size, skin type, shelf life. Shopify’s own guidance for AI-ready PDPs asks for detailed specifications, sizing guides, materials and care instructions, and says detail meant mainly for AI can go lower on the page (Shopify).
Describe every product image with useful alt text
Blank alt text, or the product title repeated on every image. Both are common, neither helps.
Google uses alt text “along with computer vision algorithms and the contents of the page” to understand images (Google). For Product markup, it recommends several high-resolution images (at least 50K pixels when you multiply width and height) in 16×9, 4×3 and 1×1 ratios, with crawlable URLs (Google).
Write what’s actually in the picture. “Kumkumadi face oil 30 ml amber glass dropper bottle” works. “Best face oil India buy online” doesn’t.
Answer pre-purchase questions in visible on-page text
Read a week of your WhatsApp support chats. The same questions repeat: safe in pregnancy? Suits dry skin? Delivery time to Guwahati?
Answer those on the page in plain, visible text. Shoppers find them and AI systems can read them. Google no longer shows FAQ rich results (Google Search Central), so the value now is in the visible answer, not the markup.
Which Shipping, Linking, Speed and Feed Fixes Matter Most?
Some of these take ten minutes. Others need a developer and a sprint.
Mark up shipping and returns, or use Merchant Center
Delivery cost and return window are deciding factors for Indian shoppers, especially in fashion and beauty. Google can show both next to your products in Search, and lets you set a store-wide policy under Organization and override it per product under Offer (shipping, returns).
If keeping markup current is painful, Google suggests configuring these policies in Merchant Center or Search Console instead. For returns, Google documents an order of precedence, strongest first:
| Priority | Source of return policy |
| 1 | Content API for Shopping return settings |
| 2 | Settings in Merchant Center or Search Console |
| 3 | Product-level merchant listing markup |
| 4 | Organization-level markup |
Merchant Center beats your markup. Make them match anyway; shoppers see the page.
Show COD, GST and delivery promises clearly
Not a schema item. A trust item. Say whether the price includes GST, whether COD costs extra, and give a realistic delivery window, right next to the price. Shoppers arriving from an AI answer have already compared prices; vague delivery terms are where they drop off.
Link every product page to its parent category
Google says it uses the links between pages to work out how important each page is, and recommends a clear path from menus to categories to sub-categories to every product, using real <a href> links instead of JavaScript click events (Google).
On a PDP, that means linked breadcrumbs (pointing at the real collection, not /collections/all), a collection link in the description, and crawlable “related products”. It also strengthens your category pages, the other half of the job, which I covered in my Revenue First framework for category pages.
Pass Core Web Vitals on mid-range Android phones
The targets are LCP within 2.5 seconds, INP of 200 milliseconds or less and CLS of 0.1 or less (web.dev). Test on mobile field data, because most of your buyers are on a phone and many are on patchy 4G.
Usual culprits: old apps never removed, heavy hero images, and widgets that shift the layout as they load. I’ve covered speed and rendering in more depth in my technical SEO checklist for HEO.
Complete your Merchant Center feed beyond basic approval
“Approved” is a low bar. A product can be approved and still be missing its GTIN, brand or product category, which limits where and how it shows. Most brands optimize the feed once at launch and never look again.
Google’s product data tips say to use the same title and description as your landing page, the same colour names (don’t turn “Midnight Sky” into “Dark Blue”), and a Google product category at least 2 to 3 levels deep (Google). Google also says that providing both structured data and a Merchant Center feed “maximizes your eligibility” for shopping experiences (Google). Check Diagnostics for “limited performance” warnings, and re-check after every sale event.
Review Shopify Catalog and agentic channel settings
Plenty of Shopify merchants I speak to have never opened this screen. In Shopify admin, go to Sales channels, then Agentic. It shows whether your store is eligible for Shopify Catalog, how many products are included, and which AI channels (like ChatGPT and Microsoft Copilot) can access them (Shopify).
Two catches: blocking AI crawlers in robots.txt doesn’t stop Catalog from sending data to activated channels, and inclusion “doesn’t guarantee that a product will appear in a specific AI answer” (Shopify).
Allow the AI search crawlers you actually want
Check robots.txt.liquid for rules blocking OAI-SearchBot, PerplexityBot or Googlebot from /products/. ProductSeen found only 0.2% of stores blocking OAI-SearchBot, so it’s rarely the issue, but it takes a minute to rule out.
How Do You Audit One Product Page in 30 Minutes?
Pick your best-selling product. These eight steps use free tools and take about half an hour once you’ve done them twice. (I still do this on every new client store. It’s boring, and it finds problems every time.)
Step 1: View the raw page source
Press Ctrl+U on the product page. That’s roughly what a non-rendering crawler gets. If the price, name or rating isn’t here, assume some bots can’t find it either.
Step 2: Count the Product schema blocks
Search the source for “@type”: “Product”. You want one complete block. On Shopify it’s common to find two or three, one from the theme and others from review or SEO apps, often with different prices or ratings. Paste the URL into Google’s Rich Results Test to see what Google reads.
To check this across the whole catalogue instead of one URL at a time, I use the Markup report in Semrush Site Audit (affiliate link). It lists valid and invalid structured data items for every page it crawls, so you can spot the PDPs with missing or broken Product markup in one go.
Step 3: Compare page price with feed price
Note the price on the page, in the JSON-LD and in Merchant Center. All three must match, sale price included.
Step 4: Check GTIN, brand and SKU fields
In Shopify admin, open the product and look at each variant’s Barcode and SKU fields. Then check that the GTIN shows up in the JSON-LD (as gtin13 or gtin) and in the feed. Brand should be your real brand name, not “Default Vendor”.
Step 5: Confirm ratings appear without JavaScript
Go back to the source and search for aggregateRating. If the stars only show on the rendered page, they’re coming from a script.
Step 6: Switch variants and recheck the markup
Pick a different size or shade. The URL should change to ?variant= and the price, SKU, GTIN and availability in the markup should change with it. Try a sold-out variant too. If it still says InStock, that’s a fix for your developer.
Step 7: Run Merchant Center and Search Console checks
In Merchant Center, open the product and read every issue, including “limited performance” warnings. In Search Console, use URL Inspection on the page and check the Merchant listings and Product snippets reports for errors.
Step 8: Test mobile speed with field data
Run PageSpeed Insights and read the field data (real Chrome users) before the lab score. No field data for one URL? Use Search Console’s Core Web Vitals report for the page group.
Once you’ve done one page, here’s how I’d rank the fixes:
| Priority | Fix | Effort on Shopify | Why it comes first |
| 1 | Page, markup and feed consistency | Low to medium | Stops disapprovals and wrong prices in AI answers |
| 2 | GTINs on every variant | Low if you already have GS1 codes | Product matching; the most common gap in the scan |
| 3 | Reviews in the raw HTML | Usually an app setting | Trust signal most stores are missing |
| 4 | One clean Product or ProductGroup block | Medium | Removes conflicting schema |
| 5 | Descriptions, specs, images, policies | Medium to high | Gives AI answers facts to match |
| 6 | Internal links and speed | Ongoing | Builds up over time |
Your product pages may be losing sales on Google and AI shopping results. Find out what’s holding them back with a 14-Day Free Semrush One trial
How Do You Measure Product Visibility in AI Search?
Google now gives you two official reports for this. Neither tells the whole story alone.
Read the Search Console generative AI report
Since 31 August 2026, every site can see a generative AI performance report in Search Console. It shows impressions from AI Overviews and AI Mode, broken down by page, country, device and date (Google). Filter it to your /products/ URLs to see which PDPs appear in AI answers.
| What it shows | What it doesn’t show |
| Impressions in AI Overviews and AI Mode | Clicks |
| Which pages appeared | Which queries triggered them |
| Country, device and date trends | Revenue or conversions |
Track AI share of voice in Merchant Center
Merchant Center’s AI performance insights report covers how your products show up for conversational shopping queries in AI Mode and AI Overviews. It’s available for English-language queries for accounts in India, among other countries, under Analytics, then Products, then the “AI performance” tab (Google).
The headline metric is share of voice: your AI impressions against the competitors Merchant Center defines for related queries. It’s relative visibility, not sales. For the prompt-testing side (asking ChatGPT, Gemini and Perplexity directly), use the method in my GEO audit guide.
What Should You Fix First on Your Product Pages?
Three things this month. None needs a redesign.
- Make the price, stock and identifiers on your page, schema and Merchant Center feed say exactly the same thing.
- Add real GS1 barcodes to every variant, in Shopify and in the feed.
- Get your star rating into the raw HTML, inside a single Product block.
Then work through the rest of the checklist one layer at a time. If someone asks you how to optimize product pages for AI search, the honest answer is less glamorous than they expect: accurate data, visible facts and a page that loads fast. Re-run the 30-minute audit after every theme or app change.
Is your best-selling product invisible to AI? Find out in one audit.
Comments are closed