Home / Price-Volume-Mix Analysis

Price-volume-mix analysis: how to explain why revenue changed

Price-volume-mix (PVM) analysis explains why revenue changed by splitting the total variance into three effects: price, volume and mix. The price effect isolates changes in selling price, the volume effect isolates changes in units sold, and the mix effect captures shifts in the blend of products or channels. The three always reconcile to the total revenue change—turning "revenue moved 8%" into a causal story a CFO can act on.

What is the price-volume-mix formula?

For a single product, the standard decomposition is:

Price effect = (New price − Old price) × New volume
Volume effect = (New volume − Old volume) × Old price
Mix effect = shift in product/channel blend at constant rate
Total revenue change = Price + Volume + Mix

In a multi-product or multi-channel business, the mix effect matters most: selling the same total units but shifting toward a lower-margin channel (say, from DTC to wholesale) can drop revenue even when price and volume look flat.

A worked example

Suppose revenue fell from $1.00M to $0.94M (−$60K). A PVM decomposition might reveal:

The chart only showed a 6% dip. PVM shows the real story: price actually helped; the miss was volume and an unfavorable channel mix. That is the difference between "what changed" and "why."

Why is PVM analysis usually so painful?

Done by hand, PVM means exporting data per SKU and channel, building bridge charts in Excel, and rechecking formulas every time a new product or marketplace is added. It's fragile and slow—exactly the work that breaks during SKU and channel launches.

How BaseFour automates price-volume-mix analysis

BaseFour connects directly to your source systems (NetSuite, Shopify, Stripe, QuickBooks) and computes price, volume and mix effects across channel, product and period on every refresh—then writes the causal narrative for your board deck automatically. It's especially valuable for multi-channel e-commerce and CPG finance teams where mix shifts drive most of the surprise.

See it on your data