# Products, variations, inventory lists and price books

*B2C Commerce Developer Study Guide · Work With a B2C Site · Last updated November 3, 2026 · https://www.certifyforce.com/study-guide/b2c-commerce-developer/work-with-a-b2c-site/products-variations-inventory-lists-and-price-books*

How B2C Commerce product types, catalogs, inventory lists and session price books decide what a shopper can find, buy and pay, and which inventory flag or Script API call changes each outcome.

- Certification: Salesforce B2C Commerce Developer
- Exam section: Work With a B2C Site
- Study guide: https://www.certifyforce.com/study-guide/b2c-commerce-developer

**Official exam objective:**

> Given a Business Manager task, work with the product data model to manage products and product search model, their categorization, and associated inventory and pricebooks.

## What the exam expects

- Separate the product (master) catalog from the storefront catalog and say which products `ProductMgr.queryAllSiteProducts()` returns for a site.
- Predict whether a standard product, base product, variation group, variation product, product set or bundle can be bought, priced, promoted and found in search.
- Pick the inventory list or inventory record setting (default in-stock flag, perpetual, backorder allocation, Use Bundle Inventory Only) that produces a required availability, and read `ProductAvailabilityModel` results.
- Explain how checkout reserves stock, what cancellation does to it, and how to add a custom inventory attribute.
- Control which price books a shopper's session uses with `PriceBookMgr`.

Key terms: **base product** (the non-sellable product that represents all its variations); **variation group** (a subset of a base product's variants sharing a value such as one color); **inventory list** (holds one inventory record per product; one list per site); **perpetual** (an inventory record flag meaning always in stock); **ATS** (available to sell); **applicable price books** (the price books set in the user session for price lookup).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Product with no record | Decided by the list's default in-stock flag | [Customize Inventory Management](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-inventory-for-developers.html) |
| Checkout reservation | Expires if not finalized within 10 minutes | [Customize Inventory Management](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-inventory-for-developers.html) |
| Manual cancel or `Order.setStatus()` | Doesn't change stock levels | [Customize Inventory Management](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-inventory-for-developers.html) |
| Base product | Can't be purchased; orderable if online and one variant is orderable | [Product Types and Variations](https://help.salesforce.com/s/articleView?id=cc.b2c_product_types.htm&type=5) |
| Product set price | Always the sum of its products; can't be set | [Product Types and Variations](https://help.salesforce.com/s/articleView?id=cc.b2c_product_types.htm&type=5) |
| Moving a variant | Release in one import, assign in a later one | [Product Types and Variations](https://help.salesforce.com/s/articleView?id=cc.b2c_product_types.htm&type=5) |
| `queryAllSiteProducts()` | SeekableIterator; call `close()` if not fully read | [Class ProductMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.catalog.ProductMgr.html) |
| Session price books | Only the books set are used for lookup | [Class PriceBookMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.catalog.PriceBookMgr.html) |

## Check yourself

- When does `getAvailabilityLevels()` throw an exception?
- Why can the product catalog stay unassigned from every site?
- Why does a variation group show a price range even when its base product has a price book entry?
- How often does the CleanupInventoryTransaction job run?

## Sources

- [Customize Inventory Management](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-inventory-for-developers.html)
- [Product Types and Variations in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_product_types.htm&type=5)
- [Class ProductMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.catalog.ProductMgr.html)
- [Class PriceBookMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.catalog.PriceBookMgr.html)
- [Class ProductAvailabilityModel](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.catalog.ProductAvailabilityModel.html)
- [Catalog Design](https://help.salesforce.com/s/articleView?id=cc.b2c_catalog_design.htm&type=5)
- [Search Indexes](https://help.salesforce.com/s/articleView?id=cc.b2c_search_indexes.htm&type=5)
- [B2C Commerce Business Objects (Trailhead unit)](https://trailhead.salesforce.com/content/learn/modules/cc-digital-for-developers/digital-business-objects)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 14 linked practice questions, and unlimited timed mock exams are included with the B2C Commerce Developer pack (USD $19): https://www.certifyforce.com/practice-exams
