Skip to content

Product template

Product details, media, selectable variants and add-to-cart controls.

Output: page body inside the storefront layout.

Shared structures available in recorded contexts: shop, branding, theme, urls, page, navigation, breadcrumbs, languageSwitcher, currencySwitcher, headerActionContributions, labels, security, footer, cartPreview, accountHeader.

Field Type Meaning Availability
viewModel.product object Product data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.accessories object Accessories data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.accessories.items array Prepared items collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.accessories.items[].badges array Prepared badges collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].badges[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].badges[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].badges[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].hasImage boolean Whether image applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].manufacturerId number manufacturer identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].manufacturerName string Manufacturer name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].name string Name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].productId number product identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].shortDescription string Short description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].sku string Sku value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].tagline string Tagline value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview object Variant preview data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups array Prepared groups collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items array Prepared items collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].items[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].remainingCount number Remaining count numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.groups[].variantGroupId number variant group identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.hasVariants boolean Whether variants applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items array Prepared items collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.items[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.accessories.items[].variantPreview.remainingCount number Remaining count numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.addToCart object Add to cart data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.addToCart.isEnabled boolean Whether enabled applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.addToCart.minimumOrderQuantity number Minimum order quantity numeric value. When the parent is provided; check optional fields.
viewModel.product.addToCart.productId number product identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.addToCart.productVariantId number product variant identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.addToCart.url string Prepared url URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.availability object Availability data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.availability.alwaysAvailable boolean Whether always available applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.availability.backorderAllowed boolean Whether backorder allowed applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.availability.displayAsQuantity boolean Whether display as quantity applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.availability.displayQuantity string Display quantity value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.availability.isAvailable boolean Whether available applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.availability.isVisible boolean Whether visible applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.availability.label string Label value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.availability.maxOrderQuantity number Max order quantity numeric value. When the parent is provided; check optional fields.
viewModel.product.availability.quantityOnHand number Quantity on hand numeric value. When the parent is provided; check optional fields.
viewModel.product.availability.status string Status value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.badges array Prepared badges collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.badges[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.badges[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.badges[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.canonicalUrl string Prepared canonical URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.configurationContributions array Prepared configuration contributions collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.deliveryTimeName string Delivery time name value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.display object Display data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.availability object Availability data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.availability.backorderAllowed boolean Whether backorder allowed applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.display.availability.displayQuantity string Display quantity value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.display.availability.isVisible boolean Whether visible applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.display.availability.label string Label value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.display.availability.maxOrderQuantity number Max order quantity numeric value. When the parent is provided; check optional fields.
viewModel.product.display.availability.quantityOnHand number Quantity on hand numeric value. When the parent is provided; check optional fields.
viewModel.product.display.availability.status string Status value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.display.customFields object Custom fields data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.customFields.groups array Prepared groups collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.display.customFields.groups[].description string Description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows array Prepared rows collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].description string Description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].hasValue boolean Whether value applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].media object Media data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.display.customFields.groups[].rows[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.details object Details data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.details.rows array Prepared rows collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.display.details.rows[].hasValue boolean Whether value applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.display.details.rows[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.details.rows[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.details.rows[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.fulfillment object Fulfillment data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.fulfillment.isPickupOnly boolean Whether pickup only applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.display.fulfillment.notice string Notice value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.display.gallery object Gallery data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.gallery.ariaLabel string Prepared aria display text. When the parent is provided; check optional fields.
viewModel.product.display.gallery.filters array Prepared filters collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.display.gallery.filters[].count number Count numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.display.gallery.filters[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.gallery.filters[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.labels object Labels data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.labels.accessories string Translated accessories text. When the parent is provided; check optional fields.
viewModel.product.display.labels.addToCart string Translated add to cart text. When the parent is provided; check optional fields.
viewModel.product.display.labels.addToWishlist string Translated add to wishlist text. When the parent is provided; check optional fields.
viewModel.product.display.labels.availability string Translated availability text. When the parent is provided; check optional fields.
viewModel.product.display.labels.availabilityUnknown string Translated availability unknown text. When the parent is provided; check optional fields.
viewModel.product.display.labels.backorder string Translated backorder text. When the parent is provided; check optional fields.
viewModel.product.display.labels.chooseVariant string Translated choose variant text. When the parent is provided; check optional fields.
viewModel.product.display.labels.close string Translated close text. When the parent is provided; check optional fields.
viewModel.product.display.labels.decreaseQuantity string Translated decrease quantity text. When the parent is provided; check optional fields.
viewModel.product.display.labels.details string Translated details text. When the parent is provided; check optional fields.
viewModel.product.display.labels.downloadFile string Translated download file text. When the parent is provided; check optional fields.
viewModel.product.display.labels.ean string Translated ean text. When the parent is provided; check optional fields.
viewModel.product.display.labels.height string Translated height text. When the parent is provided; check optional fields.
viewModel.product.display.labels.increaseQuantity string Translated increase quantity text. When the parent is provided; check optional fields.
viewModel.product.display.labels.inStock string Translated in stock text. When the parent is provided; check optional fields.
viewModel.product.display.labels.length string Translated length text. When the parent is provided; check optional fields.
viewModel.product.display.labels.lowStock string Translated low stock text. When the parent is provided; check optional fields.
viewModel.product.display.labels.manufacturer string Translated manufacturer text. When the parent is provided; check optional fields.
viewModel.product.display.labels.manufacturerNumber string Translated manufacturer number text. When the parent is provided; check optional fields.
viewModel.product.display.labels.mediaDocuments string Translated media documents text. When the parent is provided; check optional fields.
viewModel.product.display.labels.mediaImages string Translated media images text. When the parent is provided; check optional fields.
viewModel.product.display.labels.mediaVideos string Translated media videos text. When the parent is provided; check optional fields.
viewModel.product.display.labels.minimumOrderQuantity string Translated minimum order quantity text. When the parent is provided; check optional fields.
viewModel.product.display.labels.nextImage string Translated next image text. When the parent is provided; check optional fields.
viewModel.product.display.labels.no string Translated no text. When the parent is provided; check optional fields.
viewModel.product.display.labels.outOfStock string Translated out of stock text. When the parent is provided; check optional fields.
viewModel.product.display.labels.packagingUnit string Translated packaging unit text. When the parent is provided; check optional fields.
viewModel.product.display.labels.pickupOnlyNotice string Translated pickup only notice text. When the parent is provided; check optional fields.
viewModel.product.display.labels.previousImage string Translated previous image text. When the parent is provided; check optional fields.
viewModel.product.display.labels.priceTierMinQuantity string Translated price tier min quantity text. When the parent is provided; check optional fields.
viewModel.product.display.labels.priceTierPrice string Translated price tier price text. When the parent is provided; check optional fields.
viewModel.product.display.labels.priceTiers string Translated price tiers text. When the parent is provided; check optional fields.
viewModel.product.display.labels.productDescription string Translated product description text. When the parent is provided; check optional fields.
viewModel.product.display.labels.quantity string Translated quantity text. When the parent is provided; check optional fields.
viewModel.product.display.labels.quantityAvailable string Translated quantity available text. When the parent is provided; check optional fields.
viewModel.product.display.labels.reviews string Translated reviews text. When the parent is provided; check optional fields.
viewModel.product.display.labels.salesUnit string Translated sales unit text. When the parent is provided; check optional fields.
viewModel.product.display.labels.secureCheckout string Translated secure checkout text. When the parent is provided; check optional fields.
viewModel.product.display.labels.serviceShippingNote string Translated service shipping note text. When the parent is provided; check optional fields.
viewModel.product.display.labels.shippingReadyIn string Translated shipping ready in text. When the parent is provided; check optional fields.
viewModel.product.display.labels.shippingService string Translated shipping service text. When the parent is provided; check optional fields.
viewModel.product.display.labels.similarProducts string Translated similar products text. When the parent is provided; check optional fields.
viewModel.product.display.labels.sku string Translated sku text. When the parent is provided; check optional fields.
viewModel.product.display.labels.specifications string Translated specifications text. When the parent is provided; check optional fields.
viewModel.product.display.labels.subtotal string Translated subtotal text. When the parent is provided; check optional fields.
viewModel.product.display.labels.supportAvailable string Translated support available text. When the parent is provided; check optional fields.
viewModel.product.display.labels.taxExcluded string Translated tax excluded text. When the parent is provided; check optional fields.
viewModel.product.display.labels.taxIncluded string Translated tax included text. When the parent is provided; check optional fields.
viewModel.product.display.labels.weight string Translated weight text. When the parent is provided; check optional fields.
viewModel.product.display.labels.width string Translated width text. When the parent is provided; check optional fields.
viewModel.product.display.labels.yes string Translated yes text. When the parent is provided; check optional fields.
viewModel.product.display.labels.zoomImage string Translated zoom image text. When the parent is provided; check optional fields.
viewModel.product.display.servicePoints array Prepared service points collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.display.specifications object Specifications data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.display.specifications.groups array Prepared groups collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.display.specifications.groups[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.specifications.groups[].rows array Prepared rows collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.display.specifications.groups[].rows[].hasValue boolean Whether value applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.display.specifications.groups[].rows[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.specifications.groups[].rows[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.display.specifications.groups[].rows[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery object Gallery data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.gallery.counts object Counts data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.gallery.counts.documents number Documents numeric value. When the parent is provided; check optional fields.
viewModel.product.gallery.counts.images number Images numeric value. When the parent is provided; check optional fields.
viewModel.product.gallery.counts.videos number Videos numeric value. When the parent is provided; check optional fields.
viewModel.product.gallery.defaultImage object Default image data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.gallery.defaultImage.alt string Alt value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.category string Category value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.downloadUrl string Prepared download URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.extension string Extension value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.filename string Filename value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.fileSizeLabel string Prepared file size display text. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.hasUrl boolean Prepared has URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.height number Height numeric value. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.iconLabel string Prepared icon display text. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.kind string Kind value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.mediaAssetId number media asset identifier; do not load data with it. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.mediaType string Media type value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.mimeType string Mime type value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.thumbImageUrl string Prepared thumb image URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.thumbUrl string Prepared thumb URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.title string Title value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.url string Prepared url URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultImage.width number Width numeric value. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia object Default media data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.gallery.defaultMedia.alt string Alt value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.category string Category value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.downloadUrl string Prepared download URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.extension string Extension value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.filename string Filename value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.fileSizeLabel string Prepared file size display text. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.hasUrl boolean Prepared has URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.height number Height numeric value. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.iconLabel string Prepared icon display text. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.kind string Kind value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.mediaAssetId number media asset identifier; do not load data with it. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.mediaType string Media type value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.mimeType string Mime type value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.thumbImageUrl string Prepared thumb image URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.thumbUrl string Prepared thumb URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.title string Title value supplied for this context. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.url string Prepared url URL; use unchanged. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.defaultMedia.width number Width numeric value. Only when the corresponding media object is non-empty; an unavailable or inactive asset produces an empty object.
viewModel.product.gallery.hasImages boolean Whether images applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.gallery.hasMedia boolean Whether media applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.gallery.items array Prepared items collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.gallery.items[].externalMediaReferenceId number external media reference identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].hasProductScope boolean Whether product scope applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.alt string Alt value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.category string Category value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.downloadUrl string Prepared download URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.extension string Extension value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.filename string Filename value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.fileSizeLabel string Prepared file size display text. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.hasUrl boolean Prepared has URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.height number Height numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.iconLabel string Prepared icon display text. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.kind string Kind value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.mediaAssetId number media asset identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.mediaType string Media type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.mimeType string Mime type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.thumbImageUrl string Prepared thumb image URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.thumbUrl string Prepared thumb URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.title string Title value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].image.width number Width numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media object Media data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.alt string Alt value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.category string Category value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.downloadUrl string Prepared download URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.extension string Extension value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.filename string Filename value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.fileSizeLabel string Prepared file size display text. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.hasUrl boolean Prepared has URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.height number Height numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.iconLabel string Prepared icon display text. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.kind string Kind value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.mediaAssetId number media asset identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.mediaType string Media type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.mimeType string Mime type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.thumbImageUrl string Prepared thumb image URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.thumbUrl string Prepared thumb URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.title string Title value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].media.width number Width numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].mediaAssetId number media asset identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].mediaType string Media type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].variantId number variant identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.gallery.items[].variantIds number[] Prepared variant identifiers/value identifiers used to select gallery media. For existing gallery items; arrays may be empty.
viewModel.product.gallery.items[].variantValueIds number[] Prepared variant identifiers/value identifiers used to select gallery media. For existing gallery items; arrays may be empty.
viewModel.product.gallery.variantImages object Variant images data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.gallery.variantImages.[id] object [id] data; check child fields before use. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].alt string Alt value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].category string Category value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].downloadUrl string Prepared download URL; use unchanged. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].extension string Extension value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].filename string Filename value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].fileSizeLabel string Prepared file size display text. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].hasUrl boolean Prepared has URL; use unchanged. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].height number Height numeric value. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].iconLabel string Prepared icon display text. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].kind string Kind value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].mediaAssetId number media asset identifier; do not load data with it. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].mediaType string Media type value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].mimeType string Mime type value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].thumbImageUrl string Prepared thumb image URL; use unchanged. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].thumbUrl string Prepared thumb URL; use unchanged. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].title string Title value supplied for this context. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].url string Prepared url URL; use unchanged. When an entry exists for the identifier.
viewModel.product.gallery.variantImages.[id].width number Width numeric value. When an entry exists for the identifier.
viewModel.product.price object Price data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.price.amount number Amount numeric value. When the parent is provided; check optional fields.
viewModel.product.price.amountType string Amount type value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.price.basePriceLabel string Prepared base price display text. When the parent is provided; check optional fields.
viewModel.product.price.comparePriceLabel string Prepared compare price display text. When the parent is provided; check optional fields.
viewModel.product.price.currencyId number currency identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.price.currencyIsoCode string Currency iso code value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.price.hasPrice boolean Whether price applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.price.hasPriceTiers boolean Whether price tiers applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.price.isDiscounted boolean Whether discounted applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.price.moneyFormat object Money format data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.price.moneyFormat.currencyToken string Currency token value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.price.moneyFormat.decimalPlaces number Decimal places numeric value. When the parent is provided; check optional fields.
viewModel.product.price.moneyFormat.localeCode string Locale code value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.price.priceLabel string Prepared price display text. When the parent is provided; check optional fields.
viewModel.product.price.priceTiers array Prepared price tiers collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.price.priceTiers[].amount number Amount numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].amountType string Amount type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].currencyId number currency identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].currencyIsoCode string Currency iso code value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].hasComparePrice boolean Whether compare price applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].minQuantity number Min quantity numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.price.priceTiers[].priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.price.subtotalLabel string Prepared subtotal display text. When the parent is provided; check optional fields.
viewModel.product.priceNotice string Price notice value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product object Product data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.product.customFields array Prepared custom fields collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.product.deliveryTimeName string Delivery time name value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.description string Description value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.ean string Ean value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.fulfillmentMode string Fulfillment mode value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.heightMm string Height mm value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image object Image data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.product.image.alt string Alt value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.category string Category value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.downloadUrl string Prepared download URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.image.extension string Extension value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.filename string Filename value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.fileSizeLabel string Prepared file size display text. When the parent is provided; check optional fields.
viewModel.product.product.image.hasUrl boolean Prepared has URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.image.height number Height numeric value. When the parent is provided; check optional fields.
viewModel.product.product.image.iconLabel string Prepared icon display text. When the parent is provided; check optional fields.
viewModel.product.product.image.kind string Kind value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.mediaAssetId number media asset identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.product.image.mediaType string Media type value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.mimeType string Mime type value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.thumbImageUrl string Prepared thumb image URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.image.thumbUrl string Prepared thumb URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.image.title string Title value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.image.url string Prepared url URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.image.width number Width numeric value. When the parent is provided; check optional fields.
viewModel.product.product.isPickupOnly boolean Whether pickup only applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.product.lengthMm string Length mm value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.manufacturerId number manufacturer identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.product.manufacturerName string Manufacturer name value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.manufacturerNumber string Manufacturer number value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.measurementUnitId number measurement unit identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.product.measurementUnitSymbol string Measurement unit symbol value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.minimumOrderQuantity number Minimum order quantity numeric value. When the parent is provided; check optional fields.
viewModel.product.product.name string Name value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.packagingUnit string Packaging unit value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.primaryImageMediaAssetId number primary image media asset identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.product.productId number product identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.product.salesUnit string Sales unit value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.shortDescription string Short description value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.shortName string Short name value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.sku string Sku value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.url string Prepared url URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.product.weightKg string Weight kg value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.product.widthMm string Width mm value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.productPrice object Product price data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.productPrice.amount number Amount numeric value. When the parent is provided; check optional fields.
viewModel.product.productPrice.amountType string Amount type value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.productPrice.basePriceLabel string Prepared base price display text. When the parent is provided; check optional fields.
viewModel.product.productPrice.comparePriceLabel string Prepared compare price display text. When the parent is provided; check optional fields.
viewModel.product.productPrice.currencyId number currency identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.productPrice.currencyIsoCode string Currency iso code value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.productPrice.hasPrice boolean Whether price applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.productPrice.hasPriceTiers boolean Whether price tiers applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.productPrice.isDiscounted boolean Whether discounted applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.productPrice.moneyFormat object Money format data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.productPrice.moneyFormat.currencyToken string Currency token value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.productPrice.moneyFormat.decimalPlaces number Decimal places numeric value. When the parent is provided; check optional fields.
viewModel.product.productPrice.moneyFormat.localeCode string Locale code value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.productPrice.priceLabel string Prepared price display text. When the parent is provided; check optional fields.
viewModel.product.productPrice.priceTiers array Prepared price tiers collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.productPrice.priceTiers[].amount number Amount numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].amountType string Amount type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].currencyId number currency identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].currencyIsoCode string Currency iso code value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].hasComparePrice boolean Whether compare price applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].minQuantity number Min quantity numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.priceTiers[].priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.productPrice.subtotalLabel string Prepared subtotal display text. When the parent is provided; check optional fields.
viewModel.product.returnLink object Return link data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.returnLink.hasUrl boolean Prepared has URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.returnLink.label string Label value supplied for this context. When the parent is provided; check optional fields.
viewModel.product.returnLink.url string Prepared url URL; use unchanged. When the parent is provided; check optional fields.
viewModel.product.similar object Similar data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.similar.items array Prepared items collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.similar.items[].badges array Prepared badges collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].badges[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].badges[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].badges[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].hasImage boolean Whether image applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].manufacturerId number manufacturer identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].manufacturerName string Manufacturer name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].name string Name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].productId number product identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].shortDescription string Short description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].sku string Sku value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].tagline string Tagline value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview object Variant preview data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups array Prepared groups collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items array Prepared items collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].items[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].remainingCount number Remaining count numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.groups[].variantGroupId number variant group identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.hasVariants boolean Whether variants applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items array Prepared items collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.items[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.similar.items[].variantPreview.remainingCount number Remaining count numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection object Variant selection data; check child fields before use. When the parent is provided; check optional fields.
viewModel.product.variantSelection.defaultVariantId number default variant identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.product.variantSelection.groups array Prepared groups collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.variantSelection.groups[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values array Prepared values collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values[].color string Color value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values[].isSelected boolean Whether selected applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values[].type string Type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].values[].variantGroupValueId number variant group value identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.groups[].variantGroupId number variant group identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.hasVariants boolean Whether variants applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.variantSelection.requiresSelection boolean Whether requires selection applies; use for display only. When the parent is provided; check optional fields.
viewModel.product.variantSelection.variants array Prepared variants collection; may be empty. When the parent is provided; check optional fields.
viewModel.product.variantSelection.variants[].availability object Availability data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.alwaysAvailable boolean Whether always available applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.backorderAllowed boolean Whether backorder allowed applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.displayAsQuantity boolean Whether display as quantity applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.displayQuantity string Display quantity value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.isAvailable boolean Whether available applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.isVisible boolean Whether visible applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.maxOrderQuantity number Max order quantity numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.quantityOnHand number Quantity on hand numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].availability.status string Status value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].customFieldGroups array Prepared custom field groups collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].customFields array Prepared custom fields collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].deliveryTimeName string Delivery time name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].description string Description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].details array Prepared details collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].details[].hasValue boolean Whether value applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].details[].key string Key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].details[].label string Label value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].details[].value string Value value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].ean string Ean value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image object Image data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.alt string Alt value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.category string Category value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.downloadUrl string Prepared download URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.extension string Extension value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.filename string Filename value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.fileSizeLabel string Prepared file size display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.hasUrl boolean Prepared has URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.height number Height numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.iconLabel string Prepared icon display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.kind string Kind value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.mediaAssetId number media asset identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.mediaType string Media type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.mimeType string Mime type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.thumbImageUrl string Prepared thumb image URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.thumbUrl string Prepared thumb URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.title string Title value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.url string Prepared url URL; use unchanged. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].image.width number Width numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].isBuyable boolean Whether buyable applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].isDefault boolean Whether default applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].manufacturerNumber string Manufacturer number value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].minimumOrderQuantity number Minimum order quantity numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].name string Name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].optionKey string Option key value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].optionValueIds array Prepared option value ids collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price object Price data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.amount number Amount numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.amountType string Amount type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.basePriceLabel string Prepared base price display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.currencyId number currency identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.currencyIsoCode string Currency iso code value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.hasPrice boolean Whether price applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.hasPriceTiers boolean Whether price tiers applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.moneyFormat object Money format data; check child fields before use. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.moneyFormat.currencyToken string Currency token value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.moneyFormat.decimalPlaces number Decimal places numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.moneyFormat.localeCode string Locale code value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers array Prepared price tiers collection; may be empty. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].amount number Amount numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].amountType string Amount type value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].comparePriceLabel string Prepared compare price display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].currencyId number currency identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].currencyIsoCode string Currency iso code value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].hasComparePrice boolean Whether compare price applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].isDiscounted boolean Whether discounted applies; use for display only. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].minQuantity number Min quantity numeric value. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.priceTiers[].priceLabel string Prepared price display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].price.subtotalLabel string Prepared subtotal display text. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].productName string Product name value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].productVariantId number product variant identifier; do not load data with it. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].shortDescription string Short description value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variants[].sku string Sku value supplied for this context. For each existing item; optional child fields depend on item type.
viewModel.product.variantSelection.variantsJson string Prepared JSON text; do not rebuild from domain objects. When the parent is provided; check optional fields.
viewModel.search object Search data; check child fields before use. When the parent is provided; check optional fields.
viewModel.search.isEnabled boolean Whether enabled applies; use for display only. When the parent is provided; check optional fields.
viewModel.wishlist object Wishlist data; check child fields before use. When the parent is provided; check optional fields.
viewModel.wishlist.isEmpty boolean Whether empty applies; use for display only. When the parent is provided; check optional fields.
viewModel.wishlist.itemCount number Item count numeric value. When the parent is provided; check optional fields.
viewModel.wishlist.items array Prepared items collection; may be empty. When the parent is provided; check optional fields.
viewModel.wishlist.productIdMap object Product id map data; check child fields before use. When the parent is provided; check optional fields.
viewModel.wishlist.productIds array Prepared product ids collection; may be empty. When the parent is provided; check optional fields.
viewModel.wishlist.wishlistId number wishlist identifier; do not load data with it. When the parent is provided; check optional fields.
viewModel.wishlist.wishlistKey string Wishlist key value supplied for this context. When the parent is provided; check optional fields.

The reference package uses its bundled theme CSS, Bootstrap and theme JavaScript. Account and checkout controls use the bundled checkout script. Additional page scripts: /theme/reference/product-detail-js. Partials use their caller’s resolved assets.

<cfset viewModel = routeConfig.viewModel>
<cfoutput><h1>#encodeForHtml(viewModel.page.title)#</h1></cfoutput>

Use the page-specific structures above for the remaining content.

Use prepared URLs and labels. Encode plain text and HTML attributes; preserve only explicitly prepared HTML.