Skip to main content

Feed Specifications

Google Merchant-to-Schema.org mapping

The following table describes how Product KG Builder maps Google Merchant product data to Schema.org. The Status column reflects Product KG Builder's current mapping expectations. Because Google Merchant requirements can change, also consult Google's product data specification.

You can transform the generated product graphs before they are written to the Graph store by using webhooks.

Google Merchant Product PropertyStatusSchema.org PropertyDescription
offerIdrequiredskuThe product SKU
titlerequirednameThe product name
descriptionrequireddescriptionThe product description; HTML is allowed
linkrequiredurlThe product URL
imageLinkrequiredimageThe main product image URL
additionalImageLinksrecommendedimageAdditional product image URLs
availabilityrequiredavailabilityAllowed values: InStock, LimitedAvailability, OnlineOnly, Discontinued, InStoreOnly, OutOfStock, SoldOut, PreOrder, PreSale, BackOrder
price_valuerequiredpriceThe price without currency and thousands separator; use a period (.) to separate decimals
price_currencyrequiredpriceCurrencyThe currency in 3-letter uppercase format
salePriceoptionalprice, priceSpecificationThe promotional price and currency; it becomes the offer price while the sale is active
salePriceEffectiveDateoptionalvalidFrom, priceValidUntilThe ISO 8601 start/end interval in which the sale price is active
brandrecommendedbrandThe brand name
canonicalLinkrecommendedurlThe product's canonical page URL
gtinrecommendedgtin (or gtin8, gtin12, gtin13, gtin14)The Global Trade Item Number
conditionrecommendeditemConditionAllowed values: NewCondition, RefurbishedCondition, DamagedCondition, UsedCondition
shipping0_price_valuerecommendedshippingRate.valueThe shipping price without currency and thousands separator; use a period (.) to separate decimals
shipping0_price_currencyrecommendedshippingRate.currencyThe currency in 3-letter uppercase format
shipping0_countryrecommendedshippingDestination.addressCountry2-letter uppercase country code
shippingWeight_valuerecommendedweight.valueThe product weight
shippingWeight_unitrecommendedweight.unitTextThe weight unit
idoptional-The merchant ID, if available
sourceoptional-The feed source
contentLanguageoptional-The content language 2-letter lowercase code
targetCountryoptional-The target country 2-letter uppercase code
feedLabeloptional-The feed name
channeloptional-The target channel
googleProductCategoryoptionalcategoryGoogle-defined product category represented as a Schema.org CategoryCode
itemGroupIdoptionalinProductGroupWithIDA parent SKU to group variant products
age_grouprecommendedaudience.suggestedMinAge, audience.suggestedMaxAgeThe intended demographic age range
genderrecommendedaudience.suggestedGenderThe intended gender
colorrecommendedcolorThe product's color(s)
materialrecommendedmaterialThe product's fabric or material
product_typerecommendedcategoryThe product category defined by you, represented as text

Google product category

When googleProductCategory is present and not blank, Product KG Builder adds a structured CategoryCode alongside the textual categories generated from product_type. The category value can be either a Google taxonomy ID or a >-separated taxonomy path.

{
"@type": "Product",
"category": {
"@type": "CategoryCode",
"codeValue": "2271",
"inCodeSet": "https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt"
}
}

Sale price validity

Product KG Builder applies salePrice according to salePriceEffectiveDate:

  • During an active sale, including at either endpoint of the interval, the offer uses the sale price and includes validFrom and priceValidUntil. The regular price is also exposed as a UnitPriceSpecification with priceType set to http://schema.org/StrikethroughPrice.
  • Before a sale starts or after it ends, the offer uses the regular price, omits sale-specific price specifications and validFrom, and keeps the existing end-of-year priceValidUntil value.
  • If the interval is missing, blank, malformed, or has an end before its start, the sale price remains active for backward compatibility, without validFrom or a strikethrough price. priceValidUntil keeps the existing end-of-year value.

The interval accepts ISO 8601 date-times with an offset, date-times without an offset (interpreted as UTC), and plain dates. Plain start and end dates cover their complete respective days.

The following fragment represents a sale while the specified interval is active:

{
"@type": "Offer",
"price": "79.00",
"priceCurrency": "EUR",
"validFrom": "2026-07-10T00:00+02:00",
"priceValidUntil": "2026-07-20T23:59:59+02:00",
"priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": "99.00",
"priceCurrency": "EUR",
"priceType": "http://schema.org/ListPrice"
},
{
"@type": "UnitPriceSpecification",
"price": "79.00",
"priceCurrency": "EUR"
},
{
"@type": "UnitPriceSpecification",
"price": "99.00",
"priceCurrency": "EUR",
"priceType": "http://schema.org/StrikethroughPrice"
}
]
}