Pricing Bands

Overview

Pricing Bands are used to set up more dynamic pricing elements for Services and Parts. The list of bands are indexed by the quantity to determine the effective price for a given line. In both cases, the quantity entered for the line is used to find the right band to determine the unit price for that quantity.

On Part or Service may have several pricing bands, so keep the below consideration in mind...

If you are using Pricing Bands, than a User cannot simply adjust pricing by bulk updating the Unit Price field. They will have to go into each Part or Service individually and make adjustments to all the pricing bands that exist. 


Settings and Navigation

Either navigate to Control Panel > Services or Control Panel > Parts/Add-Ons then click Edit next to the service or part. You can also Add new. 


Ranges

Each pricing band has a range made up of a minimum value called At Least and an optional maximum called Less Than. To find the right pricing band, the quantity is compared to each band and the one where the value is greater than or equal to the At Least value and less than the Less Than value.

For example, if you have two pricing bands set up like below, a value of 50 will match the first band and produce a unit price of $50. A value of 150 will match the second band producing a unit price of $40. A value of 100 will also match the second band because the second band has an At Least of 100. In general, you will want to make sure the Less Than value of the lower band matches the At Least value of the next band.

If no pricing band is found, the default unit price for the part is used (and multiplied by the quantity).


Ignore Quantity

The Ignore Quantity option is used to create range-based pricing scenarios.

For example, if you have a home cleaning business, you might set your pricing based on the square footage of the house. You could set the first band to be at least 0 and less than 1500 for a price of $199.

The next band could be 1500 to 2500 for $329. For each band, check the Ignore Quantity box. That way the actual price will be returned based on the quantity, instead of first multiplying it by the quantity.


Formulas

Formulas are a great way to introduce even more flexibility into your pricing bands. Each pricing band may optionally include a formula. For pricing bands that include a formula, the Price value is still required -- this value will be used in case there is a syntax or math error in the formula.


Formulas are based on JavaScript math expressions. You may use any supported JavaScript function in your expressions. Formulas take their parameters in the form of shortcodes. The following shortcodes are supported:

  • {quantity} - This is the quantity value entered for the line
  • {stops}  - The stops shortcode is available only for Subscription services that also have pro-rating enabled

Remember that if you update anything about a part, you will have a banner at the bottom of the page giving you the option to update proposal templates that include that part. You will mostly likely want to do so to keep all records cohesive.

Click here for a short webinar on Formulas! 



Examples of Formulas

Here's a few examples of formulas you can use:

* 100 + 50

{stops - 1} * 85 + 35

Each band can have a separate formula. You can also use pricing bands as straight lookups for most quantities and then use a formula for the last band (e.g, for the "everything over quantity x" case). For subscription services, you can use formulas to implement non-linear pro-rating scenarios.

You can also reference custom contact or organization fields in formulas. The format is {contact.cust_xxxx} which will be the name shown on the details page for the custom field.


Complex Examples

Custom fields with integers or decimals can be used to help calculate your formula. This example multiples the quantity by a set number, then adds an additional number that's 50 times the number entered into the covered porches custom field.

({quantity} * .14 + ( {contact.cust_numberofcoveredporches} * 50 ))

Using conditional formulas, you can base your pricing on the values of custom fields. In this example, if the house is brick then the quantity will multiply by .2, but if it isn't, it multiplies by 0. It also looks to see if the answer to "How many stories is the house?" is 3, in which place it adds 75.

({quantity} * .14 + (( {contact.cust_isthehousebrick} == 'Yes' ? {quantity} * 0.2 : 0 ) + ( {contact.cust_howmanystoriesisthehouse} == 3 ? 75 : 0 ))

Troubleshooting

For long formulas, we recommend adding one step at a time so it's easier to tell if part of it isn't working. Common causes are incorrect syntax (like parentheses or single quotes) or the formula isn't reading a value as a number. When in doubt, add more parentheses.

There are some additional Math methods you can add to help solve that, like below, or round in formulas to give a cleaner output. Most JavaScript math functions can be used in your formula.

(Number('{organization.cust_minperapp}'))

 Math.round(('{quantity}'/'{organization.cust_fsfpermanhr}'*'{organization.cust_flabor}'+'{organization.cust_fmaterialcost}'*'{quantity}'/1000))

Importing Pricing Bands

Pricing bands may be imported when importing parts by including a JSON-encoded column called "Pricing Bands" or "PricingBands." The format of this column is an array of pricing band objects, shown below:

[{
  "AtLeast": 0,
  "LessThan": 100,
  "Rate": 55.34
  "Formula": null,
  "Duration": 10,
  "Demand": 5.5,
  "IgnoreQuantity": true,
  "OverageMode": false
}]