Catalog objects
On this page
The catalog is the largest group of objects in StoreConnect, and almost all of it hangs off one record. Use this article to find the object you need before you write a query, plan an import, or add a field.
Product2 is the center
Product2 is the standard Salesforce product object, which StoreConnect extends heavily. Everything a shopper can buy is a Product2 record, including things that do not look like products at first: a variant is a product, a bundle is a product, and a subscription is a product with a billing schedule.
Thirty-nine objects point at Product2, which is why its Referenced by table is the fastest way to find anything catalog related.
Four relationships do most of the work:
- A product sits in categories. Not directly. A Product Product Category join record connects the two, so one product can appear in many categories and one category can hold many products. Categories nest through Product Category Hierarchy.
- A variant is a product pointing at another product. A Product Variant record links a variant to its master, and the variant’s own traits say what makes it different.
- A bundle is a product made of other products. Product Component names each part, Component Group groups the parts a shopper chooses between, and Component Pricing overrides prices inside the bundle.
- A price lives outside the product. The product record holds no price. A Pricebook Entry does, one per product per price book. To be sellable, a product needs an active entry in the store’s default price book, in the store’s currency.
Traits are four objects, not one
Traits are how a catalog becomes filterable, and they are the part of the schema most people misread. The value a shopper filters on is spread across four records.
Read the chain from the bottom up. A
Trait Category such as Dimensions holds
Trait Types such as Width. Each type has
Trait Values such as 30cm. The
Trait record is the one that matters: it joins a value
to a product. No Trait record, and the product is not filterable by that
value, however many trait values exist.
:::tip Applying the same specification shape to many products is what Product Trait Template is for. Its items become Trait records on the product when the template is applied. :::
Objects in this domain
| Object | API name | Purpose |
|---|---|---|
| Product2 | Product2 |
Every sellable item: simple products, variants, bundles, and subscriptions |
| Product Category | s_c__Product_Category__c |
A group of products, used for storefront navigation and for scoping promotions and pricing |
| Product Category Hierarchy | s_c__Product_Category_Hierarchy__c |
Nests one category inside another, forming the category tree |
| Product Product Category | s_c__Products_Product_Categories__c |
Places a product in a category. A product can sit in many |
| Product Variant | s_c__Product_Variant__c |
Links a variant product to its master, forming a variant set such as sizes of one shirt |
| Related Product | s_c__Related_Product__c |
Links two products so one appears as a related item on the other’s page |
| Related Product Category | s_c__Related_Product_Category__c |
Links two categories so one appears as a related category on the other’s page |
| Product Component | s_c__Product_Component__c |
One component product inside a bundle, and the quantity of it |
| Component Group | s_c__Component_Group__c |
A set of components in a bundle the shopper chooses between |
| Component Pricing | s_c__Component_Pricing__c |
Overrides a component’s price when it is bought as part of a bundle |
| Pricebook | Pricebook2 |
A named set of prices. A store has a default price book and can have others for account pricing |
| Pricebook Entry | PricebookEntry |
The price of one product in one price book, including sale price and cost |
| Media | s_c__Media__c |
The record behind every image, video, file, and document used anywhere in the store |
| Product Media | s_c__Product_Media__c |
Attaches a media record to a product, and sets its display order |
| Product Purchasable Media | s_c__Product_Purchasable_Media__c |
Deprecated. Attached media a shopper could download after purchase |
| Trait Category | s_c__Trait_Category__c |
A group of trait types, such as Dimensions holding width, height, and depth |
| Trait Type | s_c__Trait_Type__c |
One kind of trait, such as width, color, or size |
| Trait Value | s_c__Trait_Value__c |
One allowed value for a trait type, such as Large |
| Trait | s_c__Trait__c |
Assigns a trait value to a product. This is the record that makes a product searchable and filterable by that value |
| Product Trait Template | s_c__Product_Trait_Template__c |
A reusable set of traits, applied to products that share the same shape of specification |
| Product Trait Template Item | s_c__Product_Trait_Template_Item__c |
One trait inside a template, created on the product when the template is applied |
| Tag | s_c__Tag__c |
A simple label attachable to products, pages, and articles |
| Product Tag | s_c__Product_Tag__c |
Attaches a tag to a product |
| Taxonomy | s_c__Taxonomy__c |
A named collection of product categories, used to run more than one category tree |
| Supplier Account | s_c__Product_Supplier__c |
Links a product to the account that supplies it |
Where it meets other domains
- Orders and checkout. A cart item and an order item both point at Product2, and promotions and discounts scope themselves to products and categories. See order and checkout objects.
- Fulfillment and inventory. Stock is counted per product per location, so Stock Level points at Product2. See fulfillment and inventory objects.
- Store design. A content block can be attached to a product or a category, through Content Block Product and Content Block Product Category. See store design objects.
- The storefront. Most catalog objects have a Liquid counterpart. Each object reference article ends with an On the storefront section naming the drop that renders it and which field arrives as which attribute.
Several of the records above are join objects. If you are querying or importing through one, junction objects explains what that means for SOQL, Data Loader, and the order you create records in.
Was this article helpful?
Thanks for your feedback! It helps us improve our docs.