Product and variant mapping for Loomi for Shopify

Loomi for Shopify syncs your Shopify product catalog to Bloomreach item collections. The catalog includes products and variants: a product is the parent item, while a variant is a purchasable combination such as a color, size, price, availability, or inventory level. The resulting item data can support Bloomreach use cases such as search, recommendations, collections, merchandising, and personalization,

This article explains how Shopify product and variant fields map to item collection attributes. It separates Bloomreach system attributes, which use reserved names and support common catalog capabilities, from integration-specific attributes stored in the main attribute family.

📘

Note

Product and variant metafields configured in the Loomi for Shopify integration are included in purchase_item events. They aren't included in web events such as view_item, add_to_cart, or view_quickview.

How the mappings are organized

The mappings are grouped by record type and destination attribute family:

  • Product mappings apply to the parent product record and describe the product across its variants
  • Variant mappings apply to an individual purchasable variant
  • System attributes are standard item collection attributes such as active, brand, category_paths, price, stock_level, title, and url. They support common catalog functionality such as display, availability, search, and recommendations
  • main attributes preserve additional Shopify product and variant data in source-shaped or integration-specific fields. Some main attributes intentionally duplicate a system attribute, such as title, description, or price

The system and main labels refer to the destination attribute family in the item collection. They do not necessarily represent Shopify API namespaces. Source paths can include nested objects, arrays, and custom expressions

Product mappings

Product: system attributes

Shopify source fieldItem collection attributeDescription
collections (custom expression: title + numeric ID)category_pathsProduct collections transformed into category paths using each collection's title and numeric ID
default.featuredImage.urllarge_imageURL of the product's default featured image
default.featuredImage.urlthumb_imageURL of the product's default featured image
default.totalInventorystock_levelTotal inventory across the product's variants
descriptiondescriptionProduct description text
isPublishedactiveWhether the product is published on the online store
onlineStoreUrlurlCanonical online store URL for the product
options[].namevariant_optionsNames of the options that define the product's variants
publishedAtlaunch_dateDate and time when the product was published
titletitleProduct title
vendorbrandVendor or brand that supplies the product
vendorsupplierVendor or brand that supplies the product

Product: main attributes

Shopify source fieldItem collection attributeDescription
contextualPricing.compareAtPriceRange.maxVariantCompareAtPrice.amountmaxVariantCompareAtPriceHighest compare-at price among the product's variants for the configured market
contextualPricing.compareAtPriceRange.minVariantCompareAtPrice.amountminVariantCompareAtPriceLowest compare-at price among the product's variants for the configured market
contextualPricing.priceRange.maxVariantPrice.amountmaxVariantPriceHighest contextual price among the product's variants for the configured market
contextualPricing.priceRange.minVariantPrice.amountminVariantPriceLowest contextual price among the product's variants for the configured market
default.createdAtcreatedAtDate and time when Shopify created the product
default.descriptionHtmldescriptionHtmlProduct description in HTML format
default.featuredImagefeaturedImageDefault featured image object
default.featuredImage.urlfeaturedImage.urlURL of the product's default featured image
default.handledefault.handleURL-friendly product handle
default.hasOnlyDefaultVarianthasOnlyDefaultVariantWhether the product has only its default variant
default.images[].urlimagesURLs of the product's images
default.isGiftCardisGiftCardWhether the product is a gift card
default.optionsoptionsProduct options that define the available variants
default.seo.descriptionseo.descriptionSEO description for the product
default.seo.titleseo.titleSEO title for the product
default.statusstatusProduct status in Shopify
default.totalInventorytotalInventoryQuantity of inventory in stock for the product
default.updatedAtupdatedAtDate and time when the product was last updated
descriptiondescriptionProduct description text
handlehandleURL-friendly product handle
isBundleisBundleWhether the product is configured as a bundle
isPublishedisPublishedWhether the product is published on the online store
metafields.custom.hardness.valuecustom.hardnessValue of the custom hardness metafield
onlineStoreUrlonlineStoreUrlCanonical online store URL for the product
productTypeproductTypeProduct type assigned in Shopify
publishedAtpublishedAtDate and time when the product was published to the channel
storeContext.countrystoreContext.countryCountry context used for localized product data
storeContext.languagestoreContext.languageLanguage context used for localized product data
tagstagsTags assigned to the product
titletitleProduct title
vendorvendorVendor or brand that supplies the product

Variant mappings

Variant: system attributes

Shopify source fieldItem collection attributeDescription
availableForSaleactiveWhether the variant is available for purchase
contextualPricing.compareAtPrice.amountoriginal_priceCompare-at price for the variant in the configured market
contextualPricing.price.amountpriceCurrent price for the variant in the configured market
createdAtlaunch_dateDate and time when Shopify created the variant
image.urllarge_imageURL of the variant image
image.urlthumb_imageURL of the variant image
onlineStoreUrlurlCanonical online store URL for the variant
quantityAvailablestock_levelTotal sellable quantity of the variant for online sales channels
selectedOptions[?name=='Color'].valuecolorValue of the Color option selected for the variant
selectedOptions[?name=='Size'].valuesizeValue of the Size option selected for the variant
titletitleVariant title
vendorbrandVendor or brand that supplies the variant
vendorsupplierVendor or brand that supplies the variant

Variant: main attributes

Shopify source fieldItem collection attributeDescription
availableForSaleavailableForSaleWhether the variant is available for purchase
barcodebarcodeBarcode assigned to the variant
contextualPricing.compareAtPrice.amountcompareAtPriceCompare-at price for the variant in the configured market
contextualPricing.price.amountpriceCurrent price for the variant in the configured market
contextualPricing.price.currencyCodeprice.currencyCodeCurrency code for the variant's contextual price
createdAtcreatedAtDate and time when Shopify created the variant
default.taxabletaxableWhether the variant is subject to tax
default.unitPriceMeasurementunitPriceMeasurementUnit price measurement details for the variant
default.updatedAtupdatedAtDate and time when the variant was last updated
imageimageImage associated with the variant; falls back to the product image when no variant image is available
inventoryPolicyinventoryPolicyWhether Shopify continues selling the variant when inventory reaches zero
quantityAvailablequantityAvailableQuantity available for the variant
requiresShippingrequiresShippingWhether the variant requires shipping
selectedOptions[].nameselectedOptions.nameNames of the options selected for the variant, such as Color or Size
selectedOptions[].valueselectedOptions.valueValues selected for the variant’s options, such as Blue or Large
skuskuStock keeping unit assigned to the variant
titletitleVariant title
variant_idvariant_idVariant identifier supplied in the source data
weightweightWeight of the variant
weightUnitweightUnitUnit used for the variant weight

Mapping notes

Contextual pricing

contextualPricing contains prices for the country or market configured for the item collection.

LevelDescription
ProductShopify provides minimum and maximum variant prices and, when available, minimum and maximum compare-at prices.
VariantShopify provides the contextual price and compare-at price for that variant. Shopify also returns a currency code for the contextual price.

The mappings above expose selected nested amount values as flat main attributes. Compare-at pricing can be absent, so the relevant contextualPricing object or nested property may be null. Contextual prices are refreshed separately from the main product data and may not update at exactly the same time as other catalog fields.

See Shopify's contextual pricing documentation and the Loomi for Shopify integration guide for the market and sync context

System attribute semantics

AttributeMeaningSource mappingNote
activeBloomreach availability attributeProduct: isPublished Variant: availableForSalePublication status and purchasability aren’t the same concept
launch_dateDate/time item first became available for saleProduct: publishedAt Variant: createdAtVariant createdAt may not reflect when it first became purchasable
stock_levelOn-hand / available-to-sell quantityProduct: default.totalInventory Variant: quantityAvailable
category_pathsCategory-path structure for item collectionsCustom expression (no direct Shopify field)Expression output must match the structure item collections expect
large_image / thumb_imageProduct imagesSame Shopify image URL for bothNo resizing/transformation is applied — thumb_image is not an actual thumbnail

Source and destination fields

  • brand vs. supplier — both map from Shopify vendor but they're distinct item collection attributes.

  • Product vs. variant records — a product-level attribute describes the parent product; a variant-level attribute describes one purchasable variant.

  • Fields mapped in both system and main — when a source field appears in both with different destination names, treat system as canonical for the reserved attribute, and use main when you need the source-shaped or integration-specific value instead.

  • Case sensitivity & nulls — Shopify source paths are case-sensitive and can be absent for some products/variants, particularly: images, SEO fields, metafields, selected options, inventory values, and compare-at prices.

  • Custom metafields — e.g. metafields.custom.hardness.valuecustom.hardness. Availability depends on whether that metafield is configured on the source data.



Did this page help you?

© Bloomreach, Inc. All rights reserved.