How to configure a product in Salesforce CPQ – “Configure your Lunchbox”

In my previous blogs, Lead to Cash Processes and CPQ Simplified, I have explained where CPQ falls in the Lead to Cash lifecycle and what CPQ is. In this blog I will explain how a product is configured in Salesforce CPQ.  

A CPQ system has two primary elements product configuration and pricing. There are other important processes like opportunity, contract management billing but configuration and pricing are the core of CPQ.  Let us understand product configuration in Salesforce CPQ through the following scenario:

Scenario: Tango foods is food delivery service which supplies home cooked food to customers in the Houston Area. End customers can buy individual boxes of freshly prepared soups, vegetables, rice, salads, yogurt and lentils. They have different sizes of boxes like, 4 oz, 8oz, 12 oz etc. which can be purchased separately. Since they are a fresh food delivery service, they deliver home food every Sunday for which they take orders on Thursday and deliver Sunday.

Customers usually call in or place order on the website based on what is available for order every week on Thursday. Tango foods changes is menu every week and different types of soups, vegetables, salads yogurts are available.

Tango Foods wants to introduce a lunch box concept where customers can choose 1 item each in every category up to a maximum of 8oz box. Customers can call in and place orders with the help teleservice reps and or configure the lunchbox online. In addition to a lunch box, customers can continue to buy individual boxes.

Tango Foods has categories of foods categories. Their categories are generally fixed but the items in categories keep changing every week or so. The objective is to have a quick enablement of the Lunchbox product and enable customers to configure their own Lunchbox. Once they launch this in the market and based on the response they also want to have a weekly/monthly subscription service for these lunchboxes.

Their customers are individual consumers like you and me. Tango foods has the following categories of food available and I am listing their menu of a particular week. I am also listing the business rules which must be applied when a lunchbox is configured. These business rules are drafted by incredibly talented managers of Tango foods.

Tango Food’s Menu for a week:

Soups ($4, $6)

Vegetable soup – 4 & 8 oz, Tomato soup –   4 & 8 oz, Vegan quinoa soup 4 & 8 oz, Lentil Soup – 4 & 8 oz

 Vegetables ($5, $8)

Squash Vegetable 8 & 12 oz, Okra Vegetable 8 & 12 oz, Indian Cottage cheese vegetable 8 & 12 oz

Curries ($5, $8)

Red beans Curry –> 8 & 12 oz, Vegan Lentil curry –> 8 & 12oz, Green Lentil curry –> 8 & 12 oz, Yellow Curry 8 & 12 oz 

Rice ($4, $6)

Curd Rice 8 & 12oz, Fried Rice 8 & 12 oz, Coconut rice 8 & 12 oz, Vegetable rice 8 & 12 oz 

Yogurt ($3, $5)

Homemade Natural whole milk Yogurt 8 & 16 oz, Homemade Natural homey and vanilla whole milk yogurt 8 & 16 oz

Salad ($4, $6)

Quinoa salad 8 &12 oz, Mixed veggies and corn salad 8 & 12 oz

Now, we need to configure a lunch box which will contain the following rules:

Product Rules:

1)Lunch Box is $15 each

2)Lunchbox product should be available with the choices it offers for the user to choose

3)As soon as this product is chosen, the configuration page should come up (configuration should always be available for this product)

4)Lunch box can have only one item from each category and minimum one product is required from each category

5)All products available in a category should be visible to the user

6)The maximum qty each box can have is 8 OZ or less in the bundled product

7)Individual items can be ordered additionally with the lunch box

8)If yellow curry is selected then curd rice cannot be selected

9)Prices of items included in the lunch box will be rolled into the lunch box price

 Let us see how the above scenario can be configured in Salesforce – (I am giving solution guidelines and not the actual pics of the config as the blog gets very heavy). I have already explained some system aspects of configuration in my blog titled ‘Value Addition of CPQ over Salesforce Sales cloud“. The idea is to provide hints and direction but not the exact solution.

Tango enterprise has individual customers– These individual customers are called as consumers and Person accounts can be used for the same in Salesforce. Individual Products –> All food items must be created as products in salesforce org. Products is the standard object given by Salesforce.

1)Lunchbox is $15 each– A lunchbox product needs to be created in salesforce product object. The price of the product needs to be maintained in another object which is available in the related list of products. This object is price book entry. Salesforce requires that price needs to be maintained in a standard price book that salesforce provides. Usually for CPQ purpose create another price book and maintain the price in the price book entry object with this price book.

2)Lunchbox product should be available with the choices it offers for the user to choose– This starts once the Lunchbox product is created and its price is maintained. Lunchbox product will have a related list ‘Product Option’. This is the key to form choices for Lunchbox product. This is the Product option object which comes with Salesforce CPQ to link the main product with its choices. All the above food items need to be created as Option products of Lunchbox to be available in the Lunchbox bundle. This has to be done in addition to creation of the above mentioned products as separate standalone products.

3)As soon as this product is chosen, the configuration page should come up (Lunchbox made compulsory for configuration)– In the Lunchbox product set up, in Salesforce CPQ Configuration section, there are 2 fields which will control this setting, ‘Configuration Type’ and ‘Configuration Event’. Value in configuration type must be ‘Required’ and configuration event must be ‘Always’. This will fulfill the requirement of the required config for Lunchbox product.

4)Lunch box can have only one item from each category and minimum one product is required from each category– In order to fulfill this we should design categories. So, categories in our example is like Yogurt, Rice, Curry, Soups or salads. We have different varieties or soups, curries etc. These categories are called Features in Salesforce CPQ. Features group similar type of products. Features control how these options (choices in lunchbox product) behave while they are configured. Features are available as related list to products and can be created from there. Once these features are created, they are assigned to the bundled products.

This is how the products in the bundle get associated to a particular feature and behave as per the configuration of their feature. There are fields called ‘Min Options‘ and ‘Max Option‘ on features. Through the combination of these two fields, we can control how many products from the feature can be in the configuration bundle. In our case, the value of both these fields will be 1.

5) All products available in a category should be visible to the user– Sometimes there are many options in a feature. For example, if Tango has more then 50 soups in the soup category then it may become difficult to display all of them. But it our case Tango just has 4 soups so we want to display all. For this there is a field called ‘Option selection method’. The values for this field in our case should be ‘Click’. This will bring up all options for all features along with check boxes besides them to select.

6)The maximum qty each box can have is 8 OZ or less in the bundled product– In order to fulfill this condition as a solution designer, I would recommend including products with 8oz boxes or less in the bundle. For example, Squash vegetable is available in 8 and 12 oz boxes. I would only include Squash vegetable product with 8oz box in the Lunchbox bundle.

7) Individual items can be ordered additionally with the lunch box– All the items above are created as product options for the Lunchbox so that they are available as a configuration choice with the lunch box. However, they can also be purchased individually outside of a lunchbox. To implement this functionality, we have to make sure that the value in the field ‘Type’ value on Product option is ‘Related’. This would mean that the product is related to the bundle but is also fully independent. So, for example a vegetable soup is available as a part of the Lunchbox but also fully independently available which means that it can also be purchased independently.

8) If Yellow curry is selected then curd rice cannot be selected– This functionality can be configured through a functionality called ‘Option Constraints’ and  or ‘Product Rules’ in CPQ.  We will take the Option constraint approach here. Option constraint is available in the Lunchbox product as a related list. There are 2 types of constraints – Dependent and Exclusion option constraints. Dependent mean one product A can be selected upon selection of Product C while Exclusion means product A cannot be selected if product B is selected. Our scenario is of the Exclusion type. This has to be configured for our scenario to be fulfilled.

9)Prices of items included in the lunch box will be rolled into the lunch box price– When an option product is created, in the detailed section of the created option- there is a field ‘Bundled’. This needs to be checked for this option’s individual price to roll up to the bundle. For example, if we are creating a Vegetable soup 8 oz as a product option with the field ‘Bundled’ checked- then it is individual price of $6 will no longer hold. It will be rolled up to the bundled price of $15 dollars to the Lunch box.  However if this product option is purchased outside of the bundle then it’s individual price will hold.

I usually try and keep the blogs within 800-900 words but this one has gotten unusually long. I will not mess with it. I just wanted to give a full context and want to emphasize that we need to have a CPQ way of thinking.

I hope you have liked it. Your comments, shares and likes will motivate me to keep writing.



  1. Abhishek Tandon

    May 26, 2020 - 11:58 am

    Tarang, Great article and use cases. I think for #8 product rule is better solution than option constraint considering so many permutation and combination in this scenario.

  2. Faustino Mundorf

    August 15, 2020 - 4:58 pm

    It’s really a nice and helpful piece of information. I am happy that you shared this helpful info with us. Please keep us informed like this. Thanks for sharing.

Leave a Reply

Your email address will not be published. Required fields are marked *