---
sourceDocument: Australia Sales Customer Relationship Management
sourceDocumentLink: https://www.servicenow.com/docs/r/australia/order-management

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia Sales Customer Relationship Management

ft:clusterId :

    - omgmt

bundleId :

    - omgmt

workflow :

    - Customer and Industry


---

# The Picklist Extension Pricing enrichment

# The Picklist Extension Pricing enrichment {#ariaid-title1}

Release version: Australia  
Updated March 12, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 minutes to read
Summarize  
![AI sparkle icon](https://servicenow.com/docs/portal-asset/ai-sparkle-icon) Summarized using AI  
This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.  

## Summary of The Picklist Extension Pricing enrichment

The Picklist Extension Pricing enrichment enables ServiceNow CPQ customers to dynamically adjust pricing of picklist field options based on location or other configurable factors.
This capability allows prices in designated picklist extension fields to be tailored, for example, by ZIP code or specific multipliers, enhancing pricing flexibility and accuracy in quotes.
Show full answer Show less  

## Prerequisites and Setup

* Submit a support case via the ServiceNow Support portal to enable the enrichment, including your use case.
* Ensure picklist extension fields have the "Enable for enrichment" toggle activated to be affected by this feature.
* The enrichments tab will become visible within the blueprint configuration in the ServiceNow CPQ Admin interface.

## How It Works

The enrichment uses scripting to iterate through picklist options (pleRequest array), fetch relevant pricing data (often from lookup tables based on ZIP codes), and apply calculated prices dynamically. For example:

* Prices for energy sources can be retrieved from a pricing table filtered by ZIP code and energy type.
* Multipliers can be applied to components and accessories linked to the selected energy source.
* Pricing adjustments support multiple use cases like ZIP code-dependent pricing, discounts, multipliers, and independent component pricing.

## Key Elements of pleRequest

* **fieldVariableName:** Variable name identifying the picklist field.
* **optionValue:** Specific picklist option values.
* **productId:** Product identifier relevant to the pricing extension.
* **price:** The price value that the enrichment sets dynamically.

These elements enable precise reference and modification of pricing within the enrichment script.

## Benefits for ServiceNow Customers

* Flexible pricing models that respond to geographic or business-specific criteria.
* Improved accuracy and relevance of product pricing in quotes.
* Support for complex pricing scenarios including multipliers and conditional discounts.
* Easy integration through scripting and configuration within the CPQ blueprint.

## Additional Resources

Customers can leverage the ServiceNow CPQ scripting language reference to build or customize enrichment scripts tailored to their pricing strategies.  
Use the Picklist Extension Pricing enrichment to adjust pricing according to location or other factors.

The Picklist Extension Pricing enrichment can be used to dynamically change the pricing of Field Options in designated picklist extension fields.

## Prerequisites {#picklist-extension-pricing-scripts__section_klw_wkm_dhc}

Submit a support case requesting the enrichment be enabled for your environment. Please provide a use case for using the enrichment. To submit a support case, use the [ServiceNow Support portal](https://support.servicenow.com). For step-by-step instructions, see [Create a case on Now Support for CPQ Customers](https://support.servicenow.com/kb?sys_kb_id=d67d3e71475d7a90f64de825126d4326&id=kb_article_view).

Picklist extension fields need to have the "Enable for enrichment" toggle turned on to be affected by the enrichment.


The enrichments tab will be shown when navigating to a blueprint in the ServiceNow CPQ Admin.


Watch this demonstration of the Picklist Extension Pricing enrichment in action.


[PLE enrichment Script Demo](https://www.youtube.com/watch?v=deoQkQaPnX8)

## Demonstration script {#picklist-extension-pricing-scripts__section_rfl_3lm_dhc}

The following script was used in the demonstration video.

    let sourcesArr = [];
    let componentArr = [];
    let accessoryArr = [];

    pleRequest.forEach(o => {
        if(o.fieldVariableName == "alternateEnergySources") {
            sourcesArr.push(o.optionValue);
            //o.price = "1000";
        }
        if(o.fieldVariableName == "alternateEnergyComponents") {
            componentArr.push(o.optionValue);
            //o.price = "900";
        }
        if(o.fieldVariableName == "alternateEnergyAccessory") {
            accessoryArr.push(o.optionValue);
            //o.price = "800";
        }
    });

    var sourceMap = new Map();
    if(sourcesArr != null && sourcesArr.length != 0) {
        var sourceRows = lookup("Select Energy, BasePrice from AlternateEnergyPricing where Zip = :zip and Energy IN (:value)", { "zip": cfg.zipCode, "value": sourcesArr });
        for (var row of sourceRows) {
            sourceMap.set(row.get("Energy"), row.get("BasePrice"));
        }
    } else {    //source PLE not part of request. So populate this map for other PLEs 
        console.log("Entered non PLE in request case");
        sourcesArr = ["Solar", "Wind", "Nuclear"];
        var sourceRows = lookup("Select Energy, BasePrice from AlternateEnergyPricing where Zip = :zip and Energy IN (:value)", { "zip": cfg.zipCode, "value": sourcesArr });
        for (var row of sourceRows) {
            sourceMap.set(row.get("Energy"), row.get("BasePrice")); 
        }
        console.log(sourcesArr);
        console.log(sourceMap);
    }

    var multiplierMap = new Map();
    if(cfg.alternateEnergySources != "") {
        var multiplierRows = lookup("Select Group, Factor from AlternateEnergyMultiplier where Zip = :zip and Energy = :energyVal", { "zip": cfg.zipCode, "energyVal": cfg.alternateEnergySources });
        for (var row of multiplierRows) {
            multiplierMap.set(row.get("Group"), row.get("Factor"));
        }
    }
    let sourcePrice = sourceMap.get(cfg.alternateEnergySources);
    if(sourcePrice != null) {
            pleRequest.forEach(o => {
            if(o.fieldVariableName == "alternateEnergySources") {
                o.price = sourceMap.get(o.optionValue);
            }
            if(o.fieldVariableName == "alternateEnergyComponents") {
                let compPrice = multiplierMap.get("Component");
                if(compPrice != null) {
                    o.price = sourcePrice*compPrice;
                }
            }
            if(o.fieldVariableName == "alternateEnergyAccessory") {
                let multA = multiplierMap.get("Accessory");
                if(multA != null) {
                    o.price = sourcePrice*multA;
                }
            }
        });
    }

    console.log(sourcesArr);
    console.log(componentArr);
    console.log(accessoryArr);
    console.log(sourceMap);
    console.log(multiplierMap);

    return pleRequest;

## Sample design, use cases, and pleRequest elements {#picklist-extension-pricing-scripts__section_qdv_xlm_dhc}

Sample enrichment script design:

1. Loop through picklist options and store them for reference later (pleRequest.forEach())
2. Get prices for options and store them (either via table lookup or in the function itself)
3. Set the price for the right option (pleRequest.forEach())

{#picklist-extension-pricing-scripts__ol_txf_bmm_dhc}

Use cases:

* ZIP code dependent pricing
* Price multipliers and discounts
* Delta pricing
* Independent component pricing subtraction

{#picklist-extension-pricing-scripts__ul_chb_2mm_dhc}

pleRequest elements:

* pleRequest.fieldVariableName: variable name of the picklist field
* pleRequest.optionValue: picklist options defined in the field
* pleRequest.productId: ID of the product in the PLE mapping
* pleRequest.price: price to be set in the extension

{#picklist-extension-pricing-scripts__ul_ih1_hmm_dhc}

Referencing elements in the `pleRequest` object is similar to referencing objects such as `ProductList`, `cfg`, and `cfgRequest`. If a variable is substituted into
`pleRequest` (either in a `for` loop or using the `forEach` function), the element is still referenced after the variable, followed by a period.
**Related reference**   

* [ServiceNow CPQ scripting language reference](https://www.servicenow.com/docs/oe31WnKg~IDVUFHcczalIQ "View the operators, objects, and keywords that ServiceNow CPQ supports, together with information about type conversion, type checking, alternative scripts for unsupported operations, and accessing object properties.")

