The short answer
Give an agent an identifiable variant, explicit units, a current offer record, and a source for each material fact. Keep unknown values unknown. A polished description cannot compensate for a mismatched SKU, stale availability, or an ambiguous dimension.
Start with the sellable variant
A product family is not the same thing as an orderable item. A finish, size, handing, or included-component change can alter what the customer receives. An agent should be able to distinguish the group from the exact variant and preserve that identity when passing between a feed, product page, specification, and proposed recommendation.
Google Merchant Center documents stable item identifiers and variant attributes. Google Search separately documents ProductGroup relationships for structured product variants. These are useful interoperability references; the internal contract below is an original example, not a replacement for either specification.
Source: Google Merchant Center: Product data specification; Google Search: Product variant structured data
A minimal internal contract
The following fictional cabinet record demonstrates the structure. Null offer values are deliberate: the example has no verified live price or availability. Do not paste it into a merchant feed. Adapt field names and required attributes to the destination and the actual product category.
The record separates durable product facts from rapidly changing offer facts. It also says what the dimension means. A width without a unit or measurement definition is a string that looks useful while leaving the important decision unresolved.
{
"schemaVersion": "1.0",
"exampleOnly": true,
"productGroupId": "DEMO-CABINET-24",
"variantId": "DEMO-CABINET-24-OAK",
"title": "Demonstration cabinet, 24-inch width, oak finish",
"dimensions": {
"width": {
"value": 24,
"unit": "in"
},
"meaning": "product exterior width, not installation opening"
},
"includedComponents": [
"cabinet"
],
"excludedComponents": [
"faucet"
],
"offer": {
"price": null,
"currency": "USD",
"availability": "unknown",
"observedAt": null
},
"provenance": {
"specification": {
"source": "Replace with approved specification URL",
"checkedAt": null,
"owner": "Product data owner"
},
"offer": {
"source": "Replace with authorized live offer source",
"checkedAt": null,
"owner": "Commerce operations"
}
}
}Download the example product-data contract Set rules at the field level
A single updated-at timestamp can hide mixed freshness. A specification may remain valid for months while availability changes during the day. Give each fact family its own source and observation time, then choose a freshness requirement according to the action being taken.
A descriptive comparison can tolerate a different freshness window from a promise to fulfill an order. The window is a business rule to define with the source owner. It should not be invented by the model.
| Fact family | Required clarity | Failure response |
|---|---|---|
| Identity | Stable variant identifier and family relationship | Stop matching if identifiers disagree. |
| Dimensions | Numeric value, unit, and measurement meaning | Flag missing units or incompatible measurements. |
| Compatibility | Explicit approved relationship or constraint | Say unverified instead of inferring fit from a similar title. |
| Included components | What ships together and what is separate | Prevent copy from implying an accessory is included. |
| Offer | Price, currency, availability, observation time | Refresh or report unavailable when the record is stale. |
| Provenance | Source location and accountable owner | Route a conflict to the owner; retain both source values. |
Handle a conflict as an exception, not a writing task
Imagine a synthetic listing whose title says 24 inches while the approved specification says 23.5 inches of exterior width. First inspect whether the two values describe different concepts: nominal size versus measured exterior size. If so, retain both with labels. If both claim to be exterior width, the task is unresolved.
The output should name the variant, reproduce the conflicting values, cite the two source locations, and state which downstream copy is paused. Replacing one value with the more plausible number creates the appearance of resolution without evidence.
This exception record is useful content for both a reviewer and an agent. It narrows the next action and makes it possible to test whether the issue was actually resolved.
Test the contract before expanding the catalog
Choose a representative set of variants that includes similar names, missing dimensions, unavailable items, and component differences. Test whether the system keeps those distinctions through retrieval and rendering. A large catalog import is not proof that a specific variant can be recommended correctly.
The acceptance artifact should show the source record, the normalized record, and the rendered result for the same identifier. Re-run the affected cases when a mapping changes. Preserve the difference between an empty value, a verified absence, and a value that was never checked.
- Keep an explicit unknown state; do not replace it with a favorable default.
- Validate allowed units and currency codes at the integration boundary.
- Check every displayed price and availability against the same variant.
- Attach sources to decision-critical claims, not only to the page as a whole.
- Version the contract so a renamed field does not silently change its meaning.
Sources & scope
Primary references checked for this edition. The notes below distinguish source-backed facts from the frameworks and examples proposed in this guide.
- Google Merchant Center: Product data specification ↗
Supports stable identifiers, explicit variant attributes, and consistency between submitted data and the destination.
Checked September 5, 2026 - Google Search: Product variant structured data ↗
Supports explicit ProductGroup and Product relationships. The downloadable internal contract is illustrative, not Google feed syntax.
Checked September 5, 2026
AI-assisted research and drafting. Provider-specific claims link to primary sources. Frameworks are editorial proposals; worked examples are illustrative and are not employer performance results.
Editorial policy & corrections ↗