ServiceNow CPQ fields, system fields, and partner fields

  • Release version: Zurich
  • Updated October 8, 2025
  • 3 minutes to read
  • Summarize
    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 ServiceNow CPQ Fields, System Fields, and Partner Fields

    This guide covers the types of fields available in ServiceNow CPQ: ServiceNow CPQ fields, system fields, and partner fields. Each type of field plays a crucial role in storing, retrieving, and displaying data, facilitating integration with Salesforce and partner systems.

    Show full answer Show less

    Key Features

    • ServiceNow CPQ Fields: Custom user-defined fields that can be of various types, such as number, text, or picklist. Users can set default values or use determination actions for value assignment.
    • System Fields: Predefined fields that automatically generate values using the SFDC product cache. They cannot be assigned default values and can be added directly to layouts.
    • Partner Fields: Initialized via a POST call to the API and leverage partner data to generate values. They require null checks to avoid initialization errors and cannot be directly added to layouts.

    Key Outcomes

    Understanding these field types enables ServiceNow customers to effectively configure their CPQ environment. This knowledge helps ensure seamless data integration with Salesforce, enhances user experience in the configurator, and supports efficient data handling in pricing conditions.

    Learn about the three types of fields in ServiceNow CPQServiceNow CPQ, system fields, and partner fields. Understand how each type stores, retrieves, and displays data in configurations, and how they interact with Salesforce and partner systems for seamless data integration.

    There are three categories of fields in the ServiceNow CPQ environment: ServiceNow CPQ fields, system fields, and partner fields.

    ServiceNow CPQ fields

    A ServiceNow CPQ field is a user-defined field that is custom to the ServiceNow CPQ environment. Its type can be number, text, picklist, set, or product picker. When users create fields in CPQ, they can manually assign default values in the field definition, or they can set values through determination actions.

    The following example shows how a user would set a ServiceNow CPQ field in an On Configure/Reconfigure enrichment:

    cfgRequest.testField.set("value", "Hello World"); 

    For a more complete description of ServiceNow CPQ fields, see Configure fields.

    Note:
    In organizations that do not use Salesforce for their launch-point into ServiceNow CPQ, all fields must be initialized in their API call.

    System fields

    System fields

    System fields are predefined. System fields cannot be assigned a default value because they leverage the SFDC product cache (or the current date and time) to generate their values.

    The following example shows how a user would call a system field in an On Configure/Reconfigure enrichment:

    let pC = {"input2":cfgRequest.sys.productCode.value};

    System fields can be added directly to any layout. There are no issues with displaying them regardless of whether they contain predefined data.

    In the layout editor:

    Layout editor

    In the Configurator UI:

    Layout editor screen

    Unit of Measure is blank because in this example, it has not been defined in SFDC.

    The mapping of each of these system fields to their respective SFDC object is as follows. The field API name is in parentheses.

    • sys.productUOM > Product: Quantity Unit Of Measure (QuantityUnitOfMeasure)
    • sys.productName > Product: Product Name (Name)
    • sys.productFamily > Product: Product Family (Family)
    • sys.productDescription > Product: Product Description (Description)
    • sys.productCode > Product: Product Code (ProductCode)
    • sys.enableValidation: value defaults to true
    • sys.currentDate: Simple time API call, returns date of UTC
    • sys.actionContext > Quote Line: Action Context (LGK ActionContext c)
    • sys.productPrice > Price Book Entry: List Price (UnitPrice)
    • sys.productId: value depends on Admin Settings

      sys.productId changes to whatever is defined in your ServiceNow CPQ environment settings. For instance, if the Product Id field was set to Product Code, the resulting data would be Product Code, making it identical to the sys.productCode field.

    Product code

    If the Product Id field was instead set to Partner Id, the data would be pulled from the SFDC field Product2 Id (ID as the field API name):

    System fields screen

    Partner fields

    Partner fields

    Partner fields are fields that use a POST call to initialize a configuration via API. Partner fields leverage the partnerʼs data set to generate field values.

    The mapping of each of these partner fields to their respective SFDC object is as follows. The field API name is in parentheses.

    • partner.quote.id Quote > Record ID (Id)
    • partner.quote.lineId Quote Line > Record ID (Id)
    • partner.quote.pricebookId Quote > Pricebook ID (SBQQPricebookIdc)
    • partner.quote.currencyIsoCode Quote > CurrencyIsoCode

      partner.quote.currencyIsoCode defaults to USD if your organization does not have multi-currency enabled in their Salesforce Org. To enable multi-currency, follow the steps in this Salesforce article: Enable Multiple Currencies.

    When using these fields, it’s important to note that some of the data may not have any value (null) when the product is first configured. To make sure that there are no initialization errors, include null checks in any rules or scripts that utilize partner fields.

    These fields cannot be directly added to a layout like system fields can. Instead, you can use ServiceNow CPQ fields to populate the data in partner fields via an initialization enrichment.

    The following example initialization enrichment populates the values of the partner fields into the configurator:

    let quoteId = cfgRequest.partner.quote.id.value;
    let lineID = cfgRequest.partner.quote.lineId.value;
    let currencyISO = cfgRequest.partner.quote.currencyIsoCode.value;
    let priceBookID = cfgRequest.partner.quote.pricebookId.value;
    
    if (quoteId != null) {
    	cfgRequest.quoteIDTest.set("value", quoteId);
    }
    if (lineID != null) {
    	cfgRequest.lineIDTest.set("value", lineID);
    }
    if (currencyISO != null) {
    	cfgRequest.currencyISOCodeTest.set("value", currencyISO);
    }
    if (priceBookID != null) {
    	cfgRequest.pricebookIDTest.set("value", priceBookID);
    }
    return cfgRequest;

    Initial configuration:

    Initial configuration screen.

    Reconfiguration:

    Partner fields

    Line ID is now populated.

    How you use partner and system fields is up to you. Some organizations find it helpful to display this information in the configurator to the end user, while others use it in the background in rules to drive pricing conditions.