Pricing Waterfall: do List Price ao Net Price
Cada degrau do preço vive em um campo próprio da Quote Line — os estágios do waterfall no CPQ e como o Revenue Cloud os reconstrói em Pricing Procedures.
Se o Price Book dá o preço inicial, o Pricing Waterfall mostra como ele desce degrau a degrau até o Net Price. Neste terceiro post da série, percorro os estágios oficiais do CPQ, os campos reais da Quote Line e o que muda com as Pricing Procedures do Revenue Cloud.
Do List Price ao Net Price
Se o Price Book dá o preço inicial, o Pricing Waterfall mostra como esse preço muda passo a passo até o valor final que o cliente paga. Cada degrau derruba um pouco o preço — daí o nome "cascata".
O ponto-chave: o Salesforce guarda cada etapa em um campo separado da Quote Line, para que você veja a trajetória completa do preço, não só o resultado. Mais adiante você verá o nome real de cada campo.
A intuição: comprando uma jaqueta
Imagine que você vai comprar uma jaqueta. A etiqueta diz R$ 5.000. A loja está com 10% de promoção. E, por ser cliente fiel, você ganha mais 10% de desconto. Quanto você paga?
| Etapa | Cálculo | Valor |
|---|---|---|
| List Price | — | R$ 5.000 |
| Desconto promo (−10%) | × 0,90 | R$ 4.500 |
| Desconto fidelidade (−10%) | × 0,90 | R$ 4.050 |
| Net Price | — | R$ 4.050 |
Repare que dois descontos de 10% não somam 20%: o segundo incide sobre o valor já reduzido. Essa ordem é exatamente o que o waterfall formaliza.
Os estágios oficiais do CPQ
No Salesforce CPQ, o waterfall tem estágios nomeados, aplicados nesta ordem. Cada um parte do preço do degrau anterior e subtrai um tipo específico de desconto:
| # | Estágio | O que aplica |
|---|---|---|
| 1 | List Price | Vem do Price Book Entry (preço de lista do produto) |
| 2 | Special Price | Substitui o List Price quando há um preço especial (ver Special Price Type) |
| 3 | Regular Price | − Quantity / Term Discount (discount schedules) |
| 4 | Customer Price | − Desconto do cliente, manual e adicional |
| 5 | Partner Price | − Partner Discount |
| 6 | Distributor Price | − Distributor Discount |
| 7 | Net Price | Preço final unitário, após todos os descontos |
O nome real de cada campo na Quote Line
Cada degrau é persistido num campo próprio do objeto Quote Line (SBQQ__QuoteLine__c), no namespace SBQQ__ do CPQ. Por isso você consegue auditar o preço inteiro, etapa por etapa, direto no registro.
- List Price (List Unit Price) —
SBQQ__ListPrice__c: vem do Price Book Entry, salvo houver Special Price. - Special Price —
SBQQ__SpecialPrice__c: substitui o List Price; controlado pelo campo companheiro Special Price Type. - Regular Price (Regular Unit Price) —
SBQQ__RegularPrice__c: preço unitário antes do desconto adicional. - Customer Price (Customer Unit Price) —
SBQQ__CustomerPrice__c: preço unitário líquido, excluindo descontos de canal (partner/distributor). - Partner Price (Partner Unit Price) —
SBQQ__PartnerPrice__c: preço após Partner Discount, antes do Distributor Discount. - Net Price (Net Unit Price) —
SBQQ__NetPrice__c: preço unitário final, após todos os descontos. - Net Total —
SBQQ__NetTotal__c: total da linha = Net Price × quantidade.
Os descontos de canal moram em campos próprios: SBQQ__PartnerDiscount__c e SBQQ__DistributorDiscount__c. No padrão, o Distributor Discount é descontado do Partner Price para chegar direto ao Net Price — por isso não há um campo "Distributor Price" separado: ele é um degrau conceitual.
⚠️ Partner e Distributor só valem em canal indireto. Os estágios Partner Price e Distributor Price só atuam quando há venda por canal (revenda/distribuidor) com Partner ou Distributor Discount preenchidos. Na venda direta, sem esses descontos, esses degraus são pass-through: o Customer Price passa direto para o Net Price.
Special Price Type: de onde vem o Special Price
O Special Price (estágio 2) não é um valor solto — ele é definido pelo campo companheiro Special Price Type (SBQQ__SpecialPriceType__c), que armazena o tipo de preço especial da linha (nulo = sem preço especial). Os valores que importam hoje:
- Contract — usa o preço negociado/contratado registrado para a conta (Contracted Price).
- Renewal — preço de renovação: o CPQ define este tipo automaticamente quando há um Contracted Price no produto que está sendo renovado.
- Custom — preço definido manualmente ou por price rule. Sempre que uma price rule altera o Special Price, ela precisa setar o Special Price Type como Custom, senão a regra não tem efeito.
O valor Renewal é usado em cotações de renovação: quando a conta já tem um Contracted Price no produto renovado, o CPQ mapeia esse preço para o Special Price e marca o tipo como Renewal (rótulo do picklist: Renewal Price). Segue funcional — o que está em transição é o pacote CPQ como um todo, sucedido pelo Revenue Cloud.
Exemplo numérico completo (B2B)
Produto: Lunchbox, 120 unidades, com três descontos em cascata (quantidade 20%, cliente 10%, parceiro 15%). Veja como o preço unitário desce a cada degrau:
| Estágio | Cálculo | Preço unit. |
|---|---|---|
| List Price | — | $15,00 |
| Regular Price | $15 − 20% | $12,00 |
| Customer Price | $12 − 10% | $10,80 |
| Partner Price | $10,80 − 15% | $9,18 |
| Net Price | preço final | $9,18 |
| Net Total | $9,18 × 120 | $1.101,60 |
⚡ Atualização Agentforce 2026
No Revenue Cloud, a precificação agora é construída em Pricing Procedures (Expression Sets): você arrasta elementos como blocos de Lego, cada um sendo um degrau do waterfall. Além disso:
- Com o Price Waterfall habilitado, o Salesforce persiste os logs do processo de precificação (cada degrau por linha). Você recupera esse waterfall pelo recurso REST Pricing Waterfall (GET) da Pricing API — a chamada devolve a Pricing Waterfall Response, etapa por etapa.
- O botão Simulate no Pricing Procedure Builder mostra o waterfall em tempo real, sem criar dados.
➜ Trailhead: Price Management with Revenue Cloud