Before You Begin
- The product must be a configurable product with an option attribute, such as
tenant~color, on its product type. See Option Attributes. - Note the exact option values on the product. Get the product with Get Product and read
options[].values[].value. Image group tags must use these values exactly, including case. - Make the images available by URL. Each image needs an
imageUrl(or acmsIdfor a file in the Kibo File Manager).
Step 1: Choose the Selector Option
SetisProductImageGroupSelector to true on the option that drives the images. Only one option on a product can be the selector. Marking two options returns a validation error.
Step 2: Define the Image Groups
Add aproductImageGroups array. Each group has:
productImageGroupId: a code you choose, such asblack. It must be unique on the product.productImageGroupTags: the option values the group applies to. Each tag has the option’sfqnand avaluesarray.
cool-tones group is shown for both blue and red:
fqn and a value. The fqn must be an option attribute on the product’s product type.
Step 3: Assign Images to Groups
Incontent.productImages, set productImageGroupId on each image to the group it belongs to. Leave it out (or set it to default) for images that belong to the base product, such as a lifestyle shot shown before the shopper picks a color.
productImageGroupId values, or tag one group with both option values as in Step 2.
Full Update Product Example
Get the current product, change the three parts above, and send the whole product back:"productImageGroupId": "default".
How the Storefront Picks Images
The storefront product APIs return a filteredproductImages list based on the selected value of the selector option:
For example, a shopper who picks Blue on the configure call gets only the
cool-tones images:
productImages contains only trail-jacket-blue-front.jpg. Choosing a size alone does not change the images, because size is not the selector option.
Use includeAllImages=true when your product page loads all images once and switches between them in the browser as the shopper changes options. Each returned image carries its productImageGroupId, and the product’s productImageGroups tells you which option values each group belongs to.
Pitfalls
- No selector option set. If no option has
isProductImageGroupSelector: true, the storefront only ever returns default images, even when groups and tags are correct. - Tag values do not match option values. Tag values are compared to the option’s
valueexactly.blackdoes not matchBlack. Copy the values fromoptions[].values[].value. - Base images disappear after a color is picked. Once a selector value is chosen, default images are not returned. If you want a lifestyle shot on every color, add a copy of it to each group.
- Sending a partial group list deletes groups. When an update includes
productImageGroups, any existing group missing from the list is deleted, and its images move to the default group. To leave groups as they are, leaveproductImageGroupsout of the request entirely. - Group IDs cannot be renamed. An update can change a group’s tags, but not its ID. Sending a new ID creates a new group, and the old group is deleted if you leave it out. Point the images at the new ID in the same request.
- Image points to a group that does not exist. Kibo does not reject an image whose
productImageGroupIdmatches no group. That image is never returned for a selected variation, and it is not a default image either. - Groups named
default.defaultis reserved for ungrouped images. A group with this ID is ignored. - Bulk import. In the Catalog template, the image group columns are export-only. Use the API to set image groups.

