This is the second edition of my Salesforce CPQ series which will help us start deep diving into Salesforce CPQ concepts and how the quote-to-cash process can be implemented in the same. I would recommend you to go through the first one mentioned in my earlier blogpost on Salesforce certified CPQ Specialist resources before reading this through.
This edition is intended to cover specific features related to configuring products using Salesforce CPQ. I didn’t want to make it too detailed since we already have quite detailed documentation on SteelBrick’s CPQ Knowledge base and basics covered well in Salesforce trailheads for CPQ.
There are two primary target users who use this part of the CPQ
- Product / Business managers to create new products and make them sellable
- Sales agents / managers to sell (and sell more) the products.
Creation of product records is the first step – both for single products and bundle products.
In the case of simple products, the configuration ends with creation of the single product record and rules if required. Product records should also be created for those products which cannot be sold stand-alone and need to be part of a bundle. In this case, the Component checkbox is selected so that it is not visible in configurator to be independent sold.
In the case of bundled products, the product will have multiple features which will then have multiple options. A sample bundle selling Google Pixel and 50 Mbps Internet is given below:
Bundled products are extremely useful for implementing cross-sell / up-sell capabilities. Some important details to fill in while creating a bundled product are:
- Needs to be active and added to pricebook
- Option Selection Method: Add button will display options under features on clicking the add button. Click will enable checkboxes next to product options
- Package product code: Configured Code Pattern (Bundle), Component code (Option), Component code position (Option)
- Hidden checkbox: Hides bundle product to client
- Configuration type: Disabled (Sales agent cannot configure), Allowed (can configure), Required (must configure). This will be useful when there are details to be entered during configuration.
Product feature

- One product can have multiple features.
- Features by itself cannot be sold.
- They can be used to group different product options.
- Can include cardinality rules controlling minimum and maximum product options under a feature which can be added
Product option

- Associates another product created, as a component, accessory or related product.
- Quote line visibility field in product option decides whether to show a given option or not
- Can have minimum / maximum cardinality for each of the product options under a feature.
Option constraints

- ‘Check Prior Purchases’ flag: Sell based on past purchases under a given account
- Should be activated for it to work
- Constraining option and constrained option can have dependency / exclusion relationship
Configuration attributes
Configuration attributes are used to gather information during Sales and perform some product actions (like showing / hiding / selection products, performing validations / alerting the sales agent) or pricing actions.
- Attributes can be shown in 2-columns or 3-columns.
- ‘Apply to Product Options’ flag: Make attribute value at bundle level flow to all product options (Example: Phone number for a mobile product can be copied across all line items under a bundle)
- Apply to specific product option during sale: Have a product option field and attribute with same name. Twin field setup
- Apply immediately flag can be checked to ensure the attribute value is immediately passed to the quote line. This will be useful in rules that are run depending on the same.
Product rules
- Types: Alerts, Selection, Validation, Filters
- Alerts: Show information message, but do not stop further from completing the quote
- Selection: Add, Enable, Remove, Disable, Enable & Add, Disable & Remove, Show, Hide, Show & Add, Hide & Remove products based on selection
- Product Selection rules over validation rules for better UX
- Filter: Dynamic bundles can be configured to conditionally show/hide products based on selection in attribute(s).
- Tested variable can be tested against summary variables, example: Number of existing subscriptions of a particular type is greater than 0
Quote Line Editor
This is used by the sales agent during the sales process.
Search products during Sale

- Field sets are used to include new fields shown here
- Search filters can also have have hidden filters, example: show only products which have stock available in warehouse
- Custom actions can be used to show some products based on button click in quote line editor
Configure products during sale

- The attributes can be shown at the top or within each of the features / product options level
- Each Features can be grouped further based on categories
- Feature level cardinality rules are shown within the feature heading
- More fields can be added using field sets.
Quote Lines Editor Summary
This page shows a summary of the quote lines which are selected during sales.

There are primarily two different views
- Price dimensions, are shown by splitting the lines across each of the dimension. Example, in the case of one-time fee, setup fee or recurring charge for a product or yearly prices there will be 3 columns whereas the example above shows an Year 1 price
- Product lines sold normally will have one line each, if they are meant to be visible, depending on other configurations in the product level (like component or Quote line visibility fields).
- If we want to split the root products from the child products, we can do so by configuring in Managed package -> Configure -> Line Editor -> Visualize Product Hierarchy
I hope this page helps you in your learning journey. Please feel free to add any of your blogs or point out to any missing / incorrect details in the comments section.
Next edition: Salesforce CPQ – P in CPQ – Pricing & Discounts
This Really helps alot. Thanks 🙂
Glad to know it helped, please do let me know if there can be some improvements or if some topics are missing. 🙂
Hi, nice article!
One question dough. How come that in your last image a line with a bundle “Google Phone + 50Mbps…” has its own list unit price(100€)? I thought that the line item with the bundle name should be 0 and the price of the bundle will be sum of its components.
Did I get something wrong?
Nice observation.. That’s right. I created the test bundle product and defined a price at the bundle product level. Hence it is showing in this way.
Hello…!!
Is there a way to add a message why a specific product is not available on product search screen. I know it could be one of the following reasons:
1.Product is not active.
2.Product ‘Component’ checkbox is set to true.
3.Because of any Search Filters.
4.Or if product do not have a active price book entry which is on Quote.
Is there a way to add some information message about the reason why a product is not available or searchable, which helps the Sales rep understand why this product is not available.
Thanks!!
Some or all options require further configuration. Look for configuration icon next to options that must be configured