Salesforce CPQ is end-of-sale. See what a native migration path looks like Migrate from Salesforce CPQ
Pricing engine

Pricing logic is data, not a black box

Every pricing behavior in Cadence — waterfall rules, volume tiers, percent-of-total fees, table-driven price books, multi-year ramps — is a record an admin can read, report on, and change without touching any code.

Install the classic waterfall in one click, then edit it like records

Install Standard Waterfall seeds the CPQ waterfall you already know — special price, volume tier discount, additional discount by amount or percent, proration, total, and write back to UnitPrice — as plain, editable rule data.

Nothing is hidden behind the button. What it creates is what you'd have created by hand, and from there you change it like any other records. The Pricing Setup Editor lays the configuration out in the order the engine actually runs it, so reading the screen tells you what happens to a price and when.

IMAGE PLACEHOLDER — Pricing Setup Editor showing the rule sequence in engine run order.

The configuration objects

Seven building blocks. All of them records.

Building blockWhat it does
Pricing methodThe container, assigned per quote. Sets proration granularity, an optional context flow, and a trace toggle. One org can run different methods per business unit or quote type.
Rules and actionsOrdered rules with formula conditions; each action writes a formula result to any Quote or QuoteLineItem field. Stages run Initial, Post Calculate, Final. An only-if-blank flag makes defaults that survive recalculation and user edits.
RollupsQuote-level aggregations — sum, count, min, max of a per-line formula with an optional filter. Pre-Initial rollups run first, so rules can gate on counts and quantities.
Derived pricesPercent-of-total pricing: price one line from the totals of other lines, like a management fee at 20% of subscription ARR. Order-independent by construction; loops are impossible.
Discount schedulesVolume discount tables — range, where the whole quantity gets the matched tier, or slab, which is graduated. Attach to a product; lines inherit unless overridden.
LookupsTable-driven pricing against any object: tier plus product to list price, volume bands, contracted price tables. Range operators turn two keys into a band, and one matched row can populate several line fields — in exactly one query regardless of line count.
Ramp schedulesMulti-year definitions: period, default uplift, stub-period alignment, and segment templates with duration, free periods, and per-segment uplift.

All formulas use real Salesforce formula syntax evaluated in quote-line context. Everything validates and compiles before any data is written — a bad formula fails the run cleanly, rolls everything back, and the failure is logged.

IMAGE PLACEHOLDER — Explain Price / line trace panel on a quote line.

Every run leaves a record

Each calculation writes a context record with status, error message, and the context JSON that was injected. Turn tracing on and you get a step-by-step log of every stage, rule, and write. Failed runs roll back all quote changes but keep the log.

Per line, Explain Price shows how that number was reached — which rules fired, which lookups matched, what each step changed.

You monitor CPQ health with the tools you already have: a report on failed calculation runs, a flow subscribed to the recalculation platform event, a dashboard on asset-action volume. The same runs and logs are readable from Flow and from an AI agent, so triage doesn't have to start in Setup.

For contrast: Salesforce CPQ price rules have no native logging — the common workaround is building audit-field hacks and extending the calculator with JavaScript stored in a text field.

Prove your change was safe

01

Set up

Build the quotes that represent your important pricing scenarios and verify the numbers.

02

Mark baselines

From the dashboard, a quote quick action, Flow, or REST. Cadence snapshots the expected values, and which fields count is a field set you tune in Setup.

03

Change, then Run All

Every baseline is recalculated with the real engine, diffed field by field, and rolled back. A regression run never changes quote data.

Results are ordinary records: which field, on which line, expected versus actual — plus lines the new config added or removed and any calculation errors. Intentional change? Refresh the baseline and the new numbers become the expected ones.

Extending it without code

Flow is a first-class citizen

A pricing method can name an autolaunched flow that returns arbitrary JSON, and the engine substitutes it into pricing formulas. That's declarative access to anything Flow can reach — external data via callouts, related records, custom logic — without touching the engine.

Field sets gate the automation

Recalculation fires when fields that matter change, and which fields matter is a field set you edit in Setup. Add your custom field and it becomes a recalc trigger. No code change either way.

Author it from Flow or an agent

Pricing rules, actions, and rollups can be saved through invocable actions with the same validation the editor applies, and calculation runs and logs can be read the same way. A governed admin agent can propose a rule, write it, and prove it with the regression suite — as a user who holds the admin permission set, and no one else.

What the engine will and won't do

Pricing runs on the Salesforce platform inside normal governor limits. Interactive calculation is synchronous and constrained; trigger-driven recalculation runs asynchronously with more headroom. In our published benchmarks a medium configuration prices roughly 2,000 lines interactively and around 12,000 lines asynchronously, scaling linearly — with ramp expansion counted in the line total.

We publish the full cost model, the measured per-line costs, and the configuration shapes that hit each ceiling. Treat the numbers as planning guides, not contracts — org load and other automation share the same governors.

Read the performance and limits docBook a demo