Conga Product Documentation

Welcome to the new doc site. Some of your old bookmarks will no longer work. Please use the search bar to find your desired topic.

SPO Callout Payload with Dimensions and Overrides

Administrators can configure the SPO (Smart Price Optimization) callout request payload to send Dimensions and Overrides as separate arrays — either at the shared (quote-header) level or at the batch item (line-item) level. This optimized payload structure reduces overall request size, which helps address Salesforce message size limitations.

Key concepts
TermDescription
Shared fieldsDimensions and overrides that apply across all batch items in the request. These typically represent quote header-level information or data that does not vary by line item. A callout includes only a single set of shared keys and overrides.
Batch item fieldsLine-level dimensions and overrides. You can include up to 100 individual entries, each with its own set of keys and overrides.
DimensionA field used as a lookup key when requesting recommended pricing from SPO.
OverrideA field whose value is sent to SPO to override a default pricing parameter.

Configuration process

Step 1: Set the POM Endpoint URI

In POM System Properties, configure the POM Endpoint URI field with the API path for the pricing method in use for your org. Enter the full path after the base URL.

Example: /api/method/name/<Price method name>/values/batch

Step 2: Configure SPOMFieldNamesConfig

The SPOMFieldNamesConfig custom setting specifies which line item and related fields are passed during the POM callout. This is where you define Dimensions and Overrides and separate them into Shared and Batch Item categories
  • Shared fields: Common across all lines in a callout.
  • LIne item / Batch item fields: Specific to each individual line item.
JSON structure: Enter a valid JSON object in the Field Names field. The JSON has two top-level keys:
  • sharedFields: Contains dimension and override arrays for quote-level fields.
  • lineItemFields: Contains dimension and override arrays for line-item-level fields.
Sample configuration:
{
  "sharedFields": {
    "dimension": [
      "AccountName",
      "Region"
    ],
    "override": [
      "ApprovalStatus",
      "Origin",
      "Destination"
    ]
  },
  "lineItemFields": {
    "dimension": [
      "ProductCode",
      "Account"
    ],
    "override": [
      "UnitPrice",
      "Quantity",
      "TimeOfDay",
      "UOM",
      "SalesAgencyType",
      "LoadFactor",
      "PassengerType"
    ]
  }
}
Splitting Configuration Across Multiple Records: The Field Names field has a 255-character limit. If your JSON exceeds this limit, split it across multiple records following these rules:
  • Separate sharedFields and lineItemFields into individual records.
  • If either section still exceeds 255 characters, split it further.
  • Each record must contain a valid, independently parseable JSON object.
Example — Record 1 (Shared Fields):
{
  "sharedFields": {
    "dimension": [
      "AccountName",
      "Region"
    ],
    "override": [
      "ApprovalStatus",
      "Origin",
      "Destination"
    ]
  }
}
Example — Record 2 (Line Item Fields):
{
  "lineItemFields": {
    "dimension": [
      "ProductCode",
      "Account"
    ],
    "override": [
      "UnitPrice",
      "Quantity",
      "TimeOfDay",
      "UOM",
      "SalesAgencyType",
      "LoadFactor",
      "PassengerType"
    ]
  }
}
How It Works: Once configured, CPQ calls the SPO API with the defined parameters to retrieve recommended pricing. The request payload is structured as follows:
  • The shared array sends a single set of dimensions and overrides that apply to the entire quote.
  • The batchItems array sends up to 100 line-item entries, each with its own dimensions and overrides.
This separation avoids duplicating quote-level data across every line item, significantly reducing the overall payload size.