The Plan
A while back I spent some time playing with Salesforce CPQ Guided selling and related plug-ins for advanced product search. The documentation around these features was a tad lighter than I would have liked, and there were a few ‘gotchas’ along the way. As a result, I thought it would be valuable to walk through the processes in a mini-series around different CPQ configuration tools. I’ll plan to look at Guided Selling and Product Configuration Initializer (and potentially Product Search Plugin as well). To start, we’ll walk through a simple example of Guided Selling before adding a Product Configuration Initializer in the next post to spice things up a little bit.
Quick Background and Scenario
Guided Selling perhaps could more accurately be known as ‘Guided Filtering’, as it allows a more advanced product filtering approach through progressive and/or dynamic setting of values. For our example, we’ll use Guided Selling to filter down Computer offerings for a customer with no previous experience buying a computer (I’m going for a veeerrrry common scenario here ????).
Set Up Quote Process
The first thing we’ll do is create a Quote Process record. This will be the container for our Guided Process. Give it a clear name as you may end up with many different processes. ‘Auto Select Product’ is a checkbox you can set so in the case where only 1 product is returned by the filter, CPQ will automatically select it for configuration or addition to the Quote, depending on the Product configuration requirements. We’ll leave unselected for now.
Lay Out Products and Classify Factors
The next step will be to classify our products based on different characteristics. This will allow us to break our Quote Process into what are known as Process Inputs, which are essentially the Questions we are asking during the Guided Selling Process. In our example, we have two types of Computer: Desktop and Laptop. We have two types of each – Gaming Desktop or Work Desktop…&…Gaming Laptop or Work Laptop (remember I said this was a simple example!). To arrive at which of the 4 products is best for our customer, we’ll thus ask only 2 simple questions. Again, in real life we’ll end up with far more complicated chains of questions, but this should give you the idea of how it works and then you can apply to more complex scenarios.
- Do you need your computer to move around with you (travel or home)?
- Will you play games or do work with your computer?
Apply Properties to Products
Based on our questions, we really have only two properties that we need to make sure are represented on our 4 types of Computer. Property 1 is Mobile vs. Stationary, and Property 2 is Gaming vs. Work. Based on a combination of the 2 resultant answers, we can arrive at the Computer to recommend for further configuration (what we’ll cover in the next part of this mini-series).
We will thus create 2 fields on our Product object. Mobility __c to track mobility type (we only have 2 for now), and Purpose __c to track purpose (again only 2 for now).
Create 4 Products (if you haven’t already, and set the appropriate values for each). Set the appropriate classifications on the Products: Gaming Desktop (Stationary/Gaming), Work Desktop (Stationary/Work), Gaming Laptop (Mobile/Gaming), Work Laptop (Mobile/Work). This is a bit confusing in text format, so here it is in a picture!
Foundational Work – Process Inputs Metadata
Process Inputs are the Inputs we will provide in the Guided Selling Screen – effectively these are the questions that we will ask the user to guide the filtering. Before we can create the records, we have some further setup to complete…
The first thing we need to do is add our new Product field api names as picklist selections on the Input Field and Product Fields of the Process Input. Note that this applies for the Picklist types we used, but you can also employ Binary Choice Input (Checkbox) or Integer Input (Number Entry) and not match to any Product field in particular. This can be used in Process Input Conditions to show/hide Process Inputs based on the responses given. In more advanced examples, Process Input Conditions become especially important.
Next, and this is missing in nearly all documentation I found on Guided Selling, we need to add the matching ‘Input Field’ as an actual field, with matching api name, on the Process Input itself. This allows an entry to be made and stored during the Quote Process, and then matched to the Product Field on the Product record. these don’t need to be on the layout, but they need to be on the object or nothing shows up in the quoting process.
Create the Questions – Process Inputs
OK, now we can finally create the Process Input records themselves. To do so, we use the Process Input related list on our Quote Process, and create New. We put an Input Name, and the all-important Label – this is what shows up in the Guided Selling interface. We next put the Display Order (the vertical ordering we want for our questions). Next we select the Input Field (what user will enter), and then the Product Field and Operator (what we will compare that input to in terms of matching to a Product). The example below is just for Mobility, but you will do the same for Purpose__c, but with Display Order of 2 instead of 1.
Putting it All Together
We now have a Quote Process, with 2 Process Inputs (Questions). The last piece of setup before actually creating a Quote will be to enter the Quote Process Id on the SBQQ__Quote__c.SBQQ__QuoteProcessId__c field on the Quote. In real life you’d default this for the user using a Trigger or Flow (or allow an input selection to select from multiple available processes). For our example, we copy/paste it in manually.
/lightning/r/SBQQ__QuoteProcess__c/aGQf00000004DOdGAM/view
Now we’re ready to go for our Guided Selling example. Of course we’ve spent entirely too much time setting this up to make it useful in such a simple scenario, but hopefully you get the point and can imagine the possibilities for extending this out.
Test the Solution
In the Quote Line Editor, we select ‘Add Products’. Because we’ve entered a Quote Process Id, we’ll be entered into the Guided Selling Screen right away.
Let’s enter Mobile & Gaming, because we like to have fun when we’re not configuring Guided Selling.
Next hit Suggest and the Gaming Laptop will be found and selected based on the value matching between Process Inputs and the Products available for Quoting.
Hopefully this was a useful introduction to Guided Selling. In the next post we’ll look at how to use a plug-in to automatically configure a configurable product using Guided Selling inputs. Thanks for checking it out!
[…] the previous post on the basics of Guided Selling, we set up a simple example for arriving at a configurable […]
[…] the prior two posts on Guided Selling, and Product Configuration Initializer, we reviewed some alternative approaches to configuration […]
[…] the prior three posts on Guided Selling, and Product Configuration Initializer, we reviewed some alternative approaches to configuration […]
That was very cool Nick, As a new learner in cpq, I Enjoyed the extermly simple and effective way of putting out the Guided Selling! Looking forward to reading out more of your stuff on Salesforce CPQ. One by one will implement this for sure !! Keep writing like this Nick.
[…] Guided Selling Basics […]