Web Product Readability
What machines can understand from your public product pages.
PLATFORM MAPS
Platforms use many of the same product facts, but their fields and rules differ.
THREE DIFFERENT QUESTIONS
CCFP therefore keeps the three assessments separate.
What machines can understand from your public product pages.
Whether each feed supplies the expected facts in the right form.
Whether identity, variants, attributes and offers are structured clearly.
THE SHARED CENTRE
The map starts with a CCFP product fact and shows the corresponding field supported by current first-party documentation. Requirement labels describe the listed feed context—not universal platform eligibility.
| CCFP | Googlev0.2.0-alpha | Shopify Adminv0.3.0-alpha | Metav0.2.0-alpha | OpenAIv0.2.0-alpha |
|---|---|---|---|---|
brand.name | brandconditionalDIRECT | Product.vendorsupportedDERIVEDShopify documents vendor, not brand. Treating vendor as brand requires merchant governance. | brandrequiredDIRECT | brandrequiredDIRECT |
brand.website | — | — | — | — |
product.title | titlerequiredDIRECT | Product.titlesupportedDIRECT | titlerequiredDIRECT | titlerequiredDIRECT |
product.description | descriptionrequiredDIRECT | Product.descriptionsupportedDIRECT | descriptionrequiredDIRECT | descriptionrequiredDIRECT |
product.category | google_product_categoryoptionalDIRECT | Product.categorysupportedDIRECT | google_product_category / fb_product_categoryoptionalDERIVEDMeta supports both documented category taxonomies; CCFP keeps the source taxonomy explicit when normalizing a category. | product_categoryoptionalDIRECT |
product.product_type | product_typeoptionalDIRECT | Product.productTypesupportedDIRECT | product_typeoptionalDIRECT | — |
family.varies_by | item_group_idconditionalDERIVEDMaps family membership; axes still require their own fields. | Product.options[].namesupportedDIRECTProduct options define the axes used to create variants. | item_group_idoptionalDERIVEDThe field establishes variant grouping; the actual variation axes still come from size, color, pattern or additional variant attributes. | group_idconditionalDERIVEDThe field identifies a variant family; variation axes are represented separately. |
variant.option_values | — | ProductVariant.selectedOptionssupportedDIRECT | additional_variant_attributeoptionalDERIVEDMeta documents additional name:value variant attributes; core variant attributes such as size and color remain separate fields. | variant_dictconditionalDIRECT |
identifier.sku | idrequiredDERIVEDGoogle requires a stable channel item ID. A merchant SKU may supply its value, but the Google ID remains channel-scoped rather than canonical identity. | ProductVariant.skusupportedDIRECT | idrequiredDERIVEDMeta recommends using the SKU where possible, but the content ID remains scoped to the Meta catalog rather than canonical identity. | item_idrequiredDERIVEDThe item ID is channel-scoped; the specification accepts an SKU as an alias. |
identifier.gtin | gtinconditionalDIRECT | ProductVariant.barcodesupportedDERIVEDBarcode must be checked before interpreting it as a GTIN. | gtinoptionalDIRECTRecommended when an assigned GTIN exists. | gtinoptionalDIRECT |
identifier.mpn | mpnconditionalDIRECT | — | mpnoptionalDIRECTRecommended for classification when no GTIN exists and an MPN is assigned. | mpnoptionalDIRECT |
attribute.color | colorconditionalDIRECT | — | coloroptionalDIRECT | coloroptionalDIRECT |
attribute.size | sizeconditionalDIRECT | — | sizeconditionalDIRECTRequired for Shops only in specified categories such as clothing and shoes; otherwise supported as an optional field. | sizeoptionalDIRECT |
attribute.material | materialconditionalDIRECT | — | materialoptionalDIRECT | materialoptionalDIRECT |
attribute.gender | genderconditionalDIRECT | — | genderoptionalDIRECT | genderoptionalDIRECT |
attribute.age_group | age_groupconditionalDIRECT | — | age_groupoptionalDIRECT | age_groupoptionalDIRECT |
media.primary_image_url | image_linkrequiredDIRECT | Product.featuredMediasupportedDERIVEDThe featured media is product-level and may not represent every variant; CCFP retains variant-grain media separately. | image_linkrequiredDIRECT | image_urlrequiredDIRECT |
media.additional_image_urls | additional_image_linkoptionalDIRECT | ProductVariant.mediasupportedDERIVEDShopify returns media objects; CCFP extracts stable public image URLs while preserving their variant association. | additional_image_linkoptionalDIRECT | additional_image_urlsoptionalDIRECT |
offer.url | linkrequiredDIRECT | Product.onlineStoreUrlcontextualDERIVEDThe online-store product URL is not automatically a market-specific offer URL. | linkrequiredDIRECT | urlrequiredDIRECT |
offer.price | pricerequiredDIRECT | ProductVariant.pricesupportedDIRECT | pricerequiredDIRECT | pricerequiredDIRECT |
offer.availability | availabilityrequiredDIRECT | ProductVariant.availableForSalecontextualDERIVEDPublication and inventory are not interchangeable; availability requires context. | availabilityrequiredDIRECT | availabilityrequiredDIRECT |
offer.condition | conditionconditionalDIRECT | — | conditionrequiredDIRECT | conditionoptionalDIRECT |
offer.market | — | — | — | — |
offer.seller_name | — | — | — | seller_namerequiredDIRECT |
offer.price_observed_at | — | — | — | — |
offer.availability_observed_at | — | — | — | — |
Map of 26 CCFP fields and four platforms, reviewed 10 September 2026 against the linked official documentation. A dash means no relationship is documented in this version.
GOOGLE · OPTIONAL + CONDITIONAL FIELDS
Optional fields can make a feed richer but do not determine the baseline pass/fail result. Conditional fields apply only when the product, destination or campaign context requires them.
short_titleA concise title for Demand Gen and visual placements; Google recommends 5–65 characters.
Google documentation ↗product_highlightQuick product-only highlights. Submit 2–100; Google recommends 4–6, each 1–150 characters.
Google documentation ↗product_detailConfirmed technical facts expressed as structured attribute-value details.
Google documentation ↗additional_image_linkUp to 10 alternate views that add useful product context.
Google documentation ↗lifestyle_image_linkUp to 5 contextual images showing the product in use or in a real-world setting.
Google documentation ↗product_typeYour own product taxonomy for inventory organization, reporting and bidding.
Google documentation ↗google_product_categoryAn override for Google’s automatic categorization in documented cases.
Google documentation ↗custom_label_0–4Merchant-defined campaign groupings for reporting and bidding; not customer-visible.
Google documentation ↗item_group_idGroups genuine variants. Required for variants in free listings; Shopping-ad requirements vary by target country.
Google documentation ↗This is the validator’s current recommendation set—not every attribute in Google’s full specification. Merchants must confirm every proposed value before upload.
AGENTIC COMMERCE PROTOCOLS
A complete product record is the starting point. Catalogue and transaction protocols define how agents discover, retrieve and act on it; they do not replace the merchant’s source data.
The merchant’s working product model: products, variants, options, media, prices and availability.
Shopify’s Global and Storefront Catalogs implement the UCP Catalog capability for agent-facing discovery and retrieval.
UCP spans catalogue, cart, checkout and orders. ACP defines agent checkout and delegated payment, and is expanding into product discovery for ChatGPT.
Protocol support does not guarantee indexing, recommendation, platform eligibility or checkout activation.
HOW TO READ THE MAP
Each label shows whether the relationship comes directly from a platform, is translated by CCFP, or is still changing.
The platform documents this field or structure.
CCFP connects comparable concepts without erasing their differences.
This capability is new or likely to change.