How Product Feed Scan measures your feed
Methodology v1.1 · Last reviewed 2026-09-19
We measure the fields in the supplied XML or CSV, using deterministic, versioned checks. A score describes the checks actually run on that scan. It is not a platform decision, a probability of acceptance or a prediction of revenue.
General Feed Quality
The general profile applies 13 checks to identifiers, short or missing content, URL syntax, prices, stock values, brand and category coverage. It does not measure semantic truth or live stock. A Google Shopping source can be inspected with this profile, but there is no separate Google compliance score.
For each failed rule, the engine multiplies its configured deduction by the share of all scanned products that fail it. Rounded deductions are added, subtracted from 100, and the result is floored at zero. Isolated encoding recovery adds a visible ten-point feed-level deduction. Findings are ordered by severity, then score impact, then rule code. A product can contribute to several findings; adding affected counts does not give a unique-product total.
Channel Readiness
The versioned OpenAI profile has 46 checks and its own weights. It selects native or Google-compatible data checks from the detected format. It does not submit the feed or validate advertiser registration. Format compatibility, data readiness and platform compliance are different questions.
Use the selected profile and saved ruleset version when interpreting a historical report. Never treat a score in one profile as equivalent to the same number in another.
AI Shopping Readiness
The general audit also computes six independent coverage dimensions. For each applicable dimension, check weights are multiplied by affected shares of evaluated products. The dimension starts at 100 and loses that weighted share. The overall indicator is the weighted mean of applicable dimension scores. A dimension with no evaluated checks is not applicable, not zero, and its nominal weight is excluded from the mean.
Identity: 25% nominal weight
- Stable product identifier — Provide a real, stable ID for each product. Level: baseline.
- Unique product identifiers — Use a distinct product ID without changing established IDs unnecessarily. Level: baseline.
- Brand coverage — Supply the actual brand or manufacturer where applicable; do not invent it. Level: strong recommendation.
- Recognized identifiers — Add an assigned GTIN or MPN where applicable; absence is not proof that the product needs one. Level: strong recommendation.
Content: 25% nominal weight
- Descriptive title proxy — Use an accurate, descriptive title; this heuristic checks at least 20 characters, not semantic truth. Level: baseline.
- Useful description proxy — Provide factual descriptive text of at least 50 characters. Length is a proxy, not a language-model quality judgment. Level: strong recommendation.
Taxonomy: 15% nominal weight
- Category context — Provide an appropriate category or product type; this checks presence, not the correctness of a taxonomy assignment. Level: strong recommendation.
Variants: 10% nominal weight
- Declared variant grouping — For declared variants provide a group ID distinct from the individual product ID. Level: baseline.
- Declared variant options — Describe actual variant options using color, size or a nonempty option map. Cross-row uniqueness is not checked. Level: strong recommendation.
Assets: 15% nominal weight
- Primary image URL syntax — Provide a valid HTTP/HTTPS image URL without credentials. Reachability, dimensions and image relevance require separate review. Level: baseline.
Enrichment: 10% nominal weight
- Optional structured attributes — Where relevant, add factual color, size or material data. Not every product needs these attributes. Level: advanced enrichment.
- Optional additional asset — Provide an additional image URL only when it adds useful, accurate product context. Level: advanced enrichment.
- Optional structured detail — Consider factual product detail where relevant. No ecosystem-specific conversational attribute is treated as a universal AI requirement. Level: advanced enrichment.
AI readiness does not guarantee recommendation by any AI system, ChatGPT Ads compliance or Merchant Center approval. Optional enrichment remains low priority. Recovered U+FFFD text does not count as usable content for these coverage checks.
Severity and score interpretation
Critical, high and medium labels prioritize the underlying general or native rule. They are diagnostic priorities, not a platform enforcement state. AI dimension guidance uses baseline, strong recommendation and advanced enrichment with high, medium and low priority respectively.
The existing result labels are Excellent at 90–100, Good at 75–below 90, Needs attention at 50–below 75 and Critical issues below 50. These are presentation bands, not an approval threshold. The AI aggregate is a coverage indicator without a separate pass/fail threshold. Read the findings even when the score is high.
Implemented rule inventory
General product feed · profile v1 · 1.1.0
Score model: weighted-coverage-v1
- Missing product ID (critical) — Add a stable, unique ID or SKU to every product.
- Duplicate product ID (critical) — Make every product ID unique and keep it stable between feed refreshes.
- Missing or very short title (high) — Use a descriptive product title of at least 20 characters.
- Missing or very short description (medium) — Provide a useful product description of at least 50 characters.
- Missing product link (critical) — Add a public HTTP or HTTPS landing-page URL to every product.
- Invalid product link (critical) — Use a syntactically valid HTTP or HTTPS product URL.
- Missing primary image (high) — Add a public primary image URL to every product.
- Invalid primary image URL (high) — Use a syntactically valid HTTP or HTTPS primary image URL.
- Missing or malformed price (critical) — Provide a positive decimal amount followed by a three-letter currency, for example 39.00 EUR.
- Missing or unsupported availability (high) — Use in_stock, out_of_stock, preorder or backorder.
- Missing brand (medium) — Add the product brand or manufacturer when applicable.
- Missing GTIN and MPN (medium) — Provide a GTIN or MPN when the product has a recognized identifier.
- Missing product category (medium) — Add product_type, category or google_product_category.
ChatGPT Ads Feed Readiness · profile v2 · openai-products-2026-09-19
Score model: openai-readiness-v1
- Missing or placeholder item_id (critical) — Provide the actual item_id in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder title (critical) — Provide the actual title in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder description (critical) — Provide the actual description in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder url (critical) — Provide the actual url in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder image_url (critical) — Provide the actual image_url in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder brand (critical) — Provide the actual brand in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder seller_name (critical) — Provide the actual seller_name in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder price (critical) — Provide the actual price in the native OpenAI product-file schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Duplicate item_id (critical) — Use a stable unique item_id for each purchasable item or variant. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Product URL must use public HTTPS (critical) — Use an absolute HTTPS product URL without embedded credentials. Reachability and page contents require separate verification. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Image URL must use public HTTPS (critical) — Use an absolute HTTPS image URL without embedded credentials. Image dimensions and reachability are not checked. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Invalid OpenAI price format (critical) — Use a positive amount, decimal point and uppercase ISO currency; do not exceed its fractional precision. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or invalid availability (critical) — Use in_stock, out_of_stock, pre_order, backorder or unknown in the native OpenAI format. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Ads eligibility is unconfirmed (high) — A confirmed feed-level default may apply. Verify Ads Manager setup; do not assume eligibility from an absent value. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Product intentionally excluded from Ads (medium) — false explicitly opts this item out. Keep it false if intentional; this is not malformed product data. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Invalid Ads filter metadata (high) — Use a JSON object of string values with integration-configured keys. Keys are not verified against your account. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Title exceeds recommended length (medium) — Keep the factual title concise, aiming for at most 150 characters. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Description exceeds recommended length (medium) — Use a plain-text factual description, aiming for at most 5,000 characters. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Description contains markup (medium) — Review the description and provide plain text; do not fabricate replacement wording. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Unsupported condition (medium) — When supplied, use new, refurbished or used. Always declare used/refurbished products. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid seller URL (medium) — Omit an unknown optional seller URL or supply an absolute HTTPS storefront URL. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid supplied GTIN (medium) — Use an assigned 8, 12, 13 or 14 digit GTIN with its check digit. Preserve leading zeros; omit an unassigned identifier. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid optional sale price (medium) — Provide a positive sale price below the regular price, in the same currency; otherwise omit it. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Incomplete or invalid variant metadata (high) — For declared variants provide a distinct group_id and nonempty JSON option map. Cross-row option uniqueness and page consistency need separate review. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder id (critical) — Provide the actual id in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder title (critical) — Provide the actual title in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder description (critical) — Provide the actual description in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder url (critical) — Provide the actual url in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder image_url (critical) — Provide the actual image_url in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder brand (critical) — Provide the actual brand in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or placeholder price (critical) — Provide the actual price in the registered Google-compatible schema. Do not invent missing product data. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Duplicate id (critical) — Use a stable unique id for each purchasable item or variant. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Product URL must use public HTTP(S) (critical) — Use an absolute HTTP or HTTPS product URL without embedded credentials. Reachability and page contents require separate verification. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Image URL must use public HTTP(S) (critical) — Use an absolute HTTP or HTTPS image URL without embedded credentials. Image dimensions and reachability are not checked. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/ads/product-feeds (ruleset openai-products-2026-09-19).
- Invalid OpenAI price format (critical) — Use a positive amount, decimal point and uppercase ISO currency; do not exceed its fractional precision. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or invalid availability (critical) — Use in_stock, out_of_stock, preorder or backorder. unknown and pre_order are invalid in Google-compatible feeds. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Title exceeds recommended length (critical) — Keep the factual title concise, aiming for at most 150 characters. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Description exceeds recommended length (critical) — Use a plain-text factual description, aiming for at most 5,000 characters. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Description contains markup (critical) — Review the description and provide plain text; do not fabricate replacement wording. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Unsupported condition (medium) — When supplied, use new, refurbished or used. Always declare used/refurbished products. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid supplied GTIN (medium) — Use an assigned 8, 12, 13 or 14 digit GTIN with its check digit. Preserve leading zeros; omit an unassigned identifier. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid optional sale price (critical) — Provide a positive sale price below the regular price, in the same currency; otherwise omit it. Business impact: review the operational or data-quality risk. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing conditional product identifier (critical) — Provide an assigned valid GTIN or MPN with brand, unless identifier_exists=no/false accurately describes this item. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Invalid identifier_exists (critical) — Use yes/true or no/false, or omit the optional field. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Missing or invalid availability date (critical) — For preorder/backorder supply a real YYYY-MM-DD or timezone-qualified ISO timestamp. It does not schedule a stock change. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
- Inconsistent variant group (critical) — Use a distinct item_group_id and unique option combinations for each variant. Store availability combinations need manual verification. Business impact: item processing or Ads readiness can be blocked. Source: https://developers.openai.com/commerce/specs/file-upload/products (ruleset openai-products-2026-09-19).
What this audit cannot establish
It does not crawl product pages or images, measure image dimensions, confirm GTIN ownership, match inventory against a store, verify every variant combination, or evaluate merchant policies. Presence and text length are proxies. The free result is a bounded preview; the paid report exposes complete stored findings and affected-product exports for the current entitlement.
Historical scans are not silently recalculated when rules change. Not all old reports contain AI dimensions. Missing data is shown as unavailable, not as a failed score. The 200 MiB and 100,000-product limits apply independently of the selected profile.
Two feed formats, separate requirements
The checker detects OpenAI native or Google-compatible field names. Confirm OpenAI's selected format during registration. Native availability uses pre_order and permits unknown; Google-compatible uses preorder and does not permit unknown. Google-compatible CSV/TSV/TXT requires a registered merchant identity and eligibility settings. XML/RSS/Atom is not supported by that upload path.
Native is_ads_eligible=false intentionally excludes an item; an absent value is unconfirmed without a verified feed default. Ads Manager can configure that default. ads_metadata must contain integration-configured string values. Do not invent targeting keys.
Delivery and freshness
Items expire after 14 days without refresh. Use a hosted HTTPS URL or automated SFTP delivery supported by OpenAI. Product Feed Scan does not provide SFTP integration. Update prices and stock promptly; explicitly set out_of_stock for unavailable items. Source age and last OpenAI upload are not verified; file modification time is not an upload timestamp.
CSV prices use major currency units such as 79.99 USD; Delta API amounts use minor units such as 7999. We do not send API requests or upload your catalog.
OpenAI crawler readiness — manual verification required
- OAI-AdsBot: confirm landing-page access and robots.txt permission.
- OAI-SearchBot: confirm access to product images and required paths.
- Check login/session requirements, CAPTCHA, WAF/CDN 403, rate limits and geo/redirect failures.
- Verify bot identity using official provider guidance; do not bypass site protection.
Product pages and images are not externally verified. Syntax checks do not establish crawlability. Ads and organic discovery are separate; Ads Manager/feed access may be beta or gated.
Schema.org 30.1 optional opportunities
Page structured data not scanned. These vocabulary additions are informational, not universal OpenAI, Google, Microsoft or Meta requirements, and do not lower any score.
- DigitalProductPassport — opportunity, not checked
- hasDigitalProductPassport — opportunity, not checked
- EnvironmentalProductDeclaration — opportunity, not checked
- DeclarationOfConformity — opportunity, not checked
- consumerNotice — opportunity, not checked
- isOftenBoughtWith — opportunity, not checked
- specification — opportunity, not checked
- itemPopularity — opportunity, not checked
- minimumOrderValue — opportunity, not checked
- MaximumRetailPrice — opportunity, not checked
- authorizedRepresentative — opportunity, not checked
- importer — opportunity, not checked
- recycledContentPercentage — opportunity, not checked
- substanceOfConcern — opportunity, not checked
Specification updates and references
Changes require a manual source review, code and content changes where needed, regression tests and a version decision. This methodology describes implemented checks, not every requirement in external specifications.