CSM: retention and expansion
Renewals and expansion at different rates, with a clawback if the account churns quickly.
Worked example
A $200,000 renewal pays $6,000, reversed if the customer churns within 120 days.
The plan definition
This is the plan exactly as the product would create it. Rates are decimal strings rather than numbers throughout, because binary floating point cannot represent most of them exactly and a commission rate is not a place to discover that.
id: csm-retention
version: 1
effective_from: 2026-01-01
period: quarterly
currency: USD
components:
- id: renewal
label: Renewals
applies_to: 'allocation.deal.deal_type == "renewal"'
basis: allocation.amount
rate:
type: flat
rate: "0.03"
- id: expansion
label: Expansion
applies_to: 'allocation.deal.deal_type == "expansion"'
basis: allocation.amount
rate:
type: flat
rate: "0.07"
adjustments:
- id: churn_clawback
type: clawback
trigger: 'deal.churned_on != null and days_between(deal.closed_on, deal.churned_on) <= 120'
amount: original_commission
window: rolling_12
Starting from this template gives you an editable copy, it is not locked, and the editor validates as you type.