NetSuite CPQ

This release note was updated March 9, 2026.

NetSuite 2026.1 includes the following enhancements to NetSuite CPQ (Configure, Price, Quote):

NetSuite CPQ AI Assistant

Important:

For this initial release, the NetSuite CPQ AI Assistant is available only in non-production accounts, including sandbox and release preview accounts.

NetSuite CPQ Configurator (version 1.8.0) introduces the CPQ AI Assistant, a generative AI-driven tool that simplifies and enhances the product and service configuration process. Using a large language model (LLM), the assistant guides sales reps and buyers through complex product configurations by responding to natural language prompts. When a user selects a configurable item in a transaction, a Configure with CPQ Assistant button appears in the bottom-right corner. Selecting this button launches the AI Assistant, opening a guided chat to collect configuration details and provide real-time recommendations. Through this interaction, the assistant clarifies options and helps users of all experience levels complete even complex configurations efficiently.

Users with the Administrator role or CPQ Product Builder role prepare product, question, and answer records for the AI Assistant on the CPQ AI Assistant subtab, found on each related record. This subtab allows administrators to review readiness, create or improve AI descriptions, ensure records meet quality standards, and control where and when end users see the AI Assistant.

For more information, see NetSuite CPQ AI Assistant.

Convert Multiple Transaction Line Items into Configured Items in a Single Session

The NetSuite CPQ Ecommerce Integration (version 1.2.1) introduces improvements to convert multiple line items into configured items in a single session. To make multiple configuration submissions for the same product in a single session, you no longer have to organize the product logic into a single action and use recalcRulesets() to refresh building blocks. With the restart parameter for the submitConfig() function, you can submit a configuration to the transaction and, then, restart the processing flow from the first before-event action, refresh building blocks, and run after-event actions-instead of continuing to the next action. By letting you keep the product logic divided into multiple actions, this enhancement simplifies code writing and maintenance. With the product parameter, you can also dynamically switch between products for different transaction lines during a single session. Restarting the conversion process with a different product during the same session improves performance for large transactions by minimizing the NetSuite CPQ Ecommerce Integration script launches and transaction saves.

See an example of the restart and product parameters for the submitConfig() function:

            submitConfig({
    afterSubmitAction: 'new',
    restart: true,
    product: 13
}); 

          
Note:

If you call submitConfig() with restart set to true, any actions after that action won't run. If you need all actions to run, make sure you apply the function on the last action of the queue.

The restartConfig() function has also been introduced to restart the conversion process into configured items for a new transaction line from the beginning of the processing flow without submitting any configurations. This function is useful when you need to prepare the transaction data for processing. By specifying a different product ID when calling restartConfig(), you can switch between products for different transaction lines. You can apply restartConfig() when using a dedicated product that analyzes the transaction lines, prepares the list of conversion tasks, and delegates the conversion process and the submission to transaction to other products. By setting the copy parameter to true, the configuration choices will be carried to the next conversion task. This parameter is false by default, and you can omit it if you want to start with a blank configuration.

See an example of the restartConfig() function:

            restartConfig({
    product: 13,
    copy: false
}); 

          
Note:

If you use restartConfig() without parameters, the conversion process will be restarted using the same product and with a blank configuration.

For more information, see submitConfig() and restartConfig(). To learn how to optimize actions for the conversion process into configured items using these functions, see Converting Transaction Line Items into Configured Items with a Single Scheduled Script Call.

Arrange PDF Files in Business Documents

Business documents for your configurable items can be created in PDF format. You can now arrange the main PDF file and all additional PDF files in your preferred order with Proposal Generator (version 1.2.5). To control the position of the main PDF in the final document, use the new PDF Sequence field on the template record. By assigning a positive or negative sequence number to the template, you can place the main PDF file before, between, or after the additional PDF files.

When creating the final document, PDF files are arranged from the lowest to the highest sequence number. If an additional PDF file has a sequence number lower than the main PDF file, it will be placed before the main PDF file. If the additional PDF file has a sequence number higher than the main PDF file, it will appear after the main PDF file. For example, if you set the main PDF file's sequence number to 0, you can assign -1 to the PDF you want to appear before the main PDF file, and 1 to the PDF you want to appear after.

Previously, only additional PDF files had sequence numbers and they were appended to the main PDF file. If you leave the PDF Sequence field blank, additional PDF files continue to be appended to the main PDF file and maintain their current order in business documents generated from existing templates. For more information, see Creating Document Templates and Including PDF Files in Documents.

Search for Sublist Line Fields With Dynamic Tables

When searching for sublist line fields, dynamic tables return only one search result for each record, even if multiple sublist entries exist. For example, if you search for an item's vendors, you'll get only one search result, even if the item is associated with multiple vendors.

To address this, you can use the option Show all sublist results. When this box is checked, the search query returns multiple search results-one for each sublist entry. For example, if an item is associated with five vendors, you'll obtain five search results-one for each vendor for the same item.

Note:

The Show all sublist results option only applies to search queries involving sublist line fields. Search queries using body fields remain unaffected.

Dynamic table supports search queries for a limited number of sublists line fields. With the Search using SuiteQL option, you can run search queries using SuiteQL-NetSuite SQL-based query language-instead of the standard search module. For more information see, SuiteQL. Use this new option to:

  • Expand the search to any sublist line field.

  • Retrieve all sublist results.

When specifying sublist line fields in the Record Fields or Search Filter fields on the table record, make sure you use the SuiteQL dot notation- sublistID.sublistFieldID-instead of the sublist field ID alone. For example, use itemvendor.purchaseprice to search for the Purchase Price field on the item record's Vendors sublist using SuiteQL.

You can use the Show all sublist results and Search using SuiteQL options when creating dynamic table records in NetSuite CPQ Configurator (version 1.9.1). For more information, see Creating Dynamic Tables.

Organize Table Data by Sublist Using Scripts

When loading dynamic and function-generated tables using scripts, you can now obtain data organized by sublist. To achieve this in NetSuite CPQ Configurator (version 1.9.1), you can set the new sublist parameter for getTable().loadContent() to true. This parameter is false by default, and you can omit it if you don't need it. To improve table loading performance in new implementations, use this solution instead of getData() with the loadapi parameter set to true. See the syntax:

            let table = await getTable('TABLE_CODE').loadContent({
    sublists: true
}); 

          

This is an example of the function output in the console:

Table data organized by sublist for the getTable().loadContent() function with sublist parameter set to true.

Include Prices when Adding Materials Using Scripts

When adding materials to the configuration using scripts, you can now automatically create the associated pricing records for the current configuration session in NetSuite CPQ Configurator (version 1.9.1). To create and link a pricing record to the material, set the itemPrice parameter to true in the addRuleset() function. See the following example:

            addRuleset({
    type: 'material',
    item: '859',
    rule: '*/*',
    itemPrice: true
}); 

          
Note:

The itemPrice parameter is available only when type is material.

The material price label will be sourced from the name parameter of the material. See the example:

            addRuleset({
    type: 'material',
    item: '859',
    name: 'Desk side panel',
    rule: '*/*',
    itemPrice: true
}); 

          

If name is omitted, the Display Name/Code field from the item record is used. If Display Name/Code is blank, the material price will have no label. However, the amount will still be displayed on the product interface.

On the product interface, the material price will be displayed under Audit menu > Pricing and in the Summary. It will also be included in the Total for the configured item.

Launch the Configurable Items Page from Third-party Websites

The Configurable Items page shows all your active products. Users can now access the Configurable Items page from third-party websites with NetSuite CPQ Configurator (version 1.9.1). To integrate this page into your website, first check the Launch products from SuiteCommerce box on the options record. Only products marked as Available on SuiteCommerce on the product record will be displayed on the external Configurable Items page.

Next, create the link for your third-party website. To create the link, use the External Link of the CPQC-ST-SCA-Wrapper script deployment and append the &cmd=selector string. For more information, see Launching the Configurable Items Page from Third-party Websites.

Arrange Materials on the Work Order and Audit Menu

When adding stand-alone materials to work orders, you can now arrange them in your preferred order. To achieve this, use the new Sequence Number field on the material record in NetSuite CPQ Configurator (version 1.9.1). Materials assigned to routing steps continue to be sorted based on the operation sequence. If you leave the Sequence Number field blank, the assigned sequence number is 0.

Materials will also be sorted based on their own sequence number under the Audit menu > Materials option on the product interface. For more information, see Defining Materials for the Configurable Item.

Add Labels to Additional Item Prices in the Summary

Additional item prices can be included in the Summary by enabling the Show additional item prices in Summary option on the product record. You can now add a label to be displayed in the Summary for the additional item price. To add the label, enter text in the Label field on the additional item record in NetSuite CPQ Configurator (version 1.9.1). If you don't provide a label, the Name will continue to be displayed in the Summary.

Note:

You can use resolve expressions to source the label from answers users select on the product interface. For more information, see Obtaining Answer Data with Resolve Expressions.

For more information, see Including Additional Items Related to the Configurable Item.

Resolve Layout Differences Between Document Formats

When creating business documents, you can use various formats-DOCX, PDF, and browser preview-and define their look and feel using custom CSS styles. To address layout differences between document formats, two predefined CSS class selectors have been introduced in NetSuite CPQ Proposal Generator (version 1.2.4):

  • .html - Defines specific styles for the browser preview.

  • .pdf - Defines specific styles for PDF files.

Note:

The corresponding html and pdf classes are automatically assigned to the template <body> element; no setup is required.

You can continue to control the styling of DOCX files using general CSS styles, and use the .pdf and .html class selectors to override any general styles. Styles without these class selectors will be applied to all document formats. Use these new class selectors in the Custom Styles field on the template record. For more information, see Creating Document Templates.

Type the Date and Time Based on the Predefined Format

Users can now type the date and time in the product interface based on the predefined format of your choice. Formatted date and time typing is available when users answer these question types:

Note:

The date and time format is sourced from the answer record associated with the date and time field.

To let users type the date and time while enforcing the correct format, go to the answer records for these question types in NetSuite CPQ Configurator (version 1.9.0). Then, check the Enable date mask box.

In the date and time field, users will be able to enter only allowed characters. Fixed characters-such as slashes and hyphens-will be automatically completed as they type. Using the left and right arrow keys, they can move between the date and time elements. With up and down arrow keys, they can increase or decrease the date and time values.

Note:

Users will still be able to select the date and time using the calendar and time selector.

Set and Retrieve Date and Time Field Values Using Scripts

The setFormattedValue() and getParsedValue() functions have been introduced to simplify setting and retrieving date and time field values when using scripts in NetSuite CPQ Configurator (version 1.9.0).

The setFormattedValue() function converts the JavaScript Date object into the string format expected by the answer record before setting the value. See the syntax below:

            setFormattedValue('QUESTION_CODE', 'ANSWER_CODE', new Date()); 

          

Conversely, the getParsedValue() function returns the field's value as a JavaScript Date object.

            getParsedValue('QUESTION_CODE', 'ANSWER_CODE'); 

          

Both functions are available for client-side and server-side actions. If used with other field types, these functions behave like setValue() and getValue(), respectively. For more information, see List of Functions.

Unlock the QTable Header Row and Lock Key Columns While Scrolling

You can now unlock the header and keep key columns in view while comparing and entering data in large qTables. Two new options have been added for these purposes in NetSuite CPQ Configurator (1.9.0):

  • Unfreeze top row - When enabled, the qTable's header will no longer remain fixed at the top of the table and will move out of view as users scroll down past the visible rows. You can find this checkbox under the QTable tab on the question record.

    Note:

    A maximum number of visible rows must be set in the Maximum Visible Rows field on the same subtab.

  • Freeze column - When enabled for specific columns, they will remain visible and pinned to the left side of the qTable when users scroll horizontally to the right. You can find this checkbox under the QTable Cells tab on the answer record.

For more information, see QTable Questions.

Manufacturing Improvements to the Item Creation Record

You can automatically create or update assemblies with advanced BOMs using item creation records. When creating or updating an assembly, you can now define a master default BOM or add a new BOM with a unique name. Two options have been introduced for these purposes:

  • Master Default - Sets the BOM as the master default for the assembly.

  • Add as a new BOM - Updates the assembly by adding a new BOM.

    Note:

    The new BOM name must be unique. If the name isn't unique, an existing BOM will be overwritten.

To use these options in NetSuite CPQ Configurator (version 1.8.3), go to the BOM subtab on the item creation record. For more information, see Working with Assemblies on Item Creation Records.

General Notices