Price Rules

by Community Manager on ‎08-06-2015 10:57 AM - edited on ‎04-12-2017 02:28 PM by Community Manager


Price rules automate price calculations and update quote line fields - For instance, you can set price rules to automatically discount quote line items based on product or quote attributes.  Customize price rules using Price Conditions and Price Actions:

  • Price Conditions: Use filters, variables and formulas to specify the conditions under which the Price Rule's automation will take effect. You can set as many conditions as you like and specify how the conditions should be met to trigger the resulting action (i.e., all conditions, one condition, or a certain logically-determined combination of conditions.)
  • Price Actions: The actual action, most commonly a discount, applied to quote line items once the Price Rule has met its Price Conditions. 

A Price Rule can have as many conditions or actions as needed, but must have at least one of each.



Price Rule Creation

  1. Navigate to the Price Rules tab and click New.
  2. Enter a meaningful Name for the price rule.png
  1. Choose the Evaluation Scope of your query in your price condition.
    • Configurator: The rule will be evaluated while configuring the product.
    • Calculator: The rule will be evaluated on the quote.
  2. Choose an option for Condition Met
    • All: Choose to trigger the action only when all conditions are met.
    • Any: Choose to trigger the action when a single condition is met.
    • Custom:  Use with the Advanced Conditions field to define how the conditions should apply.  For example, this enables a rule with 3 conditions to be handled in the following fashion: 1 AND (2 OR 3). 
  3. Calculator Evaluation Event: This field allows you to specify when this price rule should be evaluated. This is not available on Legacy Calculator and should only be used when the Price Rule is targeting the Quote Line. You may select any combination of the following picklist values:
    • On Initialization: Price rule will be evaluated when the quote line editor loads
    • Before Calculate: Price rule will be evaluated before the price is calculated
    • On Calculate: Price rule will be evaluated as the price is being calculated
    • After Calculate: Price rule will be evaluated after the price is calculated
  4. Configurator Evaluation Event: This field determines when price rules fire following changes within the configurator. Note: Price Rules in the Legacy Calculator will only fire when the value for this field is set to None or Save; they will not fire when the value is set to Edit
    • None or Save: Configurator-scoped price rules will fire after Save is selected within the Configurator.
    • Edit: Configurator-scoped price rules will fire immediately after edits to quantity have been made within the Configurator, as well as after Save is selected.
  5. Select Active to activate the rule for users.
  6. Optional: Click the Product Lookup Field to associate your Price Rule with a Product. This is specifically for Price Rules targeting Product Options, allowing for restrictions of particular Products within a Bundle.
  7. Click Save.

Caution: Salesforce CPQ best practices recommend injecting into list prices only with list-priced products. You cannot inject block-priced products into list prices unless your Price Rule fires After Calculate, in which case the injected value is not used in the Price Rule calculation.



Price Condition Creation

  1. Navigate to a Price Rule.
  2. Click New Price Condition from the Price Conditions related list.PRICE RULES 3.png
  1. Index: Allows the user to assign a unique number to this Condition if they wish to reference it within a Price Rule's Advanced Condition. Advanced Conditions allow user to establish conditional logic under which a Price Rule will fire - I.e., IF (1 AND 2) OR 3.
  2. Object: Choose the object against which the rule is evaluated, such as Quote Line or Summary Variable. Admins may need to manually add values to this picklist in the Price Condition's Page Layout.
  3. Field: Choose the field that should contain the value you enter in the subsequent Value field. Admins may need to manually add fields to this picklist in the Price Condition's Page Layout.
  4. Price Rule: This should already contain the Price Rule associated with this new Condition.
  5. Operator: Choose the logical operator you want to apply when comparing the Field to the Value.
  6. Tested Variable: Enter or lookup the Summary Variable if you created one, to compare against the Value field.
  7. Tested Formula: Enter a formula with operators, functions and available fields on quote and target object. You can construct a formula using many of Salesforce's available operators and functions. You can also add in information from the quote or the target object field (i.e., SBQQ__QuoteLine__c.SBQQ__ListPrice__c). Add Caution.
  8. Filter Type: Choose one of the following:
    1. Value: Evaluate this rule against a specific value
    2. Variable: Evaluate this rule against another Summary Variable
    3. Formula: Evaluate this rule against the result of a Filter Formula
  9. Filter Variable: Enter or lookup the Summary Variable to evaluate against in the Tested Variable field
  10. Filter Value: Enter the value you want to match in the field you selected using the Operator chosen.
  11. Filter FormulaEnter a formula with operators, functions, and available fields on quote and target object. You can construct a formula using many of Salesforce's available operators and functions. You can also add in information from the quote or the target object field (i.e., SBQQ__QuoteLine__c.SBQQ__ListPrice__c). 

Caution: The Tested Formula and Filter Formula fields can only be used with the Advanced Quote Calculator.

Tip: To build price rules that apply different prices to subscriptions based on different terms, use the Subscription Term field on the Quote Line object. Add its API name to the Field as a picklist value.


Price Action Creation

  1. Navigate to a Price Rule.
  2. Click New Price Action from the Price Actions related list.Price Action.png
  3. Target Object: Select the object on which the field is defined. Admins may need to manually add values to this picklist in the Price Condition's Page Layout.
  4. Target Field: Select the field you want updated when the related Price Conditions are met. Admins may need to manually add values to this picklist in the Price Condition's Page Layout.
  5. Value: Enter the value you want inserted into the target field.
  6. Rule: This should already contain the Price Rule associated with this Action.
  7. Source FieldEnter a source field if the value you want inserted is calculated in another Quote Line field.
  8. Source VariableEnter the Summary Variable that sources value for this action.
  9. FormulaEnter a formula with operators, functions, and available fields on quote and target object. You can construct a formula using many of Salesforce's available operators and functions. You can also add in information from the quote or the target object field (i.e., SBQQ__QuoteLine__c.SBQQ__ListPrice__c). 
  10. Click Save

Caution: Salesforce CPQ Best Practices do not support Price Action Formulas that reference Prorate Multiplier when the action targets the Product field SBQQ__ListPrice__c.

Caution: When two Price Rules share the same evaluation event, the earliest-firing Price Action's target field value will not be usable in the Price Condition of the later-firing Price Rule. For a given evaluation event, all conditions are evaluated at once. After this, for rules whose conditions have been met, actions then fire sequentially. An action from one rule in a given evaluation event cannot influence the conditions of another rule in the same evaluation event.

by ksmith
on ‎11-05-2015 06:40 AM

Is it possible in the latest release to use price rules to target the Quote object.  I am attempting to do this on my org, but there isn't a Quote value in the 'Target Object' field on the price rule object, though there is a value in the 'Target Object' field on the price action object.






@GMuys @JGray @tzakarija

by Community Manager
on ‎11-05-2015 10:50 AM

The Target Object in the price rule can be looked at as the target "screen" or VF page. Quote Line means we want the rule to run in the Line Editor.


Your action is actually what gets accomplished. Setting Target Object to Quote and Target Field to a specific Quote field is what you need to get the end result.

by stever
on ‎02-28-2016 05:06 PM

To use the Advanced Conditions feature does the 'Use Legacy Calculator' need to be un-checked in the CPQ Settings configuration?

by stever
on ‎03-15-2016 11:04 AM

Has the field 'Evaluation Scope' replaced 'Target Object'? If so this article needs to be updated.

by Community Manager
on ‎03-15-2016 12:59 PM

Yes, the field has been renamed (but its API name remains unchanged: SBQQ__TargetObject__c). Its pick list values have also been replaced by new ones (Calculator and Configurator).

by stever
on ‎03-15-2016 01:06 PM

Thanks Giles, DO you have any info on the target values of Calculator and Configurator?

by Community Manager
on ‎03-15-2016 01:33 PM

Calculator means the "Line Editor" page, i.e. the "Quote" prior value.

Configurator means the "Config" page, i.e. the "Product" prior value.

by Community Manager
on ‎04-04-2016 05:04 PM

Can we add a description to the Evaluation Events?  It is unclear when the rule fires when the event is on load (when product is added?) vs. on calculate (seems obvious) vs. after calculate (save?).

by Community Manager
on ‎04-04-2016 05:27 PM

Actually, the on load event is misleading. All this will be changed in Spring '16 with more events and a detailed KB article in the community (Josh promised the KB...)

by kailashsati
on ‎05-10-2016 09:00 AM

Hi All, 


i have 4 Prices Rules on my Product. 3 of them are working together however the Fourth one is not working.


1-3 are working fine when 4th in not Active and vice-versa.


Did anyone face this problem ?


Thanks and regards


kailash sait

by Community Manager
on ‎05-11-2016 06:00 PM

Usually, this means that the conditions on your rules are not mutually exclusive, and one of the rules overwrite what another one has done. I would check the conditions carefully and make sure they don't conflict.

on ‎06-15-2016 08:13 AM

Is it possible to use a price rule to to pull a date from a source field and stamp the date to a target field? Or can price rules only be used with numbers and data that relates to the pricing?


by Community Manager
on ‎06-15-2016 10:19 AM

Dan, yes it's possible. Price Rules act similarly to workflow rules: they are used to inject a value into a field.

on ‎06-15-2016 10:20 AM

Thanks Gilles!


by ksherwin
on ‎06-22-2016 02:53 PM

Hi Giles, I have a use case/price rule that uses multipliers: (Quantity * 1.5 = X, etc.)


Depending on the number of users (quantity), a new price is created. For example, a list price of $8000*1.5 = $12,000 is the new price. There are several multipliers that support the bands (10 users = 1.5, 15 users = 2.0). I have a formula that calculates this "multiplied" price, since it stretches across bands of users:


IF( SBQQ__Quantity__c > 5, SBQQ__ListPrice__c * 1.5,
IF( SBQQ__Quantity__c > 10, SBQQ__ListPrice__c * 2,
IF( SBQQ__Quantity__c > 15, SBQQ__ListPrice__c * 2.5,
IF( SBQQ__Quantity__c > 50, SBQQ__ListPrice__c * 3,
IF( SBQQ__Quantity__c > 100, SBQQ__ListPrice__c * 4,
IF( SBQQ__Quantity__c > 500, SBQQ__ListPrice__c * 5,
IF( SBQQ__Quantity__c > 1000, SBQQ__ListPrice__c * 7, 0)))))))


My Price Action: I was attempting to replace the ListUnitPrice with my new "mulitiplied" price on the Quote Line. However, my calculation is not replacing the ListUnitPrice as the Target field. 


My hunch is I am going to have to place a new field on the quote line editor to support my newly calculated price and create a new Net Total so my quantity isn't injected into the Net Total. I still want to see the quantity on the quote, but since the Net Total is taking quanitity into the calculation, it looks like it needs to be replaced if the conditions are met. 


The problem I am running into is supporting discounts as well. My SalesRep may want to apply a line item discount to my new price. Do I essentially have to write another formula for the net total? Or is there a better way to approach a volume-multipler schedule? 

by Community Manager
on ‎06-27-2016 10:13 AM

First, your formula should be reversed: check for quantity > 1000 first, then for > 500, and so on. Otherwise, I think you might get inexpected results.


Second, you should use Original Price instead of List Unit Price, in your multiplication, and store the result in List Unit Price.


Third, just to be sure you realize this, the Total fields are formula fields and therefore, you cannot inject any value in them since they are read-only. You can only inject in a unit price field. That goes for all price levels (list, regular, customer, partner, net).


For volume-driven discounts, you should use discount schedules. They are designed exactly for this purpose.

by ksherwin
on ‎06-27-2016 10:32 AM

Thank you! I got the formula working in a Price Rule and the multipliers set up for each band. I am also using Original Price. 

by shyamsundar
on ‎07-14-2016 04:41 AM

Hi Giles,


I have a use case, where product option has minimum and maximum amount defined. When user configures the product option, he is supposed to enter amount which falls under the threshold. If they try to violate, they should get a hard error and should not be able to continue until they correctly enter the price. 


Can I use price rule in order to achieve this requirement, or I need to go for product rule. 


Any help would be highly appreciated.




on ‎07-14-2016 11:26 AM

Hi Shyam,


I do not work for SteelBrick but received an email from this thred and thought I would help since others have helped me on posts. You typically use a product rule for this functionality. You could also potentially utilize the min and max settings on the Feature record if a feature is being used or the min and max settings on the Option record depending on your requirements. A product rule also gives you the ability to control what message is displayed.

by PatMcKeown
on ‎07-26-2016 09:53 AM

Capture.JPGI am trying to do quantity break picing on a quote based on product set up.

I have added a quantity field and a unit price difference field to the product for a quantity break.

I also added the fields as formulas to the quote line.


The rule would be quote quantity if greater than or equal to the break quantity would get the unit price minus the difference amount.


 Not sure what I am missing

on ‎07-26-2016 03:33 PM

I noticed your evaluation scope is set to Quote Line. Not sure if that is an option, I believe the standard selections are Configurator, or Calculator. You should select Configurator if the price rule needs to fire in the configurator and select Calculator if you need the price rule to fire in the line editor. Hopefully this fixes your problem. Your price conditions appears not to be the issue. Your Price Action appears reasonable also. You can also try using a custom field for your target field to confirm the issue is not related to trying to update the List Price. Some of the pricing fields re-calculate everytime you the quote calculates and the list price might be being automatically overriden by this process subsequent to your price rule updating the field.


Paying it forwrad on this response. Good luck.



by Community Manager
on ‎07-27-2016 11:56 AM

@PatMcKeown Your action is not defined properly. You specified a formula in the Value field. This field can only accept hard-coded values, such as 10 or 20. If you want to use the result of a formula, you should use the "Formula" field (reminder: this Formula field only works if you are using the advanced calculator -- it does not work with the legacy calculator).


Also, SBQQ__UnitPrice__c is not a valid field on the Quote Line nor the Quote object.


Finally, if you intend to update the List Unit Price (SBQQ__ListPrice__c) with a formula that uses the same field, you might end up with a unit price that will be modified in a repeatitive manner with each calculation cycle. Let's assume that your Quantity_Break_2_Difference__c field is equal to 5. Let's assume your start from a List Price of $20.00. In the first calculation cycle, you will inject $20 - 5 = $15 in your Unit Price field. That might be correct. But if you click the Calculate button again, the formula will now evaluate to $15 - 5 = $10, and your unit price will now be $10. Keep clicking the Calculate button multiple times, and you will end up with a negative value... Is this really what you want to accomplish?

by gaines_adams
on ‎08-03-2016 01:30 PM

I created a Price Rule with conditions and actions and in my price action, I am populating the SBQQ_SpecialPrice__c field with a source field on the Quote Line Object. I changed the name of the source field on the quote line object (had to add a naming norm at the beginning), changed the source field on the price action to the new name, but when I go to create a quote, I get an error telling me that the originally named source field is not on the Quote Line Object. It seems like something else is being created along with the Price Action that isn't changed when you change the Price Rule but I can't figure out what it is. The same thing happens when you try to delete the price rule entirely.


Editing the price rule seems to not be able to do anything because I altered a price action on one of my price rules to reflect the accurate name of the source field and it fails to work but when I create an exact duplicate of the price rule, including all of the exact same conditions and actions, it works...


Any ideas on what is going on?

by chad_nixon
‎08-04-2016 02:00 PM - edited ‎08-04-2016 02:01 PM

Is there any documentation outlining the replacement of the 'On Load' evaluation event with "On Initialize"?  We have a large number of price rules running "On Load" and want to ensure that functionality will still exist.  Will we be required to switch those to "On Initialize"?  


Also.. we have two sandbox environments (one for dev and the other for UAT) which are on the same version, one has "on initialize" and the other has "on load" but not "on initialize".  Is that expected behavior or did I miss a step?

by Community Manager
on ‎08-04-2016 02:10 PM

The "On Initialization" event is not replacing the "On Load" one. It's an additional event. "On Load" is now renamed to "Before Calculate" and this price rule event corresponds to the "OnBeforeCalculate" event handler of the QCP. It occurs later in the calculation sequence compared to "On Initialization" which occurs very early on.


When new pick list values are introduced, or when pick list values are renamed, the package upgrade process cannot make those updates to pick lists. These should be manual updates. They are normally clearly identified in our release notes.

by chad_nixon
on ‎08-04-2016 02:30 PM

Thank you for your quick response!  I'm looking through the Spring 16 patch release notes and am unable to find anything regarding the renaming of On Load to Before Calculate, or On initialization.  Is this info located somewhere else?

by wweisger
on ‎02-06-2017 10:38 AM

These price rules have put me in a bit of a conundrum... I was able to get one to work with text/number fields, but it does not appear to be working.


I have tried a few different approaches in attempts to get this to work, but I have not been successful yet. Below are my attempts.

  1. Using the Picklist fields' API Names, set the Filter Type to Value and input the value for each Condition
  2. Set the Filter Type to Formula and input =ISPICKVAL(*Field*, Value) for each one. Shortly after testing, I realized my foolish mistake in that it would return TRUE or FALSE to match to the Field, which would not work.
  3. Created Formula fields to capture the values, set Field to the API Names of formula fields, set Filter Type to Value, and input the value for each Condition.

After much testing and research, I'm not quite sure what I'm missing, or what I'm doing wrong. Any input would be great! Thanks in advance.

by GMlynarczyk
on ‎04-12-2017 02:14 PM

@lvoelz2 Seems the On Initialization option is missing from the available Calculator Evaluation Events (#5 under Price Rule Creation)...?

by Community Manager
on ‎04-12-2017 02:29 PM

@GMlynarczyk Thanks - updated.

by dgriffiths
on ‎05-19-2017 10:09 AM

Can related objects be referenced in Price Action formulas? We are at our limits with related object references for SFDC formula fields and need to make some changes after implementing the advanced calculator (workflow rules and processes that are no longer valid/supported). 

by GMlynarczyk
on ‎05-19-2017 10:14 AM

You can. There are certain guidelines you should follow to ensure your cross-object price action formulas are compatible with the advanced calculator, which are detailed here:

by dgriffiths
on ‎05-19-2017 10:17 AM

Thanks Greg. Is there any special syntax needed when referencing related objects in a price action formula? (brackets , etc)

by GMlynarczyk
on ‎05-19-2017 10:20 AM

No - same syntax as you would use in a regular Salesforce formula field.

by dgriffiths
on ‎05-19-2017 11:45 AM

Are there some examples available for setting up these formulas? Which fields need to be filled in and which should be left blank? I need to reference the Renewed Subscription relationship from the quote line (for both the condition and action) and all my attempts are failing so far.

by Neha_Gupta
on ‎05-22-2017 03:47 AM

Is there any way of finding out which pricing rules have met criteria for a particular quote line?

by KRothstein
on ‎07-31-2017 07:15 PM

I have a price rule that I am trying to use to check a box when the Net Total is less than the Min Price.  But no matter what I try it always checks the box.  Any ideas on where I am going wrong here?


Price Rule Name
Set Approval Field on Quote Line- Net Tot Below Min
Evaluation Scope
Evaluation Order
Conditions Met
Calculator Evaluation Event
On Initialization; Before Calculate; On Calculate; After Calculate
  Configurator Evaluation Event


Condition #
Price Rule  
Quote Line
Tested Variable
Tested Formula
Hide Section - Filter InformationFilter Information
less or equals
Filter Type
Filter Value
Filter Variable
Filter Formula



Action #
Target Object
Quote Line
Target Field














by ob
on ‎09-28-2017 02:53 PM

How do I set up a price condition to test whether a given Quote field is blank?


I have a price rule that injects a value to a quote line quantity, but in the best practices article we are advised to ensure that the value passed is never null (since Quantity is a required field on quote lines). So I want to prevent my rule from firing if the source field is null.


I've tried:

Field = source field; Operator = not equals; Filter Type = Value; Filter Value left blank

Field = source field; Operator = not equals; Filter Type = Value; Filter Value = NULL


Tested formula = ISBLANK(sourcefield); Operator = not equals; Filter Type = Formula; Filter Formula = TRUE

Tested formula = ISBLANK(sourcefield); Operator = not equals; Filter Type = Formula; Filter Formula = 1=1


None of these prevent the rule from firing when the source field is blank.

on ‎09-28-2017 02:58 PM

@ob - try using the Filter Value = True, and the last approach using a Tested Formula leverage the ISBLANK(sourcefield) & not equals. 

by ob
on ‎09-28-2017 03:06 PM

@DanHansen I jut tried that - my rule still fires when the source field is blank. (Also tried not equals and False for good measure)

by ob
on ‎09-28-2017 03:22 PM

I also tried setting the Price Action formula to BLANKVALUE(sourceField,SBQQ__Quantity__c) but it still set quantity to 1 for some reason. Better than an error due to null quantity, but still not success. 

by Community Manager
4 weeks ago

topic closed.