{"metrics":[{"name":"MRR (Monthly Recurring Revenue)","slug":"mrr-monthly-recurring-revenue","definition":"The total predictable revenue from active subscriptions, normalized to a monthly value.","formulas":["MRR = Sum of (Monthly subscription value for all active customers)","MRR contribution = Annual Contract Value / 12"],"benchmarks":null,"insight":"The current run rate of your recurring revenue engine.","commonMistakes":["Including one-time fees (setup, professional services)","Including usage/consumption revenue that isn't guaranteed","Double-counting customers during plan changes","Not normalizing annual contracts to monthly","Treating MRR as an accounting figure"],"sources":["Baremetrics: MRR Definition: https://baremetrics.com/academy/saas-calculate-mrr","Maxio: Monthly Recurring Revenue Defined: https://www.maxio.com/saaspedia/monthly-recurring-revenue-defined-for-a-saas-business","ChurnZero: Monthly Recurring Revenue: https://churnzero.com/churnopedia/monthly-recurring-revenue-mrr/"],"department":"Core","category":"Revenue Metrics","aliases":["MRR"],"rawMarkdown":"### MRR (Monthly Recurring Revenue)\n\n**Definition:** The total predictable revenue from active subscriptions, normalized to a monthly value.\n\n**Formula:**\n```\nMRR = Sum of (Monthly subscription value for all active customers)\n```\n\nFor annual contracts:\n```\nMRR contribution = Annual Contract Value / 12\n```\n\n**Include:**\n- Recurring subscription fees\n- Expansion and upgrade revenue\n- Discounts (use discounted amount, not list price)\n\n**Exclude:**\n- One-time fees (setup, implementation, professional services)\n- Trial accounts and free users\n- Variable/usage-based fees (unless contractually guaranteed)\n- Non-recurring charges\n\n**Inputs:**\n- Active customer list\n- Subscription/contract value for each customer\n- Contract term (monthly/annual)\n\n**What it tells you:** The current run rate of your recurring revenue engine.\n\n**Important:** MRR is a business insights metric, not a GAAP/FASB accounting term. It is representative of, but not identical to, recognized revenue.\n\n**Common mistakes:**\n- Including one-time fees (setup, professional services)\n- Including usage/consumption revenue that isn't guaranteed\n- Double-counting customers during plan changes\n- Not normalizing annual contracts to monthly\n- Treating MRR as an accounting figure\n\n**Related metrics:** ARR, MRR Growth Rate, New MRR, Expansion MRR, Churned MRR\n\n**Sources:**\n- [Baremetrics: MRR Definition](https://baremetrics.com/academy/saas-calculate-mrr)\n- [Maxio: Monthly Recurring Revenue Defined](https://www.maxio.com/saaspedia/monthly-recurring-revenue-defined-for-a-saas-business)\n- [ChurnZero: Monthly Recurring Revenue](https://churnzero.com/churnopedia/monthly-recurring-revenue-mrr/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"ARR (Annual Recurring Revenue)","slug":"arr-annual-recurring-revenue","definition":"The annualized value of recurring revenue. ARR represents the yearly run rate of subscription revenue.","formulas":["ARR = MRR × 12","ARR-O = MRR × 12","ARR-M = MRR × 12","ARR-M = ARR-O + Pricing_Adjustment_MRR × 12 + Recontracting_MRR × 12"],"benchmarks":null,"insight":"The scale of the business on an annual basis. Used for valuation, planning and investor reporting.","commonMistakes":["Calculating from annual contracts directly without normalizing (leads to timing mismatches)","Treating ARR as cash (it's a run rate, not collected revenue)","Mixing definitions without declaring which one you're using"],"sources":["SaaS Metrics Standards Board: ARR: https://www.saasmetricsboard.com/annual-recurring-revenue","ChartMogul: ARR Definition: https://chartmogul.com/saas-metrics/arr/","Maxio: Annual Recurring Revenue: https://www.maxio.com/saaspedia/arr"],"department":"Core","category":"Revenue Metrics","aliases":["ARR"],"rawMarkdown":"### ARR (Annual Recurring Revenue)\n\n**Definition:** The annualized value of recurring revenue. ARR represents the yearly run rate of subscription revenue.\n\n**Note:** ARR is used to mean two things in the industry:\n1. **Annualized Run Rate** = MRR × 12 (common for monthly-billing companies)\n2. **Annual Recurring Revenue** = Sum of annualized contract values (common for annual-contract companies)\n\nBoth are valid. The GASP Standard uses **MRR × 12** for consistency across business models.\n\n**Formula:**\n```\nARR = MRR × 12\n```\n\n**Include:** Same inclusions/exclusions as MRR, annualized.\n\n**What it tells you:** The scale of the business on an annual basis. Used for valuation, planning and investor reporting.\n\n**Common mistakes:**\n- Calculating from annual contracts directly without normalizing (leads to timing mismatches)\n- Treating ARR as cash (it's a run rate, not collected revenue)\n- Mixing definitions without declaring which one you're using\n\n**Sources:**\n- [SaaS Metrics Standards Board: ARR](https://www.saasmetricsboard.com/annual-recurring-revenue)\n- [ChartMogul: ARR Definition](https://chartmogul.com/saas-metrics/arr/)\n- [Maxio: Annual Recurring Revenue](https://www.maxio.com/saaspedia/arr)\n\n#### Operating Form: ARR-O\n\nARR-O measures organic recurring revenue by excluding MRR changes that come from mechanical pricing or contract restructuring rather than genuine customer expansion.\n\n**CEL Source:** `Revenue_Event`, `Amendment_Event`\n**ATL Inclusion:** All `expansion_classification` values **except** `Pricing_Adjustment` and `Recontracting`\n\n**Formula:**\n```\nARR-O = MRR × 12\n```\nWhere MRR excludes changes tagged with `expansion_classification` ∈ (`Pricing_Adjustment`, `Recontracting`).\n\n**What it tells you:** The run rate of revenue driven by real customer adoption and organic expansion. The durable portion of ARR.\n\n#### Market Form: ARR-M\n\nARR-M is total reported ARR including all sources of recurring revenue change. This is the number investors see and public comparables use.\n\n**CEL Source:** `Revenue_Event`, `Amendment_Event`\n**ATL Inclusion:** All `expansion_classification` values included\n\n**Formula:**\n```\nARR-M = MRR × 12\n```\nAll MRR sources included.\n\n**What it tells you:** The scale of the business as reported to the market. The number used in valuation multiples and investor benchmarks.\n\n#### Bridge: ARR-O ↔ ARR-M\n\n**Reconciliation:**\n```\nARR-M = ARR-O + Pricing_Adjustment_MRR × 12 + Recontracting_MRR × 12\n```\n\n**Diagnostic:** The delta (ARR-M − ARR-O) is the **Durability Gap.** How much of reported ARR growth comes from mechanical pricing and contract changes rather than organic customer expansion. A growing gap signals ARR growth that may not be durable. Tracked implicitly by KeyBanc in their annual SaaS survey. Public SaaS companies report total ARR (ARR-M) while internal planning teams strip pricing actions to assess true product-led growth.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":{"operating":{"label":"ARR-O","description":"ARR-O measures organic recurring revenue by excluding MRR changes that come from mechanical pricing or contract restructuring rather than genuine customer expansion.","celSource":"`Revenue_Event`, `Amendment_Event`","atlInclusion":"All `expansion_classification` values **except** `Pricing_Adjustment` and `Recontracting`","formula":"ARR-O = MRR × 12","insight":"The run rate of revenue driven by real customer adoption and organic expansion. The durable portion of ARR."},"market":{"label":"ARR-M","description":"ARR-M is total reported ARR including all sources of recurring revenue change. This is the number investors see and public comparables use.","celSource":"`Revenue_Event`, `Amendment_Event`","atlInclusion":"All `expansion_classification` values included","formula":"ARR-M = MRR × 12","insight":"The scale of the business as reported to the market. The number used in valuation multiples and investor benchmarks."},"bridge":{"reconciliation":"ARR-M = ARR-O + Pricing_Adjustment_MRR × 12 + Recontracting_MRR × 12","diagnostic":"The delta (ARR-M − ARR-O) is the **Durability Gap.** How much of reported ARR growth comes from mechanical pricing and contract changes rather than organic customer expansion. A growing gap signals ARR growth that may not be durable. Tracked implicitly by KeyBanc in their annual SaaS survey. Public SaaS companies report total ARR (ARR-M) while internal planning teams strip pricing actions to assess true product-led growth.\n\n---"}},"dualLensNote":null},{"name":"ARPA (Average Revenue Per Account)","slug":"arpa-average-revenue-per-account","definition":"Average monthly recurring revenue per customer.","formulas":["ARPA = MRR / Active Customers"],"benchmarks":null,"insight":"The average value of a customer on a monthly basis. Used in LTV and CAC Payback calculations.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":["ARPA"],"rawMarkdown":"### ARPA (Average Revenue Per Account)\n\n**Definition:** Average monthly recurring revenue per customer.\n\n**Formula:**\n```\nARPA = MRR / Active Customers\n```\n\n**What it tells you:** The average value of a customer on a monthly basis. Used in LTV and CAC Payback calculations.\n\n**Note:** Some companies use ARPU (Average Revenue Per User) for user-based pricing. ARPA is account-level; ARPU is user-level.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"MRR Growth Rate","slug":"mrr-growth-rate","definition":"The month-over-month percentage change in MRR.","formulas":["MRR Growth Rate = (MRR this month - MRR last month) / MRR last month × 100"],"benchmarks":"- Early stage (pre-$1M ARR): 15-20% MoM\n- Growth stage ($1M-$10M ARR): 5-10% MoM\n- Scale stage ($10M+ ARR): 2-5% MoM","insight":"The velocity of revenue growth.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":["MRR"],"rawMarkdown":"### MRR Growth Rate\n\n**Definition:** The month-over-month percentage change in MRR.\n\n**Formula:**\n```\nMRR Growth Rate = (MRR this month - MRR last month) / MRR last month × 100\n```\n\n**Benchmarks:**\n- Early stage (pre-$1M ARR): 15-20% MoM\n- Growth stage ($1M-$10M ARR): 5-10% MoM\n- Scale stage ($10M+ ARR): 2-5% MoM\n\n**What it tells you:** The velocity of revenue growth.\n\n**Sources:** [Baremetrics](https://baremetrics.com/academy/saas-calculate-mrr), [Chargebee](https://www.chargebee.com/resources/glossaries/what-is-net-mrr-growth/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"New MRR","slug":"new-mrr","definition":"MRR generated from brand new customers acquired in the period.","formulas":["New MRR = Sum of (first month MRR from customers acquired this period)"],"benchmarks":null,"insight":"The output of your acquisition engine.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### New MRR\n\n**Definition:** MRR generated from brand new customers acquired in the period.\n\n**Formula:**\n```\nNew MRR = Sum of (first month MRR from customers acquired this period)\n```\n\n**Example:** 5 new customers × $60/month plan = $300 New MRR\n\n**What it tells you:** The output of your acquisition engine.\n\n**Sources:** [Drivetrain](https://www.drivetrain.ai/strategic-finance-glossary/mrr-in-saas), [SaaS Academy](https://www.saasacademy.com/blog/what-is-mrr)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Expansion MRR","slug":"expansion-mrr","definition":"Additional MRR from existing customers through upgrades, add-ons, seat increases or price increases.","formulas":["Expansion MRR = Sum of (MRR increase from existing customers this period)"],"benchmarks":null,"insight":"Your ability to grow revenue without acquiring new customers. The most efficient growth.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Expansion MRR\n\n**Definition:** Additional MRR from existing customers through upgrades, add-ons, seat increases or price increases.\n\n**Formula:**\n```\nExpansion MRR = Sum of (MRR increase from existing customers this period)\n```\n\n**Includes:** Upsells, cross-sells, add-ons, seat expansion, plan upgrades\n\n**What it tells you:** Your ability to grow revenue without acquiring new customers. The most efficient growth.\n\n**Key insight:** Expansion MRR rate should exceed churn rate for negative net churn.\n\n**Sources:** [Wall Street Prep](https://www.wallstreetprep.com/knowledge/expansion-revenue-mrr/), [Drivetrain](https://www.drivetrain.ai/strategic-finance-glossary/mrr-in-saas)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Churned MRR","slug":"churned-mrr","definition":"MRR lost from customers who cancelled their subscriptions.","formulas":["Churned MRR = Sum of (MRR from customers who churned this period)"],"benchmarks":null,"insight":"The leakage in your revenue bucket from customer attrition.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Churned MRR\n\n**Definition:** MRR lost from customers who cancelled their subscriptions.\n\n**Formula:**\n```\nChurned MRR = Sum of (MRR from customers who churned this period)\n```\n\n**What it tells you:** The leakage in your revenue bucket from customer attrition.\n\n**Sources:** [Drivetrain](https://www.drivetrain.ai/strategic-finance-glossary/mrr-in-saas), [Baremetrics](https://baremetrics.com/academy/saas-calculate-mrr)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Contraction MRR","slug":"contraction-mrr","definition":"MRR reduction from existing customers who downgraded but didn't churn.","formulas":["Contraction MRR = Sum of (MRR decrease from existing customers who remain active)"],"benchmarks":null,"insight":"Revenue pressure from customers reducing usage/commitment.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Contraction MRR\n\n**Definition:** MRR reduction from existing customers who downgraded but didn't churn.\n\n**Formula:**\n```\nContraction MRR = Sum of (MRR decrease from existing customers who remain active)\n```\n\n**Includes:** Plan downgrades, removed seats, dropped add-ons\n\n**What it tells you:** Revenue pressure from customers reducing usage/commitment.\n\n**Sources:** [Drivetrain](https://www.drivetrain.ai/strategic-finance-glossary/mrr-in-saas), [SaaS Academy](https://www.saasacademy.com/blog/what-is-mrr)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Carry MRR","slug":"carry-mrr","definition":"MRR from existing customers that renewed at the same amount. No expansion, contraction or churn.","formulas":["Carry MRR = Beginning MRR - Churned MRR - Contraction MRR"],"benchmarks":null,"insight":"The stable foundation of your revenue. High carry relative to beginning MRR means your base is healthy. Carry MRR expressed as a percentage of Beginning MRR equals GRR.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Carry MRR\n\n**Definition:** MRR from existing customers that renewed at the same amount. No expansion, contraction or churn.\n\n**Formula:**\n```\nCarry MRR = Beginning MRR - Churned MRR - Contraction MRR\n```\n\n**Also known as:** Base MRR, Retained MRR, Renewal MRR\n\n**What it tells you:** The stable foundation of your revenue. High carry relative to beginning MRR means your base is healthy. Carry MRR expressed as a percentage of Beginning MRR equals GRR.\n\n**Key insight:** Carry MRR is GRR in dollar terms. If carry is declining while expansion masks it, you have a retention problem hiding behind growth.\n\n**Sources:** [Baremetrics](https://baremetrics.com/academy/saas-calculate-mrr), [ChartMogul](https://chartmogul.com/blog/mrr-movements/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Net New MRR","slug":"net-new-mrr","definition":"The net change in MRR after accounting for all movements.","formulas":["Net New MRR = New MRR + Expansion MRR - Churned MRR - Contraction MRR"],"benchmarks":null,"insight":"The bottom line of your revenue engine's performance. Positive = growing. Negative = shrinking.","commonMistakes":null,"sources":[],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Net New MRR\n\n**Definition:** The net change in MRR after accounting for all movements.\n\n**Formula:**\n```\nNet New MRR = New MRR + Expansion MRR - Churned MRR - Contraction MRR\n```\n\n**Example:**\n$50,000 starting + $2,500 new + $5,000 expansion - $1,000 churned - $500 contraction = $56,000 ending\n\n**What it tells you:** The bottom line of your revenue engine's performance. Positive = growing. Negative = shrinking.\n\n**Sources:** [Baremetrics](https://baremetrics.com/academy/saas-calculate-mrr), [Chargebee](https://www.chargebee.com/resources/glossaries/what-is-net-mrr-growth/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bundle Pricing and MRR Allocation","slug":"bundle-pricing-and-mrr-allocation","definition":"When a subscription is sold as a bundle (a single SKU containing multiple products, features or services at one price), individual line items within the bundle have no explicit price. MRR must still be allocated to each component for accurate reporting of expansion, contraction and churn at the item level.","formulas":["Item MRR = (Item SSP / Sum of all item SSPs) × Bundle Price"],"benchmarks":null,"insight":null,"commonMistakes":["Allocating equally across items regardless of value","Using cost as a proxy for value (low-cost items may have high customer value)","Not updating SSPs when standalone pricing changes","Treating the entire bundle as a single unit (hides component-level movements)"],"sources":["Stripe: Standalone Selling Prices: https://docs.stripe.com/revenue-recognition/standalone-selling-price","Chargebee: Standalone Selling Price: https://www.chargebee.com/docs/revrec/revenue-recognition/standalone-selling-price","Zuora: Fair Value / SSP in Multiple-Element Arrangements: https://www.zuora.com/resource/fair-value-standalone-selling-price-multiple-element-arrangements-revpro/","Maxio: SaaS Revenue Recognition and ASC 606: https://www.maxio.com/blog/saas-revenue-recognition-asc-606"],"department":"Core","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Bundle Pricing and MRR Allocation\n\n**Definition:** When a subscription is sold as a bundle (a single SKU containing multiple products, features or services at one price), individual line items within the bundle have no explicit price. MRR must still be allocated to each component for accurate reporting of expansion, contraction and churn at the item level.\n\n**The problem:** A customer pays $500/month for a \"Growth Bundle\" containing CRM, Analytics and Support. If they later remove Analytics, what was Analytics worth? Without allocation, you can't measure contraction MRR or product-level revenue.\n\n**Industry standard method: Relative Standalone Selling Price (SSP)**\n\nThis is the method prescribed by ASC 606 / IFRS 15 for revenue recognition and used by Stripe, Zuora and Chargebee for bundle allocation:\n\n```\nItem MRR = (Item SSP / Sum of all item SSPs) × Bundle Price\n```\n\n**Steps:**\n1. **Determine standalone selling price (SSP)** for each item. The price you would charge if the item were sold individually\n2. **Calculate the allocation ratio.** Each item's SSP as a percentage of the total SSPs\n3. **Apply the ratio to the bundle price.** This gives each item its allocated MRR\n\n**Example:**\n\n| Item | Standalone Price | Allocation % | Allocated MRR |\n|------|-----------------|--------------|---------------|\n| CRM | $300/mo | 50% | $250 |\n| Analytics | $200/mo | 33% | $167 |\n| Support | $100/mo | 17% | $83 |\n| **Total SSP** | **$600/mo** | **100%** | **$500** |\n\nThe bundle discount ($100) is distributed proportionally across all items.\n\n**When SSP is not observable:** If an item has never been sold individually, ASC 606 provides three estimation methods:\n- **Adjusted market assessment.** Estimate what the market would pay\n- **Expected cost plus margin.** Cost to deliver + target margin\n- **Residual approach.** Allocate known SSPs first, remainder to the unknown item (use only when SSP is highly variable or uncertain)\n\n**What this enables:**\n- Accurate contraction/expansion MRR when bundle components change\n- Product-level revenue attribution\n- Meaningful churn analysis per product line\n- Consistent reporting between finance (ASC 606) and operations (MRR)\n\n**Common mistakes:**\n- Allocating equally across items regardless of value\n- Using cost as a proxy for value (low-cost items may have high customer value)\n- Not updating SSPs when standalone pricing changes\n- Treating the entire bundle as a single unit (hides component-level movements)\n\n**Note:** MRR allocation for operational reporting should align with your ASC 606 / IFRS 15 revenue allocation where possible. Divergence between operational MRR and recognised revenue creates reconciliation problems.\n\n**Sources:**\n- [Stripe: Standalone Selling Prices](https://docs.stripe.com/revenue-recognition/standalone-selling-price)\n- [Chargebee: Standalone Selling Price](https://www.chargebee.com/docs/revrec/revenue-recognition/standalone-selling-price)\n- [Zuora: Fair Value / SSP in Multiple-Element Arrangements](https://www.zuora.com/resource/fair-value-standalone-selling-price-multiple-element-arrangements-revpro/)\n- [Maxio: SaaS Revenue Recognition and ASC 606](https://www.maxio.com/blog/saas-revenue-recognition-asc-606)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Net Revenue Retention (NRR)","slug":"net-revenue-retention-nrr","definition":"The percentage of revenue retained from existing customers over a period, including expansion, contraction and churn. Also known as Net Dollar Retention (NDR).","formulas":["NRR = MRR of cohort today / MRR of same cohort 12 months ago × 100","NRR = (Beginning MRR + Expansion MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100","NRR-O = MRR of cohort today (organic only) / MRR of same cohort 12 months ago × 100","NRR-M = (Beginning MRR + All Expansion MRR − Contraction MRR − Churned MRR) / Beginning MRR × 100","NRR-M ≈ NRR-O + Reactivation + Cross-Module + New Buying Centre + Pricing Adjustment + Recontracting expansion"],"benchmarks":"- Below 90%: Leaky bucket. Growth requires constant new acquisition.\n- 90-100%: Stable. You keep what you have.\n- 100-110%: Good. Existing customers grow. (Median for VC-backed SaaS: 101-106%)\n- 110-120%: Great. Strong expansion motion.\n- 120%+: Exceptional. Top quartile performance.","insight":"Can you grow without adding new customers? NRR is a critical indicator of SaaS sustainability because it measures whether your existing customer base is expanding or contracting. High NRR reduces dependence on new customer acquisition for growth.","commonMistakes":["Calculating over inconsistent time periods","Including new customer revenue (that's not NRR)","Excluding small customers or segments","Confusing with Gross Revenue Retention (GRR)"],"sources":["SaaS Metrics Standards Board: NRR: https://www.saasmetricsboard.com/net-revenue-retention","Wall Street Prep: Net Revenue Retention: https://www.wallstreetprep.com/knowledge/net-revenue-retention-nrr/","ChurnZero: Net Revenue Retention: https://churnzero.com/churnopedia/net-revenue-retention/"],"department":"Core","category":"Retention Metrics","aliases":["NRR","NDR"],"rawMarkdown":"### Net Revenue Retention (NRR)\n\n**Definition:** The percentage of revenue retained from existing customers over a period, including expansion, contraction and churn. Also known as Net Dollar Retention (NDR).\n\n**Calculation Methods:**\n\nTwo methods are widely used. The **cohort method is preferred** for accuracy.\n\n**1. Cohort Method (Preferred):**\nCompare the MRR of a specific group of customers from one year ago to the MRR of those same customers today. New customers acquired during the period are excluded.\n\n```\nNRR = MRR of cohort today / MRR of same cohort 12 months ago × 100\n```\n\n**2. Formula Method:**\n```\nNRR = (Beginning MRR + Expansion MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100\n```\n\n**Time period:** Typically measured annually. The GASP Standard recommends **trailing 12 months** for board/investor reporting, as it smooths seasonality.\n\n**Annualization:** If calculating over a shorter period, annualize by raising to the appropriate power:\n- Monthly NRR annualized: `(Monthly NRR / 100) ^ 12 × 100`\n- Quarterly NRR annualized: `(Quarterly NRR / 100) ^ 4 × 100`\n\n**Does NOT include:** New customer revenue. NRR measures existing customer behavior only.\n\n**Benchmarks (per KeyBanc 2024, SaaS Capital 2025):**\n- Below 90%: Leaky bucket. Growth requires constant new acquisition.\n- 90-100%: Stable. You keep what you have.\n- 100-110%: Good. Existing customers grow. (Median for VC-backed SaaS: 101-106%)\n- 110-120%: Great. Strong expansion motion.\n- 120%+: Exceptional. Top quartile performance.\n\n**Segment-specific benchmarks (per SaaS Capital 2025):**\n- SMB-focused: 90-105% typical\n- Mid-market: 105-115% typical\n- Enterprise: 115-125% typical\n\n**What it tells you:** Can you grow without adding new customers? NRR is a critical indicator of SaaS sustainability because it measures whether your existing customer base is expanding or contracting. High NRR reduces dependence on new customer acquisition for growth.\n\n**Common mistakes:**\n- Calculating over inconsistent time periods\n- Including new customer revenue (that's not NRR)\n- Excluding small customers or segments\n- Confusing with Gross Revenue Retention (GRR)\n\n**Sources:**\n- [SaaS Metrics Standards Board: NRR](https://www.saasmetricsboard.com/net-revenue-retention)\n- [Wall Street Prep: Net Revenue Retention](https://www.wallstreetprep.com/knowledge/net-revenue-retention-nrr/)\n- [ChurnZero: Net Revenue Retention](https://churnzero.com/churnopedia/net-revenue-retention/)\n\n#### Operating Form: Cohort NRR (NRR-O)\n\nNRR-O uses the cohort method and includes only organic expansion. Growth from the same product and usage realisation. It excludes expansion from new modules, new buying centres, reactivation and pricing actions.\n\n**CEL Source:** `Revenue_Event`\n**ATL Inclusion:**\n- `lifecycle_attribution` ∈ (`Retention`, `Expansion`)\n- `expansion_classification` ∈ (`Same_Product`, `Usage_Realisation`)\n- Excludes: `expansion_classification` ∈ (`New_Module`, `New_Buying_Centre`, `Pricing_Adjustment`, `Recontracting`) and `lifecycle_attribution` = `Reactivation`\n\n**Formula:**\n```\nNRR-O = MRR of cohort today (organic only) / MRR of same cohort 12 months ago × 100\n```\n\n**What it tells you:** True product-market fit signal. Are customers expanding because the product delivers more value, independent of commercial motion?\n\n#### Market Form: Account NRR (NRR-M)\n\nNRR-M uses the account-level formula method and includes all expansion types. Only net-new logo acquisition is excluded. This matches what public SaaS companies report and what investors benchmark.\n\n**CEL Source:** `Revenue_Event`\n**ATL Inclusion:**\n- All `expansion_classification` values included\n- Only `lifecycle_attribution` = `Acquisition` excluded\n\n**Formula:**\n```\nNRR-M = (Beginning MRR + All Expansion MRR − Contraction MRR − Churned MRR) / Beginning MRR × 100\n```\n\n**What it tells you:** The total revenue retention and expansion picture that investors use for benchmarking and valuation.\n\n#### Bridge: NRR-O ↔ NRR-M\n\n**Reconciliation:**\n```\nNRR-M ≈ NRR-O + Reactivation + Cross-Module + New Buying Centre + Pricing Adjustment + Recontracting expansion\n```\n(Expressed as percentage-point contributions to the NRR rate.)\n\n**Diagnostic:** The delta (NRR-M − NRR-O) is the **Expansion Integrity Gap.** How much of reported NRR comes from commercial motion (cross-sell, reactivation, pricing) versus organic product expansion. A wide gap means NRR depends on sales execution rather than product-led growth. Not inherently bad, but the board should know which engine drives retention. SaaS Metrics Standards Board recommends the cohort method. Public SaaS companies report account-level NRR (NRR-M).\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":{"operating":{"label":"Cohort NRR (NRR-O)","description":"NRR-O uses the cohort method and includes only organic expansion. Growth from the same product and usage realisation. It excludes expansion from new modules, new buying centres, reactivation and pricing actions.","celSource":"`Revenue_Event`","atlInclusion":"- `lifecycle_attribution` ∈ (`Retention`, `Expansion`)\n- `expansion_classification` ∈ (`Same_Product`, `Usage_Realisation`)\n- Excludes: `expansion_classification` ∈ (`New_Module`, `New_Buying_Centre`, `Pricing_Adjustment`, `Recontracting`) and `lifecycle_attribution` = `Reactivation`","formula":"NRR-O = MRR of cohort today (organic only) / MRR of same cohort 12 months ago × 100","insight":"True product-market fit signal. Are customers expanding because the product delivers more value, independent of commercial motion?"},"market":{"label":"Account NRR (NRR-M)","description":"NRR-M uses the account-level formula method and includes all expansion types. Only net-new logo acquisition is excluded. This matches what public SaaS companies report and what investors benchmark.","celSource":"`Revenue_Event`","atlInclusion":"- All `expansion_classification` values included\n- Only `lifecycle_attribution` = `Acquisition` excluded","formula":"NRR-M = (Beginning MRR + All Expansion MRR − Contraction MRR − Churned MRR) / Beginning MRR × 100","insight":"The total revenue retention and expansion picture that investors use for benchmarking and valuation."},"bridge":{"reconciliation":"NRR-M ≈ NRR-O + Reactivation + Cross-Module + New Buying Centre + Pricing Adjustment + Recontracting expansion","diagnostic":"The delta (NRR-M − NRR-O) is the **Expansion Integrity Gap.** How much of reported NRR comes from commercial motion (cross-sell, reactivation, pricing) versus organic product expansion. A wide gap means NRR depends on sales execution rather than product-led growth. Not inherently bad, but the board should know which engine drives retention. SaaS Metrics Standards Board recommends the cohort method. Public SaaS companies report account-level NRR (NRR-M).\n\n---"}},"dualLensNote":null},{"name":"Gross Revenue Retention (GRR)","slug":"gross-revenue-retention-grr","definition":"The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention.","formulas":["GRR = Sum of min(Beginning MRR, Current MRR) per customer / Beginning MRR × 100","GRR = (Beginning MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100"],"benchmarks":"- Below 80%: Severe retention problem\n- 80-85%: Below average for most segments\n- 85-90%: Average for SMB-focused businesses (Median for bootstrapped SaaS: 92%)\n- 90-95%: Good, typical for mid-market\n- 95%+: Excellent, typical for enterprise (90th percentile: 98%)","insight":"The baseline health of your customer relationships, independent of upsell. Investors examine GRR alongside NRR because strong expansion can mask high churn.","commonMistakes":null,"sources":["SaaS Metrics Standards Board: GRR: https://www.saasmetricsboard.com/gross-revenue-retention","Wall Street Prep: Gross Revenue Retention: https://www.wallstreetprep.com/knowledge/gross-revenue-retention/","ChartMogul: GRR: https://chartmogul.com/saas-metrics/grr/"],"department":"Core","category":"Retention Metrics","aliases":["GRR"],"rawMarkdown":"### Gross Revenue Retention (GRR)\n\n**Definition:** The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention.\n\n**Calculation Methods:**\n\nTwo methods are widely used. The **cohort method is preferred** for accuracy.\n\n**1. Cohort Method (Preferred):**\nCompare the MRR of a cohort, using the lesser of beginning MRR or current MRR for each customer (this mathematically eliminates expansion while capturing shrinkage and churn).\n\n```\nGRR = Sum of min(Beginning MRR, Current MRR) per customer / Beginning MRR × 100\n```\n\n**2. Formula Method:**\n```\nGRR = (Beginning MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100\n```\n\n**Time period:** Typically measured annually.\n\n**Annualization:** If calculating over a shorter period, annualize by raising to the appropriate power:\n- Monthly GRR annualized: `(Monthly GRR / 100) ^ 12 × 100`\n- Quarterly GRR annualized: `(Quarterly GRR / 100) ^ 4 × 100`\n\n**Critical:** GRR **cannot exceed 100%**. Unlike NRR, it does not include upsells, cross-sells or expansion. Maximum GRR = 100% (zero churn).\n\n**Benchmarks (per SaaS Capital 2025):**\n- Below 80%: Severe retention problem\n- 80-85%: Below average for most segments\n- 85-90%: Average for SMB-focused businesses (Median for bootstrapped SaaS: 92%)\n- 90-95%: Good, typical for mid-market\n- 95%+: Excellent, typical for enterprise (90th percentile: 98%)\n\n**Segment-specific (per SaaS Capital 2025):**\n- SMB: 85%+ is good\n- Mid-market/Enterprise: 90%+ is good\n- High ACV Enterprise: 95%+ expected\n\n**What it tells you:** The baseline health of your customer relationships, independent of upsell. Investors examine GRR alongside NRR because strong expansion can mask high churn.\n\n**Sources:**\n- [SaaS Metrics Standards Board: GRR](https://www.saasmetricsboard.com/gross-revenue-retention)\n- [Wall Street Prep: Gross Revenue Retention](https://www.wallstreetprep.com/knowledge/gross-revenue-retention/)\n- [ChartMogul: GRR](https://chartmogul.com/saas-metrics/grr/)\n\n#### Dual-Lens Note\n\nGRR measures revenue retained from existing customers, excluding expansion. Because expansion is already stripped out, the Operating/Market distinction that drives dual-lens treatment for other metrics does not apply. There is no expansion classification to filter. GRR is GRR: the same calculation serves both internal planning and investor reporting. The existing definition is the standard for both lenses.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":"GRR measures revenue retained from existing customers, excluding expansion. Because expansion is already stripped out, the Operating/Market distinction that drives dual-lens treatment for other metrics does not apply. There is no expansion classification to filter. GRR is GRR: the same calculation serves both internal planning and investor reporting. The existing definition is the standard for both lenses."},{"name":"Logo Churn Rate (Customer Churn)","slug":"logo-churn-rate-customer-churn","definition":"The percentage of customers lost in a period. Also called customer churn or logo churn.","formulas":["Logo Churn Rate = Customers lost in period / Customers at start of period × 100"],"benchmarks":"- <1%: Good for established SaaS\n- 1-2%: Acceptable\n- 2-3%: Concerning\n- >3%: Requires attention","insight":"How many customers are leaving, regardless of their value. Important for understanding customer experience separate from revenue impact.","commonMistakes":null,"sources":["ChartMogul: Customer Churn: https://chartmogul.com/saas-metrics/customer-churn/","ChurnZero: Churn Rate: https://churnzero.com/churnopedia/churn-rate/","Maxio: Calculating Churn: https://www.maxio.com/saaspedia/calculating-churn-in-a-saas-business"],"department":"Core","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Logo Churn Rate (Customer Churn)\n\n**Definition:** The percentage of customers lost in a period. Also called customer churn or logo churn.\n\n**Formula:**\n```\nLogo Churn Rate = Customers lost in period / Customers at start of period × 100\n```\n\n**Time period:** Monthly or annual basis. Always specify which.\n\n**Benchmarks (Monthly, per OpenView/High Alpha 2024):**\n- <1%: Good for established SaaS\n- 1-2%: Acceptable\n- 2-3%: Concerning\n- >3%: Requires attention\n\n**Benchmarks (Annual):**\n- <5%: Excellent\n- 5-7%: Good\n- 7-10%: Average\n- >10%: High churn\n\n**By segment (per SaaS Capital 2025):**\n- SMB: Higher churn is normal (3-5% monthly). SMB churn is ~8x higher than enterprise.\n- Mid-market: 1-2% monthly typical\n- Enterprise: <1% monthly expected\n\n**What it tells you:** How many customers are leaving, regardless of their value. Important for understanding customer experience separate from revenue impact.\n\n**Logo vs Revenue Churn:** Logo churn counts customers equally. Revenue churn weights by value. Losing a few high-value customers may show low logo churn but high revenue churn.\n\n**Sources:**\n- [ChartMogul: Customer Churn](https://chartmogul.com/saas-metrics/customer-churn/)\n- [ChurnZero: Churn Rate](https://churnzero.com/churnopedia/churn-rate/)\n- [Maxio: Calculating Churn](https://www.maxio.com/saaspedia/calculating-churn-in-a-saas-business)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue Churn Rate","slug":"revenue-churn-rate","definition":"The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate.","formulas":["Revenue Churn Rate = (Churned MRR + Contraction MRR) / Beginning MRR × 100"],"benchmarks":"- <2%: Good\n- 2-5%: Average\n- >5%: High (average annual churn ~4.9% for B2B SaaS)","insight":"The revenue impact of churn. If revenue churn is lower than logo churn, you're losing smaller customers (often acceptable). If higher, you're losing larger customers (concerning).","commonMistakes":null,"sources":["Wall Street Prep: Revenue Churn: https://www.wallstreetprep.com/knowledge/revenue-churn-mrr/","ChartMogul: Revenue Churn: https://chartmogul.com/saas-metrics/revenue-churn/","Maxio: MRR Churn: https://www.maxio.com/saaspedia/mrr-churn"],"department":"Core","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Revenue Churn Rate\n\n**Definition:** The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate.\n\n**Formula:**\n```\nRevenue Churn Rate = (Churned MRR + Contraction MRR) / Beginning MRR × 100\n```\n\nThis is gross revenue churn - it measures losses only, without netting against expansion. This is the canonical formula because it isolates the leakage problem.\n\n**Note:** \"Net Revenue Churn\" (which subtracts expansion) can be calculated but conflates two distinct dynamics. Use NRR for the net view instead.\n\n**Benchmarks (Monthly, per OpenView 2024):**\n- <2%: Good\n- 2-5%: Average\n- >5%: High (average annual churn ~4.9% for B2B SaaS)\n\n**What it tells you:** The revenue impact of churn. If revenue churn is lower than logo churn, you're losing smaller customers (often acceptable). If higher, you're losing larger customers (concerning).\n\n**Sources:**\n- [Wall Street Prep: Revenue Churn](https://www.wallstreetprep.com/knowledge/revenue-churn-mrr/)\n- [ChartMogul: Revenue Churn](https://chartmogul.com/saas-metrics/revenue-churn/)\n- [Maxio: MRR Churn](https://www.maxio.com/saaspedia/mrr-churn)\n\n#### Dual-Lens: Revenue Churn (Churn-O) and Logo Churn (Churn-M)\n\nRevenue Churn Rate and Logo Churn Rate (defined above) are the Operating and Market forms of the same underlying phenomenon: customer attrition.\n\n**Operating Form: Revenue Churn Rate (Churn-O)**\n\nMRR-weighted churn captures the economic impact of attrition. The formula is defined above: `(Churned MRR + Contraction MRR) / Beginning MRR × 100`.\n\n**CEL Source:** `Revenue_Event` where `event_type` ∈ (`churn`, `contraction`)\n\n**What it tells you:** The operating metric because it reflects actual economic damage. Losing a $50K customer hits harder than losing a $500 customer.\n\n**Market Form: Logo Churn Rate (Churn-M)**\n\nCustomer-count churn treats every logo equally. The formula is defined in the Logo Churn Rate section above: `Customers lost / Customers at start × 100`.\n\n**CEL Source:** `Revenue_Event` where `event_type` = `churn` (full churn only. Contraction is not logo churn)\n\n**What it tells you:** The market metric because it is simple, comparable and what investors benchmark.\n\n**Bridge:** Revenue Churn and Logo Churn are not additive. One measures dollars, the other measures logos. The diagnostic compares the two signals:\n- **Churn-O high, Churn-M low →** Losing few but high-value customers (concentration risk)\n- **Churn-M high, Churn-O low →** Losing many small customers (long-tail churn)\n- The pattern tells you where to focus retention efforts and which customer segments need intervention.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":{"operating":{"label":"Revenue Churn Rate (Churn-O)","description":"MRR-weighted churn captures the economic impact of attrition. The formula is defined above: `(Churned MRR + Contraction MRR) / Beginning MRR × 100`.","celSource":"`Revenue_Event` where `event_type` ∈ (`churn`, `contraction`)","atlInclusion":"","formula":null,"insight":"The operating metric because it reflects actual economic damage. Losing a $50K customer hits harder than losing a $500 customer."},"market":{"label":"Logo Churn Rate (Churn-M)","description":"Customer-count churn treats every logo equally. The formula is defined in the Logo Churn Rate section above: `Customers lost / Customers at start × 100`.","celSource":"`Revenue_Event` where `event_type` = `churn` (full churn only. Contraction is not logo churn)","atlInclusion":"","formula":null,"insight":"The market metric because it is simple, comparable and what investors benchmark."},"bridge":{"reconciliation":null,"diagnostic":"Revenue Churn and Logo Churn are not additive. One measures dollars, the other measures logos. The diagnostic compares the two signals:\n- **Churn-O high, Churn-M low →** Losing few but high-value customers (concentration risk)\n- **Churn-M high, Churn-O low →** Losing many small customers (long-tail churn)\n- The pattern tells you where to focus retention efforts and which customer segments need intervention.\n\n---"}},"dualLensNote":null},{"name":"NPS (Net Promoter Score)","slug":"nps-net-promoter-score","definition":"A measure of customer loyalty based on likelihood to recommend.","formulas":["NPS = % Promoters - % Detractors"],"benchmarks":"- Below 0: More detractors than promoters\n- 0-30: Average (B2B SaaS average: 36-41)\n- 30-50: Good\n- 50-70: Excellent (top performers)\n- 70+: World class","insight":"A leading indicator of retention and growth. NPS can signal churn risk before it manifests in revenue metrics, making it useful for early intervention. Bain & Company research links NPS to organic growth through referrals and reduced churn.","commonMistakes":["Low response rates (<20% makes data unreliable)","Survey fatigue from over-asking","Not closing the loop with detractors","Comparing across industries (benchmarks vary significantly)"],"sources":["Bain & Company: Measuring Your Net Promoter Score: https://www.netpromotersystem.com/about/measuring-your-net-promoter-score/","Wikipedia: Net Promoter Score: https://en.wikipedia.org/wiki/Net_promoter_score","Qualtrics: Net Promoter Score Guide: https://www.qualtrics.com/en-au/experience-management/customer/net-promoter-score/"],"department":"Core","category":"Retention Metrics","aliases":["NPS"],"rawMarkdown":"### NPS (Net Promoter Score)\n\n**Definition:** A measure of customer loyalty based on likelihood to recommend.\n\n**Origin:** Developed by Fred Reichheld, Bain & Company and Satmetrix (2003). Based on Harvard Business Review article \"The One Number You Need to Grow.\"\n\n**The Question:**\n\"How likely are you to recommend [product/company] to a friend or colleague?\" (0-10 scale)\n\n**Customer Categories:**\n| Category | Score | Behavior |\n|----------|-------|----------|\n| Promoters | 9-10 | Loyal, enthusiastic, will refer, drive growth |\n| Passives | 7-8 | Satisfied but vulnerable, may switch to competitors |\n| Detractors | 0-6 | Unhappy, high churn, 80%+ of negative word-of-mouth |\n\n**Formula:**\n```\nNPS = % Promoters - % Detractors\n```\n\nPassives are not included in the calculation.\n\n**Score Range:** -100 to +100\n\n**Benchmarks (per Bain & Company, CustomerGauge 2025):**\n- Below 0: More detractors than promoters\n- 0-30: Average (B2B SaaS average: 36-41)\n- 30-50: Good\n- 50-70: Excellent (top performers)\n- 70+: World class\n\n**What it tells you:** A leading indicator of retention and growth. NPS can signal churn risk before it manifests in revenue metrics, making it useful for early intervention. Bain & Company research links NPS to organic growth through referrals and reduced churn.\n\n**Common mistakes:**\n- Low response rates (<20% makes data unreliable)\n- Survey fatigue from over-asking\n- Not closing the loop with detractors\n- Comparing across industries (benchmarks vary significantly)\n\n**Sources:**\n- [Bain & Company: Measuring Your Net Promoter Score](https://www.netpromotersystem.com/about/measuring-your-net-promoter-score/)\n- [Wikipedia: Net Promoter Score](https://en.wikipedia.org/wiki/Net_promoter_score)\n- [Qualtrics: Net Promoter Score Guide](https://www.qualtrics.com/en-au/experience-management/customer/net-promoter-score/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"CAC (Customer Acquisition Cost)","slug":"cac-customer-acquisition-cost","definition":"The total cost to acquire a new customer.","formulas":["CAC = (Sales + Marketing spend in period) / New customers acquired in period","CAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers Acquired","CAC-M = S&M Spend / New Customers Acquired","CAC-O = CAC-M + Implementation_Cost_per_Customer + Onboarding_Cost_per_Customer"],"benchmarks":"- SMB SaaS: $300-$1,000\n- Mid-market: $1,000-$5,000\n- Enterprise: $5,000-$50,000+\n- Target LTV:CAC ratio: 3:1 or higher (see LTV:CAC Ratio)","insight":"The investment required to acquire each customer.","commonMistakes":["Excluding salaries (they're a real cost)","Using wrong time period (customers acquired may not align with spend timing)","Including Customer Success costs","Mixing paid and organic (calculate separately for channel efficiency)"],"sources":["Wall Street Prep: Customer Acquisition Cost: https://www.wallstreetprep.com/knowledge/customer-acquisition-cost-cac/","Maxio: CAC Customer Acquisition Cost: https://www.maxio.com/saaspedia/cac-customer-acquisition-cost","Paddle: Customer Acquisition Cost: https://www.paddle.com/resources/customer-acquisition-cost"],"department":"Core","category":"Efficiency Metrics","aliases":["CAC"],"rawMarkdown":"### CAC (Customer Acquisition Cost)\n\n**Definition:** The total cost to acquire a new customer.\n\n**Formula:**\n```\nCAC = (Sales + Marketing spend in period) / New customers acquired in period\n```\n\n**Include:**\n- Sales salaries and commissions (for new customer acquisition)\n- Marketing salaries\n- Advertising spend\n- Marketing tools and software\n- Events and content costs\n- Trial/POC costs (hosting, implementation support)\n\n**Exclude:**\n- Customer Success costs (retention, not acquisition)\n- Costs for existing customer expansion\n- General overhead (unless investor requires)\n\n**Allocation:** If a salesperson splits time between new and existing customers (e.g., 70/30), allocate only the acquisition portion (70%) to CAC.\n\n**Timing:** For long sales cycles, consider lagged CAC: spend from 60-90 days ago / customers acquired today.\n\n**What it tells you:** The investment required to acquire each customer.\n\n**Benchmarks (per First Page Sage 2025):**\n- SMB SaaS: $300-$1,000\n- Mid-market: $1,000-$5,000\n- Enterprise: $5,000-$50,000+\n- Target LTV:CAC ratio: 3:1 or higher (see LTV:CAC Ratio)\n\n**Common mistakes:**\n- Excluding salaries (they're a real cost)\n- Using wrong time period (customers acquired may not align with spend timing)\n- Including Customer Success costs\n- Mixing paid and organic (calculate separately for channel efficiency)\n\n**Sources:**\n- [Wall Street Prep: Customer Acquisition Cost](https://www.wallstreetprep.com/knowledge/customer-acquisition-cost-cac/)\n- [Maxio: CAC Customer Acquisition Cost](https://www.maxio.com/saaspedia/cac-customer-acquisition-cost)\n- [Paddle: Customer Acquisition Cost](https://www.paddle.com/resources/customer-acquisition-cost)\n\n#### Operating Form: Fully Loaded CAC (CAC-O)\n\nCAC-O includes all costs to make a customer productive: go-to-market spend plus implementation and onboarding. It reflects the true economic cost of acquiring a revenue-generating customer.\n\n**CEL Source:** `Cost_Event`\n**ATL Inclusion:** `lifecycle_attribution` ∈ (`Acquisition`, `Activation`)\n\n**Formula:**\n```\nCAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers Acquired\n```\n\n**What it tells you:** The full investment required to get a customer generating value. The number you need for true unit economics.\n\n#### Market Form: GTM CAC (CAC-M)\n\nCAC-M includes only go-to-market costs: sales and marketing spend. This matches the investor-comparable CAC used by KeyBanc, Benchmarkit and public SaaS benchmarks.\n\n**CEL Source:** `Cost_Event`\n**ATL Inclusion:** `lifecycle_attribution` = `Acquisition` AND `cost_function` = `GTM`\n\n**Formula:**\n```\nCAC-M = S&M Spend / New Customers Acquired\n```\n\n**What it tells you:** The market-comparable acquisition cost used in LTV:CAC ratios and investor benchmarks.\n\n#### Bridge: CAC-O ↔ CAC-M\n\n**Reconciliation:**\n```\nCAC-O = CAC-M + Implementation_Cost_per_Customer + Onboarding_Cost_per_Customer\n```\n\n**Diagnostic:** The delta (CAC-O − CAC-M) is the **Activation Delta.** The hidden cost of making customers productive that does not show up in S&M-based benchmarks. A large Activation Delta signals that investor-comparable CAC understates true acquisition economics. Driven by implementation complexity, onboarding duration and services intensity. SaaS Metrics Standards Board defines the Blended CAC Ratio as S&M-only (CAC-M). SaaS Capital and a16z recommend tracking fully loaded CAC (CAC-O) alongside for unit economics.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":{"operating":{"label":"Fully Loaded CAC (CAC-O)","description":"CAC-O includes all costs to make a customer productive: go-to-market spend plus implementation and onboarding. It reflects the true economic cost of acquiring a revenue-generating customer.","celSource":"`Cost_Event`","atlInclusion":"`lifecycle_attribution` ∈ (`Acquisition`, `Activation`)","formula":"CAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers Acquired","insight":"The full investment required to get a customer generating value. The number you need for true unit economics."},"market":{"label":"GTM CAC (CAC-M)","description":"CAC-M includes only go-to-market costs: sales and marketing spend. This matches the investor-comparable CAC used by KeyBanc, Benchmarkit and public SaaS benchmarks.","celSource":"`Cost_Event`","atlInclusion":"`lifecycle_attribution` = `Acquisition` AND `cost_function` = `GTM`","formula":"CAC-M = S&M Spend / New Customers Acquired","insight":"The market-comparable acquisition cost used in LTV:CAC ratios and investor benchmarks."},"bridge":{"reconciliation":"CAC-O = CAC-M + Implementation_Cost_per_Customer + Onboarding_Cost_per_Customer","diagnostic":"The delta (CAC-O − CAC-M) is the **Activation Delta.** The hidden cost of making customers productive that does not show up in S&M-based benchmarks. A large Activation Delta signals that investor-comparable CAC understates true acquisition economics. Driven by implementation complexity, onboarding duration and services intensity. SaaS Metrics Standards Board defines the Blended CAC Ratio as S&M-only (CAC-M). SaaS Capital and a16z recommend tracking fully loaded CAC (CAC-O) alongside for unit economics.\n\n---"}},"dualLensNote":null},{"name":"LTV (Customer Lifetime Value)","slug":"ltv-customer-lifetime-value","definition":"The total revenue (or profit) expected from a customer over their lifetime. Also known as CLV (Customer Lifetime Value) or CLTV.","formulas":["LTV = (ARPA × Gross Margin) / Revenue Churn Rate","LTV-O = (ARPA × Contribution Margin) / Revenue Churn Rate","LTV-M = (ARPA × Gross Margin) / Revenue Churn Rate","LTV-M − LTV-O = Variable Service Costs per Customer × Customer Lifetime"],"benchmarks":null,"insight":"The upper bound of what you should spend to acquire a customer.","commonMistakes":null,"sources":["ChartMogul: Customer Lifetime Value: https://chartmogul.com/saas-metrics/ltv/","Baremetrics: Calculating LTV: https://baremetrics.com/academy/saas-calculating-ltv","Wall Street Prep: Customer Lifetime Value: https://www.wallstreetprep.com/knowledge/lifetime-value-ltv/"],"department":"Core","category":"Efficiency Metrics","aliases":["LTV","CLV","CLTV"],"rawMarkdown":"### LTV (Customer Lifetime Value)\n\n**Definition:** The total revenue (or profit) expected from a customer over their lifetime. Also known as CLV (Customer Lifetime Value) or CLTV.\n\n**Formula:**\n```\nLTV = (ARPA × Gross Margin) / Revenue Churn Rate\n```\n\nWhere:\n- **ARPA** = Average Revenue Per Account (monthly)\n- **Gross Margin** = typically 70-85% for SaaS\n- **Revenue Churn Rate** = monthly churn rate\n\n**Why gross margin is included:** LTV measures profit contribution, not just revenue. Using gross margin reflects what you actually retain after delivery costs. This is the canonical formula.\n\n**What it tells you:** The upper bound of what you should spend to acquire a customer.\n\n**Limitations:**\n- Basic formula is optimistic (assumes linear churn)\n- Doesn't account for expansion revenue (understates for high-NRR companies)\n- Requires sufficient sample size for accuracy\n- Consider applying 0.75x discount for conservatism\n\n**Sources:**\n- [ChartMogul: Customer Lifetime Value](https://chartmogul.com/saas-metrics/ltv/)\n- [Baremetrics: Calculating LTV](https://baremetrics.com/academy/saas-calculating-ltv)\n- [Wall Street Prep: Customer Lifetime Value](https://www.wallstreetprep.com/knowledge/lifetime-value-ltv/)\n\n#### Operating Form: Contribution LTV (LTV-O)\n\nLTV-O uses contribution margin. Revenue minus all variable costs including implementation, onboarding, support and customer success. It reflects the true profit contribution over a customer's lifetime.\n\n**CEL Source:** `Revenue_Event`, `Cost_Event`\n**ATL Inclusion for costs:** All variable `cost_function` values per customer\n\n**Formula:**\n```\nLTV-O = (ARPA × Contribution Margin) / Revenue Churn Rate\n```\nWhere Contribution Margin = Revenue − COGS − Implementation − Onboarding − Support − Success Engineering costs.\n\n**What it tells you:** The realistic lifetime profit from a customer after all variable delivery costs. The number to use for pricing and unit economics decisions.\n\n#### Market Form: Gross Margin LTV (LTV-M)\n\nLTV-M uses SaaS gross margin. Revenue minus COGS only. This is the formula already defined above and matches investor benchmarks (the 3:1 LTV:CAC threshold uses this form).\n\n**CEL Source:** `Revenue_Event`, `Cost_Event`\n**ATL Inclusion for costs:** `cost_function` = `Infrastructure` only (COGS)\n\n**Formula:**\n```\nLTV-M = (ARPA × Gross Margin) / Revenue Churn Rate\n```\n\n**What it tells you:** The investor-comparable lifetime value. The number used in LTV:CAC ratios reported to the board and in fundraising materials.\n\n**Note:** The formula defined above in this section is LTV-M. The Operating Form (LTV-O) substitutes Contribution Margin for Gross Margin.\n\n#### Bridge: LTV-O ↔ LTV-M\n\n**Reconciliation:**\n```\nLTV-M − LTV-O = Variable Service Costs per Customer × Customer Lifetime\n```\nThe gap is the lifetime profit consumed by variable service costs (implementation, onboarding, support, CS).\n\n**Diagnostic:** The delta (LTV-M − LTV-O) is the **Contribution Leakage.** The lifetime profit that gets consumed by variable service costs. Large leakage means the business model depends on services that erode unit economics, signalling opportunities for services productisation and self-serve onboarding. The canonical LTV formula in investor contexts uses gross margin (LTV-M). This is what a16z, Bessemer and SaaS Capital reference. Contribution margin LTV (LTV-O) is recommended by growth equity investors for deeper unit economics analysis.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":{"operating":{"label":"Contribution LTV (LTV-O)","description":"LTV-O uses contribution margin. Revenue minus all variable costs including implementation, onboarding, support and customer success. It reflects the true profit contribution over a customer's lifetime.","celSource":"`Revenue_Event`, `Cost_Event`","atlInclusion":"All variable `cost_function` values per customer","formula":"LTV-O = (ARPA × Contribution Margin) / Revenue Churn Rate","insight":"The realistic lifetime profit from a customer after all variable delivery costs. The number to use for pricing and unit economics decisions."},"market":{"label":"Gross Margin LTV (LTV-M)","description":"LTV-M uses SaaS gross margin. Revenue minus COGS only. This is the formula already defined above and matches investor benchmarks (the 3:1 LTV:CAC threshold uses this form).","celSource":"`Revenue_Event`, `Cost_Event`","atlInclusion":"`cost_function` = `Infrastructure` only (COGS)","formula":"LTV-M = (ARPA × Gross Margin) / Revenue Churn Rate","insight":"The investor-comparable lifetime value. The number used in LTV:CAC ratios reported to the board and in fundraising materials."},"bridge":{"reconciliation":"LTV-M − LTV-O = Variable Service Costs per Customer × Customer Lifetime","diagnostic":"The delta (LTV-M − LTV-O) is the **Contribution Leakage.** The lifetime profit that gets consumed by variable service costs. Large leakage means the business model depends on services that erode unit economics, signalling opportunities for services productisation and self-serve onboarding. The canonical LTV formula in investor contexts uses gross margin (LTV-M). This is what a16z, Bessemer and SaaS Capital reference. Contribution margin LTV (LTV-O) is recommended by growth equity investors for deeper unit economics analysis.\n\n---"}},"dualLensNote":null},{"name":"LTV:CAC Ratio","slug":"ltvcac-ratio","definition":"The ratio of customer lifetime value to acquisition cost. Measures the return on investment from sales and marketing spend.","formulas":["LTV:CAC = LTV / CAC"],"benchmarks":"- Below 1:1: Losing money on every customer\n- 1:1 to 2:1: Breaking even or marginal, concerning to investors\n- 3:1 to 4:1: Industry standard, healthy sustainable growth (Median B2B SaaS: 3.2:1)\n- 4:1 to 5:1: Strong business model\n- Above 5:1: Under-investing in growth; could be growing faster","insight":"Unit economics health. Are customers worth more than they cost to acquire?","commonMistakes":null,"sources":["Wall Street Prep: LTV/CAC Ratio: https://www.wallstreetprep.com/knowledge/ltv-cac-ratio/","SaaS Capital: LTV/CAC Benchmarks: https://www.saas-capital.com/blog-posts/ltv-to-cac-ratio/","Corporate Finance Institute: LTV/CAC: https://corporatefinanceinstitute.com/resources/valuation/ltv-cac-ratio/"],"department":"Core","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### LTV:CAC Ratio\n\n**Definition:** The ratio of customer lifetime value to acquisition cost. Measures the return on investment from sales and marketing spend.\n\n**Formula:**\n```\nLTV:CAC = LTV / CAC\n```\n\nExpress as ratio (e.g., \"3:1\" or \"3.0x\").\n\n**Benchmarks (per Optifai 2025, Wall Street Prep):**\n- Below 1:1: Losing money on every customer\n- 1:1 to 2:1: Breaking even or marginal, concerning to investors\n- 3:1 to 4:1: Industry standard, healthy sustainable growth (Median B2B SaaS: 3.2:1)\n- 4:1 to 5:1: Strong business model\n- Above 5:1: Under-investing in growth; could be growing faster\n\n**What it tells you:** Unit economics health. Are customers worth more than they cost to acquire?\n\n**Important:** Higher is not always better. A very high ratio (5:1+) suggests you're leaving growth on the table by not investing enough in acquisition.\n\n**Sources:**\n- [Wall Street Prep: LTV/CAC Ratio](https://www.wallstreetprep.com/knowledge/ltv-cac-ratio/)\n- [SaaS Capital: LTV/CAC Benchmarks](https://www.saas-capital.com/blog-posts/ltv-to-cac-ratio/)\n- [Corporate Finance Institute: LTV/CAC](https://corporatefinanceinstitute.com/resources/valuation/ltv-cac-ratio/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"CAC Payback Period","slug":"cac-payback-period","definition":"The number of months required to recover the cost of acquiring a customer. Also called \"Months to Recover CAC\" or \"Time to Recover CAC.\"","formulas":["CAC Payback = CAC / (ARPA × Gross Margin)"],"benchmarks":"- Under 12 months: Good, investor-friendly target (best-in-class)\n- 12-18 months: Acceptable (Median 2024: 18-20 months)\n- 18-24 months: Concerning for most segments\n- Over 24 months: Requires attention","insight":"How quickly customers become profitable. Critical for cash management and determining sustainable growth rate.","commonMistakes":null,"sources":["Wall Street Prep: CAC Payback Period: https://www.wallstreetprep.com/knowledge/cac-payback-period/","Maxio: CAC Payback: https://www.maxio.com/saaspedia/cac-payback","Corporate Finance Institute: CAC Payback Period: https://corporatefinanceinstitute.com/resources/valuation/cac-payback-period/"],"department":"Core","category":"Efficiency Metrics","aliases":["CAC"],"rawMarkdown":"### CAC Payback Period\n\n**Definition:** The number of months required to recover the cost of acquiring a customer. Also called \"Months to Recover CAC\" or \"Time to Recover CAC.\"\n\n**Formula:**\n```\nCAC Payback = CAC / (ARPA × Gross Margin)\n```\n\nResult in months.\n\n**Why include Gross Margin:** Using gross margin (not just revenue) reflects actual profit recovery. Without it, payback appears shorter than reality.\n\n**Benchmarks (per Benchmarkit 2025, KeyBanc 2024):**\n- Under 12 months: Good, investor-friendly target (best-in-class)\n- 12-18 months: Acceptable (Median 2024: 18-20 months)\n- 18-24 months: Concerning for most segments\n- Over 24 months: Requires attention\n\n**By segment:**\n- SMB: 8-12 months typical\n- Mid-market: 14-18 months typical\n- Enterprise: 18-24 months typical (longer sales cycles)\n\n**What it tells you:** How quickly customers become profitable. Critical for cash management and determining sustainable growth rate.\n\n**Sources:**\n- [Wall Street Prep: CAC Payback Period](https://www.wallstreetprep.com/knowledge/cac-payback-period/)\n- [Maxio: CAC Payback](https://www.maxio.com/saaspedia/cac-payback)\n- [Corporate Finance Institute: CAC Payback Period](https://corporatefinanceinstitute.com/resources/valuation/cac-payback-period/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Gross Margin","slug":"gross-margin","definition":"Revenue minus cost of goods sold (COGS), as a percentage of revenue. Measures profitability after direct delivery costs.","formulas":["Gross Margin = (Revenue (GAAP) - COGS) / Revenue (GAAP) × 100","GM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100","GM-M = (Revenue − COGS) / Revenue × 100","GM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100"],"benchmarks":"- Below 60%: Low, may indicate infrastructure-heavy or services-heavy business\n- 60-70%: Moderate (Seed/Series A acceptable while scaling)\n- 70-80%: Good, typical for SaaS (Most VCs require 70%+ for investment)\n- 75-80%: Series B+ expected, attractive to investors\n- 80-85%: Best-in-class (commands valuation premium)","insight":"How much of each dollar of revenue is available after delivery costs. Higher margins = more scalable business.","commonMistakes":null,"sources":["The SaaS CFO: How to Calculate SaaS Gross Margin: https://www.thesaascfo.com/how-to-calculate-saas-gross-margin/","CloudZero: SaaS Gross Margin: https://www.cloudzero.com/blog/saas-gross-margin/","Drivetrain: SaaS Gross Margin: https://www.drivetrain.ai/strategic-finance-glossary/saas-gross-margin"],"department":"Core","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Gross Margin\n\n**Definition:** Revenue minus cost of goods sold (COGS), as a percentage of revenue. Measures profitability after direct delivery costs.\n\n**Formula:**\n```\nGross Margin = (Revenue (GAAP) - COGS) / Revenue (GAAP) × 100\n```\n\n**Note:** Use GAAP-recognized revenue, not MRR/ARR. Gross Margin is a financial statement metric.\n\n**Include in COGS:**\n- Hosting/infrastructure costs (AWS, Azure, etc.)\n- Customer Support team (fully burdened: salaries, benefits, tools)\n- Customer Success team (if retention-focused, not sales)\n- DevOps team costs\n- Payment processing fees\n- Third-party software for product delivery\n- Capitalized software amortization\n\n**Exclude from COGS:**\n- Sales & Marketing expenses\n- R&D (product development)\n- G&A overhead\n\n**COGS Test:** \"Can customers still access and use the application if I don't pay this expense?\" If no → include in COGS.\n\n**Fully burdened:** COGS departments should include all costs: wages, bonuses, payroll taxes, benefits, travel, training, internal tools.\n\n**Benchmarks (per CloudZero 2025, industry surveys):**\n- Below 60%: Low, may indicate infrastructure-heavy or services-heavy business\n- 60-70%: Moderate (Seed/Series A acceptable while scaling)\n- 70-80%: Good, typical for SaaS (Most VCs require 70%+ for investment)\n- 75-80%: Series B+ expected, attractive to investors\n- 80-85%: Best-in-class (commands valuation premium)\n\n**What it tells you:** How much of each dollar of revenue is available after delivery costs. Higher margins = more scalable business.\n\n**Sources:**\n- [The SaaS CFO: How to Calculate SaaS Gross Margin](https://www.thesaascfo.com/how-to-calculate-saas-gross-margin/)\n- [CloudZero: SaaS Gross Margin](https://www.cloudzero.com/blog/saas-gross-margin/)\n- [Drivetrain: SaaS Gross Margin](https://www.drivetrain.ai/strategic-finance-glossary/saas-gross-margin)\n\n#### Operating Form: Contribution Margin (GM-O)\n\nContribution Margin is revenue minus all variable costs per customer. It shows true per-customer profitability after all costs that scale with the customer base.\n\n**CEL Source:** `Revenue_Event`, `Cost_Event`\n**ATL Inclusion for costs:** `cost_function` ∈ (`Infrastructure`, `Support`, `Success_Engineering`, `Implementation`, `Onboarding`)\n\n**Formula:**\n```\nGM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100\n```\nTypical range: 50-70% for SaaS.\n\n**What it tells you:** The operating metric because it shows how much profit each customer actually generates after all variable delivery costs.\n\n#### Market Form: SaaS Gross Margin (GM-M)\n\nSaaS Gross Margin is revenue minus COGS only. Hosting, infrastructure and payment processing. It matches financial statement reporting and investor benchmarks.\n\n**CEL Source:** `Revenue_Event`, `Cost_Event`\n**ATL Inclusion for costs:** `cost_function` = `Infrastructure`\n\n**Formula:**\n```\nGM-M = (Revenue − COGS) / Revenue × 100\n```\nTypical range: 70-85% for SaaS.\n\n**What it tells you:** The market-comparable gross margin that investors expect at 70%+ for SaaS businesses.\n\n**Note:** The existing Gross Margin definition above includes Support and CS in COGS. The conservative allocation approach, which sits between pure GM-O and pure GM-M. Both extremes have industry support. The dual-lens framework makes the choice explicit rather than implicit.\n\n#### Bridge: GM-O ↔ GM-M\n\n**Reconciliation:**\n```\nGM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100\n```\n\n**Diagnostic:** The delta (GM-M − GM-O) is the **Services Drag.** The cost of running a human-intensive customer operation. Declining delta over time signals increasing automation and self-serve adoption. SaaS Capital 2025 guidance on COGS allocation supports both approaches. VCs typically expect 70%+ SaaS gross margin (GM-M) while internal teams should track contribution margin (GM-O) for pricing and unit economics.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":{"operating":{"label":"Contribution Margin (GM-O)","description":"Contribution Margin is revenue minus all variable costs per customer. It shows true per-customer profitability after all costs that scale with the customer base.","celSource":"`Revenue_Event`, `Cost_Event`","atlInclusion":"`cost_function` ∈ (`Infrastructure`, `Support`, `Success_Engineering`, `Implementation`, `Onboarding`)","formula":"GM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100","insight":"The operating metric because it shows how much profit each customer actually generates after all variable delivery costs."},"market":{"label":"SaaS Gross Margin (GM-M)","description":"SaaS Gross Margin is revenue minus COGS only. Hosting, infrastructure and payment processing. It matches financial statement reporting and investor benchmarks.","celSource":"`Revenue_Event`, `Cost_Event`","atlInclusion":"`cost_function` = `Infrastructure`","formula":"GM-M = (Revenue − COGS) / Revenue × 100","insight":"The market-comparable gross margin that investors expect at 70%+ for SaaS businesses."},"bridge":{"reconciliation":"GM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100","diagnostic":"The delta (GM-M − GM-O) is the **Services Drag.** The cost of running a human-intensive customer operation. Declining delta over time signals increasing automation and self-serve adoption. SaaS Capital 2025 guidance on COGS allocation supports both approaches. VCs typically expect 70%+ SaaS gross margin (GM-M) while internal teams should track contribution margin (GM-O) for pricing and unit economics.\n\n---"}},"dualLensNote":null},{"name":"Rule of 40","slug":"rule-of-40","definition":"A heuristic that balances growth and profitability. A healthy SaaS company's growth rate plus profit margin should equal 40% or more.","formulas":["Rule of 40 = ARR Growth Rate (YoY %) + EBITDA Margin (%)"],"benchmarks":"- Below 20: Struggling (Median public SaaS Q1 2025: 12-15%)\n- 20-40: Developing (Median mid-2024: 34%)\n- 40+: Healthy balance of growth and profitability\n- 60+: Elite (top quartile: 45%+ growth component)","insight":"Whether you're balancing growth and profitability appropriately. You can grow fast and lose money, or grow slow and be profitable, but the sum should hit 40.","commonMistakes":null,"sources":["Wall Street Prep: Rule of 40: https://www.wallstreetprep.com/knowledge/rule-of-40/","The SaaS CFO: Rule of 40: https://www.thesaascfo.com/rule-of-40-saas/","Corporate Finance Institute: Rule of 40: https://corporatefinanceinstitute.com/resources/valuation/rule-of-40/"],"department":"Core","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Rule of 40\n\n**Definition:** A heuristic that balances growth and profitability. A healthy SaaS company's growth rate plus profit margin should equal 40% or more.\n\n**Formula:**\n```\nRule of 40 = ARR Growth Rate (YoY %) + EBITDA Margin (%)\n```\n\nWhere:\n- **ARR Growth Rate** = (Current ARR - ARR 12 months ago) / ARR 12 months ago × 100\n- **EBITDA Margin** = EBITDA / Revenue (GAAP) × 100\n\n**Component definitions:**\n- **ARR Growth Rate:** Year-over-year percentage change in ARR. Use ARR (not MRR or GAAP revenue) for consistency with SaaS valuation standards.\n- **EBITDA Margin:** EBITDA as a percentage of GAAP revenue. EBITDA is the most common choice; FCF margin is an acceptable alternative but must be disclosed.\n\n**Origin:** Coined by Brad Feld (2015), heard from a late-stage investor.\n\n**Applicability:** Use when company reaches ~$1M MRR / $12M ARR. Not meaningful for early-stage startups.\n\n**Examples of hitting 40%:**\n- 60% growth + (-20%) margin = 40% (high growth, investing)\n- 20% growth + 20% margin = 40% (balanced)\n- 5% growth + 35% margin = 40% (mature, profitable)\n\n**Benchmarks (per McKinsey, Meritech Capital 2024):**\n- Below 20: Struggling (Median public SaaS Q1 2025: 12-15%)\n- 20-40: Developing (Median mid-2024: 34%)\n- 40+: Healthy balance of growth and profitability\n- 60+: Elite (top quartile: 45%+ growth component)\n\n**What it tells you:** Whether you're balancing growth and profitability appropriately. You can grow fast and lose money, or grow slow and be profitable, but the sum should hit 40.\n\n**Limitations:**\n- The \"40\" is arbitrary, not scientifically derived\n- Should not be used as pass/fail\n- Context matters (vertical vs horizontal, market conditions)\n\n**Sources:**\n- [Wall Street Prep: Rule of 40](https://www.wallstreetprep.com/knowledge/rule-of-40/)\n- [The SaaS CFO: Rule of 40](https://www.thesaascfo.com/rule-of-40-saas/)\n- [Corporate Finance Institute: Rule of 40](https://corporatefinanceinstitute.com/resources/valuation/rule-of-40/)\n\n#### Dual-Lens Note\n\nThe Rule of 40 is a composite metric. Its dual-lens behaviour is inherited from its inputs:\n\n- **Rule of 40-O** = ARR-O Growth Rate + Contribution Margin (GM-O)\n- **Rule of 40-M** = ARR-M Growth Rate + EBITDA Margin\n\nA company with 30% ARR growth and heavy implementation costs might report Rule of 40-M = 45 (healthy) while Rule of 40-O = 32 (below threshold). The gap reveals whether growth-profitability balance holds when true operating costs are included. No separate O/M inclusion rules are needed. Use the ARR and Gross Margin forms defined above.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":"The Rule of 40 is a composite metric. Its dual-lens behaviour is inherited from its inputs:\n\n- **Rule of 40-O** = ARR-O Growth Rate + Contribution Margin (GM-O)\n- **Rule of 40-M** = ARR-M Growth Rate + EBITDA Margin\n\nA company with 30% ARR growth and heavy implementation costs might report Rule of 40-M = 45 (healthy) while Rule of 40-O = 32 (below threshold). The gap reveals whether growth-profitability balance holds when true operating costs are included. No separate O/M inclusion rules are needed. Use the ARR and Gross Margin forms defined above."},{"name":"Net Revenue Retention (NRR)","slug":"net-revenue-retention-nrr","definition":"The percentage of revenue retained from existing customers over a period, including expansion, contraction and churn. Also known as Net Dollar Retention (NDR).","formulas":["NRR = MRR of cohort today / MRR of same cohort 12 months ago × 100","NRR = (Beginning MRR + Expansion MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100","NRR-O = MRR of cohort today (organic only) / MRR of same cohort 12 months ago × 100","NRR-M = (Beginning MRR + All Expansion MRR − Contraction MRR − Churned MRR) / Beginning MRR × 100","NRR-M ≈ NRR-O + Reactivation + Cross-Module + New Buying Centre + Pricing Adjustment + Recontracting expansion"],"benchmarks":"- Below 90%: Leaky bucket. Growth requires constant new acquisition.\n- 90-100%: Stable. You keep what you have.\n- 100-110%: Good. Existing customers grow. (Median for VC-backed SaaS: 101-106%)\n- 110-120%: Great. Strong expansion motion.\n- 120%+: Exceptional. Top quartile performance.","insight":"Can you grow without adding new customers? NRR is a critical indicator of SaaS sustainability because it measures whether your existing customer base is expanding or contracting. High NRR reduces dependence on new customer acquisition for growth.","commonMistakes":["Calculating over inconsistent time periods","Including new customer revenue (that's not NRR)","Excluding small customers or segments","Confusing with Gross Revenue Retention (GRR)"],"sources":["SaaS Metrics Standards Board: NRR: https://www.saasmetricsboard.com/net-revenue-retention","Wall Street Prep: Net Revenue Retention: https://www.wallstreetprep.com/knowledge/net-revenue-retention-nrr/","ChurnZero: Net Revenue Retention: https://churnzero.com/churnopedia/net-revenue-retention/"],"department":"Customer Success","category":"Retention Metrics","aliases":["NRR","NDR"],"rawMarkdown":"### Net Revenue Retention (NRR)\n\nSee [Core Metrics](core.md#net-revenue-retention-nrr) for full definition.\n\nCustomer Success owns NRR as the primary outcome metric.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":null},{"name":"Gross Revenue Retention (GRR)","slug":"gross-revenue-retention-grr","definition":"The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention.","formulas":["GRR = Sum of min(Beginning MRR, Current MRR) per customer / Beginning MRR × 100","GRR = (Beginning MRR - Contraction MRR - Churned MRR) / Beginning MRR × 100"],"benchmarks":"- Below 80%: Severe retention problem\n- 80-85%: Below average for most segments\n- 85-90%: Average for SMB-focused businesses (Median for bootstrapped SaaS: 92%)\n- 90-95%: Good, typical for mid-market\n- 95%+: Excellent, typical for enterprise (90th percentile: 98%)","insight":"The baseline health of your customer relationships, independent of upsell. Investors examine GRR alongside NRR because strong expansion can mask high churn.","commonMistakes":null,"sources":["SaaS Metrics Standards Board: GRR: https://www.saasmetricsboard.com/gross-revenue-retention","Wall Street Prep: Gross Revenue Retention: https://www.wallstreetprep.com/knowledge/gross-revenue-retention/","ChartMogul: GRR: https://chartmogul.com/saas-metrics/grr/"],"department":"Customer Success","category":"Retention Metrics","aliases":["GRR"],"rawMarkdown":"### Gross Revenue Retention (GRR)\n\nSee [Core Metrics](core.md#gross-revenue-retention-grr) for full definition.\n\nGRR isolates the retention component, removing the influence of expansion.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Logo Retention Rate","slug":"logo-retention-rate","definition":"The percentage of customers retained over a period.","formulas":["Logo Retention Rate = (Customers at end - New customers) / Customers at start × 100","Logo Retention Rate = 100% - Logo Churn Rate"],"benchmarks":null,"insight":"Customer retention independent of revenue. Are you keeping relationships?","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Logo Retention Rate\n\n**Definition:** The percentage of customers retained over a period.\n\n**Formula:**\n```\nLogo Retention Rate = (Customers at end - New customers) / Customers at start × 100\n```\n\nOr simply:\n```\nLogo Retention Rate = 100% - Logo Churn Rate\n```\n\n**What it tells you:** Customer retention independent of revenue. Are you keeping relationships?\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Customer Health Score","slug":"customer-health-score","definition":"A composite score predicting likelihood of retention or churn.","formulas":["Health Score = Weighted average of health indicators"],"benchmarks":null,"insight":"Which customers need attention before they churn.","commonMistakes":null,"sources":["Gainsight: Customer Health Score: https://www.gainsight.com/blog/customer-health-score/","Vitally: Customer Health Score Guide: https://www.vitally.io/post/how-to-create-a-customer-health-score-with-four-metrics","Custify: Customer Health Score Guide: https://www.custify.com/blog/customer-health-score-guide/"],"department":"Customer Success","category":"Health Metrics","aliases":[],"rawMarkdown":"### Customer Health Score\n\n**Definition:** A composite score predicting likelihood of retention or churn.\n\n**Formula:**\n```\nHealth Score = Weighted average of health indicators\n```\n\n**Core indicators (choose 5-10):**\n| Indicator | Typical Weight | What it measures |\n|-----------|----------------|------------------|\n| Product usage frequency | 25-35% | Are they using it regularly? |\n| Feature adoption depth | 15-25% | Are they using key features? |\n| Support sentiment | 10-20% | Are support interactions positive? |\n| Engagement/responsiveness | 10-15% | Do they respond to outreach? |\n| Contract/renewal status | 5-15% | How long until renewal? |\n| Payment health | 5-10% | Do they pay on time? |\n| Onboarding completion | 5-10% | Did they fully onboard? |\n\n**Important:** Weights should be customized based on correlation with actual churn in your business. Usage and adoption typically carry the most weight. Segment customers (by size, industry, lifecycle stage) for more accurate scoring.\n\n**Scoring:**\n- 0-40: At risk (red)\n- 40-70: Needs attention (yellow)\n- 70-100: Healthy (green)\n\n**What it tells you:** Which customers need attention before they churn.\n\n**Industry adoption:** Only ~42% of CS teams track health scores, despite evidence that AI-enhanced scoring can predict churn 3-6 months in advance with 85%+ accuracy.\n\n**Sources:**\n- [Gainsight: Customer Health Score](https://www.gainsight.com/blog/customer-health-score/)\n- [Vitally: Customer Health Score Guide](https://www.vitally.io/post/how-to-create-a-customer-health-score-with-four-metrics)\n- [Custify: Customer Health Score Guide](https://www.custify.com/blog/customer-health-score-guide/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Health Score Coverage","slug":"health-score-coverage","definition":"The percentage of customers with a health score calculated.","formulas":["Health Score Coverage = Customers with health score / Total customers × 100"],"benchmarks":null,"insight":"Whether you have visibility into customer health.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Health Metrics","aliases":[],"rawMarkdown":"### Health Score Coverage\n\n**Definition:** The percentage of customers with a health score calculated.\n\n**Formula:**\n```\nHealth Score Coverage = Customers with health score / Total customers × 100\n```\n\n**Target:** 100% of managed accounts, or all accounts above a revenue threshold.\n\n**What it tells you:** Whether you have visibility into customer health.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"At-Risk Customer Rate","slug":"at-risk-customer-rate","definition":"The percentage of customers flagged as at-risk.","formulas":["At-Risk Rate = Customers with health score < 40 / Total scored customers × 100"],"benchmarks":"- Below 5%: Healthy portfolio\n- 5-10%: Normal, requires attention\n- 10-20%: Elevated risk\n- Above 20%: Portfolio in trouble","insight":null,"commonMistakes":null,"sources":[],"department":"Customer Success","category":"Health Metrics","aliases":[],"rawMarkdown":"### At-Risk Customer Rate\n\n**Definition:** The percentage of customers flagged as at-risk.\n\n**Formula:**\n```\nAt-Risk Rate = Customers with health score < 40 / Total scored customers × 100\n```\n\n**Benchmarks:**\n- Below 5%: Healthy portfolio\n- 5-10%: Normal, requires attention\n- 10-20%: Elevated risk\n- Above 20%: Portfolio in trouble\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quarterly Business Review (QBR) Completion Rate","slug":"quarterly-business-review-qbr-completion-rate","definition":"The percentage of eligible accounts that completed a QBR.","formulas":["QBR Completion = QBRs completed / QBRs scheduled × 100"],"benchmarks":null,"insight":"Are you maintaining strategic relationships?","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Engagement Metrics","aliases":["QBR"],"rawMarkdown":"### Quarterly Business Review (QBR) Completion Rate\n\n**Definition:** The percentage of eligible accounts that completed a QBR.\n\n**Formula:**\n```\nQBR Completion = QBRs completed / QBRs scheduled × 100\n```\n\n**Target:** 90%+ for enterprise/strategic accounts\n\n**What it tells you:** Are you maintaining strategic relationships?\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Executive Sponsor Coverage","slug":"executive-sponsor-coverage","definition":"The percentage of accounts with an identified and engaged executive sponsor.","formulas":["Exec Sponsor Coverage = Accounts with active exec sponsor / Total managed accounts × 100"],"benchmarks":null,"insight":"Do you have senior relationships? Predicts resilience during renewals.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Executive Sponsor Coverage\n\n**Definition:** The percentage of accounts with an identified and engaged executive sponsor.\n\n**Formula:**\n```\nExec Sponsor Coverage = Accounts with active exec sponsor / Total managed accounts × 100\n```\n\n**What it tells you:** Do you have senior relationships? Predicts resilience during renewals.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Contact Coverage","slug":"contact-coverage","definition":"Average number of engaged contacts per account.","formulas":["Contact Coverage = Total engaged contacts / Number of accounts"],"benchmarks":null,"insight":"Are you single-threaded? Multi-threading reduces churn risk.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Contact Coverage\n\n**Definition:** Average number of engaged contacts per account.\n\n**Formula:**\n```\nContact Coverage = Total engaged contacts / Number of accounts\n```\n\n**Target:** 3+ contacts per account\n\n**What it tells you:** Are you single-threaded? Multi-threading reduces churn risk.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Expansion Revenue Rate","slug":"expansion-revenue-rate","definition":"Expansion MRR as a percentage of beginning MRR.","formulas":["Expansion Rate = Expansion MRR / Beginning MRR × 100"],"benchmarks":"- Below 10%: Limited expansion motion\n- 10-20%: Moderate, typical for early-stage\n- 20-30%: Strong, solid benchmark for growth stage\n- 30-40%: Excellent, typical at $15M+ ARR\n- 40%+: Exceptional, common in usage-based or high-ARPA models","insight":"Are you growing existing customers? As companies mature, expansion becomes the dominant growth driver.","commonMistakes":null,"sources":["Ordway: New vs Expansion ARR: https://ordwaylabs.com/blog/new-versus-expansion-arr/","High Alpha: 2025 SaaS Benchmarks: https://www.highalpha.com/saas-benchmarks","ChartMogul: SaaS Benchmarks Report: https://chartmogul.com/reports/saas-benchmarks-report/"],"department":"Customer Success","category":"Expansion Metrics","aliases":[],"rawMarkdown":"### Expansion Revenue Rate\n\n**Definition:** Expansion MRR as a percentage of beginning MRR.\n\n**Formula:**\n```\nExpansion Rate = Expansion MRR / Beginning MRR × 100\n```\n\n**Benchmarks:**\n- Below 10%: Limited expansion motion\n- 10-20%: Moderate, typical for early-stage\n- 20-30%: Strong, solid benchmark for growth stage\n- 30-40%: Excellent, typical at $15M+ ARR\n- 40%+: Exceptional, common in usage-based or high-ARPA models\n\n**By company stage:**\n- Early stage (<$1M ARR): ~10% from expansion (90% new customers)\n- Growth stage ($1M-$20M ARR): 20-30% from expansion\n- Scale stage ($20M+ ARR): 35%+ from expansion\n- Mature ($200M+ ARR): Up to 66% from expansion\n\n**What it tells you:** Are you growing existing customers? As companies mature, expansion becomes the dominant growth driver.\n\n**Sources:**\n- [Ordway: New vs Expansion ARR](https://ordwaylabs.com/blog/new-versus-expansion-arr/)\n- [High Alpha: 2025 SaaS Benchmarks](https://www.highalpha.com/saas-benchmarks)\n- [ChartMogul: SaaS Benchmarks Report](https://chartmogul.com/reports/saas-benchmarks-report/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Upsell Rate","slug":"upsell-rate","definition":"The percentage of eligible customers who upgraded.","formulas":["Upsell Rate = Customers who upgraded / Customers eligible for upgrade × 100"],"benchmarks":null,"insight":"Upgrade conversion effectiveness.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Expansion Metrics","aliases":[],"rawMarkdown":"### Upsell Rate\n\n**Definition:** The percentage of eligible customers who upgraded.\n\n**Formula:**\n```\nUpsell Rate = Customers who upgraded / Customers eligible for upgrade × 100\n```\n\n**What it tells you:** Upgrade conversion effectiveness.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cross-sell Rate","slug":"cross-sell-rate","definition":"The percentage of customers who purchased additional products.","formulas":["Cross-sell Rate = Customers who bought additional product / Total customers × 100"],"benchmarks":null,"insight":"Multi-product adoption and stickiness.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Expansion Metrics","aliases":[],"rawMarkdown":"### Cross-sell Rate\n\n**Definition:** The percentage of customers who purchased additional products.\n\n**Formula:**\n```\nCross-sell Rate = Customers who bought additional product / Total customers × 100\n```\n\n**What it tells you:** Multi-product adoption and stickiness.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Renewal Rate","slug":"renewal-rate","definition":"The percentage of contracts renewed at term.","formulas":["Renewal Rate = Contracts renewed / Contracts up for renewal × 100","Renewal Rate = ARR renewed / ARR up for renewal × 100"],"benchmarks":"- Below 85%: Concerning, indicates retention problem\n- 85-90%: Below average\n- 90-95%: Good (90% is the industry norm per 2025 data)\n- 95%+: Excellent, top-quartile performance","insight":null,"commonMistakes":null,"sources":["Maxio: 2025 B2B SaaS Benchmarks: https://www.maxio.com/resources/2025-saas-benchmarks-report","Recurly: Churn Rate Benchmarks: https://recurly.com/research/churn-rate-benchmarks/"],"department":"Customer Success","category":"Renewal Metrics","aliases":[],"rawMarkdown":"### Renewal Rate\n\n**Definition:** The percentage of contracts renewed at term.\n\n**Formula (by logo):**\n```\nRenewal Rate = Contracts renewed / Contracts up for renewal × 100\n```\n\n**Formula (by value):**\n```\nRenewal Rate = ARR renewed / ARR up for renewal × 100\n```\n\nAlways specify logo or value basis.\n\n**Benchmarks:**\n- Below 85%: Concerning, indicates retention problem\n- 85-90%: Below average\n- 90-95%: Good (90% is the industry norm per 2025 data)\n- 95%+: Excellent, top-quartile performance\n\n**By segment:**\n- SMB: 85%+ is good (higher churn expected)\n- Mid-market: 90%+ is good\n- Enterprise: 95%+ expected\n\n**Sources:**\n- [Maxio: 2025 B2B SaaS Benchmarks](https://www.maxio.com/resources/2025-saas-benchmarks-report)\n- [Recurly: Churn Rate Benchmarks](https://recurly.com/research/churn-rate-benchmarks/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Renewal Forecast Accuracy","slug":"renewal-forecast-accuracy","definition":"How accurately renewals were predicted.","formulas":["Forecast Accuracy = 1 - |Forecasted renewals - Actual renewals| / Actual renewals"],"benchmarks":null,"insight":"Can you predict revenue? Important for planning.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Renewal Metrics","aliases":[],"rawMarkdown":"### Renewal Forecast Accuracy\n\n**Definition:** How accurately renewals were predicted.\n\n**Formula:**\n```\nForecast Accuracy = 1 - |Forecasted renewals - Actual renewals| / Actual renewals\n```\n\n**Target:** >90%\n\n**What it tells you:** Can you predict revenue? Important for planning.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Days to Renewal","slug":"days-to-renewal","definition":"Average number of days until upcoming renewals.","formulas":[],"benchmarks":null,"insight":"Renewal workload distribution. If clustered, capacity may be strained.","commonMistakes":null,"sources":[],"department":"Customer Success","category":"Renewal Metrics","aliases":[],"rawMarkdown":"### Days to Renewal\n\n**Definition:** Average number of days until upcoming renewals.\n\n**What it tells you:** Renewal workload distribution. If clustered, capacity may be strained.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Accounts per CSM","slug":"accounts-per-csm","definition":"The number of accounts assigned to each Customer Success Manager.","formulas":["Accounts per CSM = Total managed accounts / Number of CSMs"],"benchmarks":"| Model | Accounts per CSM | Typical ACV |\n|-------|------------------|-------------|\n| High-touch Enterprise | 10-50 (median ~22) | $100K+ |\n| Mid-touch | 50-100 (median ~49) | $25K-$100K |\n| Low-touch/SMB | 100-250 | $5K-$25K |\n| Tech-touch/Digital | 300-500+ | <$5K |","insight":null,"commonMistakes":null,"sources":["Gainsight: CSM Ratio Benchmarks: https://www.gainsight.com/blog/gainsight-horizon-ai-labs-what-is-the-right-csm-to-customer-ratio/","Vitally: CSM to Customer Ratio: https://www.vitally.io/post/what-is-the-golden-ratio-of-customer-success-managers-to-customers","ChurnZero: CSM Coverage Ratio: https://churnzero.com/blog/customer-success-manager-coverage-ratio-arr/"],"department":"Customer Success","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Accounts per CSM\n\n**Definition:** The number of accounts assigned to each Customer Success Manager.\n\n**Formula:**\n```\nAccounts per CSM = Total managed accounts / Number of CSMs\n```\n\n**Benchmarks by touch model:**\n| Model | Accounts per CSM | Typical ACV |\n|-------|------------------|-------------|\n| High-touch Enterprise | 10-50 (median ~22) | $100K+ |\n| Mid-touch | 50-100 (median ~49) | $25K-$100K |\n| Low-touch/SMB | 100-250 | $5K-$25K |\n| Tech-touch/Digital | 300-500+ | <$5K |\n\n**By account value:**\n- <$25K ACV: Up to 200 accounts\n- $25K-$100K: 100-150 accounts\n- $100K-$500K: 50-100 accounts\n- $500K+: 10-25 accounts (high-touch required)\n\n**Important:** There's no universal standard. The right ratio depends on product complexity, customer needs and engagement model. Calculate based on capacity: reserve ~2/3 of CSM time for customer-facing work.\n\n**Sources:**\n- [Gainsight: CSM Ratio Benchmarks](https://www.gainsight.com/blog/gainsight-horizon-ai-labs-what-is-the-right-csm-to-customer-ratio/)\n- [Vitally: CSM to Customer Ratio](https://www.vitally.io/post/what-is-the-golden-ratio-of-customer-success-managers-to-customers)\n- [ChurnZero: CSM Coverage Ratio](https://churnzero.com/blog/customer-success-manager-coverage-ratio-arr/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"ARR per CSM","slug":"arr-per-csm","definition":"Total ARR managed by each CSM.","formulas":["ARR per CSM = Total managed ARR / Number of CSMs"],"benchmarks":"| Segment | ARR per CSM |\n|---------|-------------|\n| Enterprise | $2M-$5M (69% manage >$2M) |\n| Mid-market | $2M-$5M (spread across more accounts) |\n| SMB | $1M-$2M |","insight":"CSM productivity and capacity planning.","commonMistakes":null,"sources":["Gainsight: CS Team Planning & Cost Benchmarks: https://www.gainsight.com/blog/customer-success-team-planning-cost-benchmarks/","ChurnZero: CS Capacity Planning: https://churnzero.com/blog/customer-success-capacity-planning-and-budget-guide/","Tomasz Tunguz: How Much ARR Can a CSM Manage?: https://tomtunguz.com/how-much-arr-can-a-csm-manage/"],"department":"Customer Success","category":"Productivity Metrics","aliases":["ARR"],"rawMarkdown":"### ARR per CSM\n\n**Definition:** Total ARR managed by each CSM.\n\n**Formula:**\n```\nARR per CSM = Total managed ARR / Number of CSMs\n```\n\n**Benchmarks:**\n| Segment | ARR per CSM |\n|---------|-------------|\n| Enterprise | $2M-$5M (69% manage >$2M) |\n| Mid-market | $2M-$5M (spread across more accounts) |\n| SMB | $1M-$2M |\n\n**Distribution (Gainsight data):**\n- Median (50th percentile): $1.4M\n- Top quartile (75th percentile): $4.2M\n\n**Common rule of thumb:** Hire 1 CSM per $2M ARR.\n\n**CS team cost benchmark:** Customer Success should cost 5-15% of ARR (under 10% for companies >$100M ARR).\n\n**What it tells you:** CSM productivity and capacity planning.\n\n**Sources:**\n- [Gainsight: CS Team Planning & Cost Benchmarks](https://www.gainsight.com/blog/customer-success-team-planning-cost-benchmarks/)\n- [ChurnZero: CS Capacity Planning](https://churnzero.com/blog/customer-success-capacity-planning-and-budget-guide/)\n- [Tomasz Tunguz: How Much ARR Can a CSM Manage?](https://tomtunguz.com/how-much-arr-can-a-csm-manage/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Uptime (Availability)","slug":"uptime-availability","definition":"The percentage of time the service is operational.","formulas":["Uptime = (Total time - Downtime) / Total time × 100"],"benchmarks":"- 99.0%: ~7.3 hours downtime (unacceptable for most SaaS)\n- 99.9%: ~43 minutes downtime (three nines)\n- 99.95%: ~22 minutes downtime (typical SLA)\n- 99.99%: ~4.3 minutes downtime (four nines, high reliability)","insight":"Basic platform reliability.","commonMistakes":["Excluding \"scheduled maintenance\" (customers don't care why it's down)","Measuring only core service, not dependencies","Not weighting by traffic/usage"],"sources":[],"department":"Engineering","category":"Reliability Metrics","aliases":[],"rawMarkdown":"### Uptime (Availability)\n\n**Definition:** The percentage of time the service is operational.\n\n**Formula:**\n```\nUptime = (Total time - Downtime) / Total time × 100\n```\n\n**Benchmarks (Monthly):**\n- 99.0%: ~7.3 hours downtime (unacceptable for most SaaS)\n- 99.9%: ~43 minutes downtime (three nines)\n- 99.95%: ~22 minutes downtime (typical SLA)\n- 99.99%: ~4.3 minutes downtime (four nines, high reliability)\n\n**What it tells you:** Basic platform reliability.\n\n**Common mistakes:**\n- Excluding \"scheduled maintenance\" (customers don't care why it's down)\n- Measuring only core service, not dependencies\n- Not weighting by traffic/usage\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"SLA Adherence","slug":"sla-adherence","definition":"Percentage of time SLA commitments were met.","formulas":["SLA Adherence = Periods meeting SLA / Total periods × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Reliability Metrics","aliases":["SLA"],"rawMarkdown":"### SLA Adherence\n\n**Definition:** Percentage of time SLA commitments were met.\n\n**Formula:**\n```\nSLA Adherence = Periods meeting SLA / Total periods × 100\n```\n\n**Target:** 100% (SLA breaches have contractual and trust implications)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Error Rate","slug":"error-rate","definition":"Percentage of requests that result in errors.","formulas":["Error Rate = Error responses (5xx) / Total requests × 100"],"benchmarks":"- Below 0.1%: Excellent\n- 0.1-0.5%: Good\n- 0.5-1%: Acceptable\n- Above 1%: Needs attention","insight":"Service reliability from user perspective.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Reliability Metrics","aliases":[],"rawMarkdown":"### Error Rate\n\n**Definition:** Percentage of requests that result in errors.\n\n**Formula:**\n```\nError Rate = Error responses (5xx) / Total requests × 100\n```\n\n**Benchmarks:**\n- Below 0.1%: Excellent\n- 0.1-0.5%: Good\n- 0.5-1%: Acceptable\n- Above 1%: Needs attention\n\n**What it tells you:** Service reliability from user perspective.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Latency (Response Time)","slug":"latency-response-time","definition":"Time taken to respond to requests.","formulas":["P50 Latency = Median response time\nP95 Latency = 95th percentile response time\nP99 Latency = 99th percentile response time"],"benchmarks":"- P50: < 100ms\n- P95: < 500ms\n- P99: < 1000ms","insight":"User experience. Slow responses impact satisfaction and conversion.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Reliability Metrics","aliases":[],"rawMarkdown":"### Latency (Response Time)\n\n**Definition:** Time taken to respond to requests.\n\n**Formula:**\n```\nP50 Latency = Median response time\nP95 Latency = 95th percentile response time\nP99 Latency = 99th percentile response time\n```\n\nAlways report P95 or P99, not averages (averages hide tail latency).\n\n**Benchmarks (API):**\n- P50: < 100ms\n- P95: < 500ms\n- P99: < 1000ms\n\n**What it tells you:** User experience. Slow responses impact satisfaction and conversion.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Incident Count","slug":"incident-count","definition":"Number of incidents in a period.","formulas":["Incident Count = Total incidents reported"],"benchmarks":null,"insight":"System stability. Trend matters.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Incident Metrics","aliases":[],"rawMarkdown":"### Incident Count\n\n**Definition:** Number of incidents in a period.\n\n**Formula:**\n```\nIncident Count = Total incidents reported\n```\n\nCategorize by severity:\n- SEV1/P1: Critical, full outage\n- SEV2/P2: Major, significant degradation\n- SEV3/P3: Minor, limited impact\n\n**What it tells you:** System stability. Trend matters.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Mean Time to Detect (MTTD)","slug":"mean-time-to-detect-mttd","definition":"Time from incident start to detection.","formulas":["MTTD = Average of (Detection time - Incident start time)"],"benchmarks":null,"insight":"Monitoring and alerting effectiveness.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Incident Metrics","aliases":["MTTD"],"rawMarkdown":"### Mean Time to Detect (MTTD)\n\n**Definition:** Time from incident start to detection.\n\n**Formula:**\n```\nMTTD = Average of (Detection time - Incident start time)\n```\n\n**Target:** < 5 minutes for critical services\n\n**What it tells you:** Monitoring and alerting effectiveness.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Mean Time to Acknowledge (MTTA)","slug":"mean-time-to-acknowledge-mtta","definition":"Time from alert to human acknowledgment.","formulas":["MTTA = Average of (Acknowledgment time - Alert time)"],"benchmarks":null,"insight":"On-call responsiveness.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Incident Metrics","aliases":["MTTA"],"rawMarkdown":"### Mean Time to Acknowledge (MTTA)\n\n**Definition:** Time from alert to human acknowledgment.\n\n**Formula:**\n```\nMTTA = Average of (Acknowledgment time - Alert time)\n```\n\n**Target:** < 15 minutes\n\n**What it tells you:** On-call responsiveness.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Mean Time to Resolve (MTTR)","slug":"mean-time-to-resolve-mttr","definition":"Time from incident start to resolution.","formulas":["MTTR = Average of (Resolution time - Incident start time)"],"benchmarks":"- SEV1: < 1 hour\n- SEV2: < 4 hours\n- SEV3: < 24 hours","insight":"Incident response capability.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Incident Metrics","aliases":["MTTR"],"rawMarkdown":"### Mean Time to Resolve (MTTR)\n\n**Definition:** Time from incident start to resolution.\n\n**Formula:**\n```\nMTTR = Average of (Resolution time - Incident start time)\n```\n\n**Benchmarks:**\n- SEV1: < 1 hour\n- SEV2: < 4 hours\n- SEV3: < 24 hours\n\n**What it tells you:** Incident response capability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Change Failure Rate","slug":"change-failure-rate","definition":"Percentage of deployments that cause incidents.","formulas":["Change Failure Rate = Deployments causing incidents / Total deployments × 100"],"benchmarks":"- Elite: 0-15%\n- High: 16-30%\n- Medium: 31-45%\n- Low: 46-60%","insight":"Deployment quality and release process health.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Incident Metrics","aliases":[],"rawMarkdown":"### Change Failure Rate\n\n**Definition:** Percentage of deployments that cause incidents.\n\n**Formula:**\n```\nChange Failure Rate = Deployments causing incidents / Total deployments × 100\n```\n\n**Benchmarks (DORA):**\n- Elite: 0-15%\n- High: 16-30%\n- Medium: 31-45%\n- Low: 46-60%\n\n**What it tells you:** Deployment quality and release process health.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Deployment Frequency","slug":"deployment-frequency","definition":"How often code is deployed to production.","formulas":["Deployment Frequency = Deployments / Time period"],"benchmarks":"- Elite: On-demand or multiple times per day\n- High: Once per day to once per week\n- Medium: Once per week to once per month\n- Low: Less than once per month","insight":"Ability to deliver value quickly.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Delivery Metrics (DORA)","aliases":[],"rawMarkdown":"### Deployment Frequency\n\n**Definition:** How often code is deployed to production.\n\n**Formula:**\n```\nDeployment Frequency = Deployments / Time period\n```\n\n**Benchmarks (DORA):**\n- Elite: On-demand or multiple times per day\n- High: Once per day to once per week\n- Medium: Once per week to once per month\n- Low: Less than once per month\n\n**What it tells you:** Ability to deliver value quickly.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Lead Time for Changes","slug":"lead-time-for-changes","definition":"Time from code commit to production deployment.","formulas":["Lead Time = Median of (Deploy time - Commit time)"],"benchmarks":"- Elite: Less than 1 day\n- High: 1 day to 1 week\n- Medium: 1 week to 1 month\n- Low: 1 month to 6 months","insight":"Development and release pipeline efficiency.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Delivery Metrics (DORA)","aliases":[],"rawMarkdown":"### Lead Time for Changes\n\n**Definition:** Time from code commit to production deployment.\n\n**Formula:**\n```\nLead Time = Median of (Deploy time - Commit time)\n```\n\n**Benchmarks (DORA):**\n- Elite: Less than 1 day\n- High: 1 day to 1 week\n- Medium: 1 week to 1 month\n- Low: 1 month to 6 months\n\n**What it tells you:** Development and release pipeline efficiency.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Mean Time to Recovery (MTTR)","slug":"mean-time-to-recovery-mttr","definition":"Time to restore service after a failure.","formulas":["MTTR = Average of (Recovery time - Failure time)"],"benchmarks":"- Elite: Less than 1 hour\n- High: Less than 1 day\n- Medium: 1 day to 1 week\n- Low: More than 1 week","insight":"Resilience and recovery capability.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Delivery Metrics (DORA)","aliases":["MTTR"],"rawMarkdown":"### Mean Time to Recovery (MTTR)\n\n**Definition:** Time to restore service after a failure.\n\n**Formula:**\n```\nMTTR = Average of (Recovery time - Failure time)\n```\n\n**Benchmarks (DORA):**\n- Elite: Less than 1 hour\n- High: Less than 1 day\n- Medium: 1 day to 1 week\n- Low: More than 1 week\n\n**What it tells you:** Resilience and recovery capability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Infrastructure Utilization","slug":"infrastructure-utilization","definition":"Percentage of provisioned capacity being used.","formulas":["Utilization = Actual usage / Provisioned capacity × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Capacity Metrics","aliases":[],"rawMarkdown":"### Infrastructure Utilization\n\n**Definition:** Percentage of provisioned capacity being used.\n\n**Formula:**\n```\nUtilization = Actual usage / Provisioned capacity × 100\n```\n\nMeasure for CPU, memory, storage, network.\n\n**Targets:**\n- Below 40%: Over-provisioned, wasting money\n- 40-70%: Healthy headroom\n- 70-85%: Efficient, monitoring needed\n- Above 85%: At risk, scale soon\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Infrastructure Cost per Customer","slug":"infrastructure-cost-per-customer","definition":"Total infrastructure cost divided by active customers.","formulas":["Cost per Customer = Total infrastructure cost / Active customers"],"benchmarks":null,"insight":"Unit economics of delivery. Should decrease or stay flat as you scale.","commonMistakes":null,"sources":[],"department":"Engineering","category":"Capacity Metrics","aliases":[],"rawMarkdown":"### Infrastructure Cost per Customer\n\n**Definition:** Total infrastructure cost divided by active customers.\n\n**Formula:**\n```\nCost per Customer = Total infrastructure cost / Active customers\n```\n\n**What it tells you:** Unit economics of delivery. Should decrease or stay flat as you scale.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Headroom","slug":"headroom","definition":"Available capacity before scaling is required.","formulas":["Headroom = (Max capacity - Current usage) / Max capacity × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Capacity Metrics","aliases":[],"rawMarkdown":"### Headroom\n\n**Definition:** Available capacity before scaling is required.\n\n**Formula:**\n```\nHeadroom = (Max capacity - Current usage) / Max capacity × 100\n```\n\n**Target:** Maintain 20-30% headroom for traffic spikes.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Vulnerability Count","slug":"vulnerability-count","definition":"Number of known vulnerabilities in systems.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Security Metrics","aliases":[],"rawMarkdown":"### Vulnerability Count\n\n**Definition:** Number of known vulnerabilities in systems.\n\n**Categorize by severity:** Critical, High, Medium, Low\n\n**Targets:**\n- Critical: 0 (fix immediately)\n- High: < 10 (fix within days)\n- Medium: < 50 (fix within weeks)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Patch","slug":"time-to-patch","definition":"Time from vulnerability disclosure to patch deployment.","formulas":["Time to Patch = Average of (Patch deploy time - Disclosure time)"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Security Metrics","aliases":[],"rawMarkdown":"### Time to Patch\n\n**Definition:** Time from vulnerability disclosure to patch deployment.\n\n**Formula:**\n```\nTime to Patch = Average of (Patch deploy time - Disclosure time)\n```\n\n**Targets:**\n- Critical: < 24 hours\n- High: < 7 days\n- Medium: < 30 days\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Security Incident Count","slug":"security-incident-count","definition":"Number of security incidents in a period.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Engineering","category":"Security Metrics","aliases":[],"rawMarkdown":"### Security Incident Count\n\n**Definition:** Number of security incidents in a period.\n\n**Target:** Zero breaches. Track and reduce attempted attacks.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue (GAAP)","slug":"revenue-gaap","definition":"Recognized revenue according to accounting standards.","formulas":["Revenue = Recognized revenue in period (per ASC 606)"],"benchmarks":null,"insight":"Actual earned revenue for the period.","commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":["GAAP"],"rawMarkdown":"### Revenue (GAAP)\n\n**Definition:** Recognized revenue according to accounting standards.\n\n**Formula:**\n```\nRevenue = Recognized revenue in period (per ASC 606)\n```\n\n**Note:** Different from bookings or billings. Revenue is recognized as service is delivered.\n\n**What it tells you:** Actual earned revenue for the period.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bookings","slug":"bookings","definition":"Total contract value signed in a period.","formulas":["Bookings = Sum of total contract value for deals signed in period"],"benchmarks":null,"insight":"Sales output and future revenue committed.","commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Bookings\n\n**Definition:** Total contract value signed in a period.\n\n**Formula:**\n```\nBookings = Sum of total contract value for deals signed in period\n```\n\n**Types:**\n- New Bookings: From new customers\n- Expansion Bookings: Upgrades from existing customers\n- Renewal Bookings: Contract renewals\n\n**What it tells you:** Sales output and future revenue committed.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Billings","slug":"billings","definition":"Amounts invoiced in a period.","formulas":["Billings = Total invoiced amount in period"],"benchmarks":null,"insight":"Cash coming in (or expected).","commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Billings\n\n**Definition:** Amounts invoiced in a period.\n\n**Formula:**\n```\nBillings = Total invoiced amount in period\n```\n\n**What it tells you:** Cash coming in (or expected).\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"ARR / MRR","slug":"arr-mrr","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":["ARR"],"rawMarkdown":"### ARR / MRR\n\nSee [Core Metrics](core.md) for full definitions.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Deferred Revenue","slug":"deferred-revenue","definition":"Cash received for services not yet delivered.","formulas":["Deferred Revenue = Billings collected - Revenue recognized"],"benchmarks":null,"insight":"Future revenue already paid for. A liability on balance sheet.","commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Deferred Revenue\n\n**Definition:** Cash received for services not yet delivered.\n\n**Formula:**\n```\nDeferred Revenue = Billings collected - Revenue recognized\n```\n\n**What it tells you:** Future revenue already paid for. A liability on balance sheet.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue per Employee","slug":"revenue-per-employee","definition":"Total revenue divided by headcount.","formulas":["Revenue per Employee = ARR / Total employees"],"benchmarks":"- Below $100K: Early stage or overstaffed\n- $100K-$200K: Growing\n- $200K-$300K: Efficient\n- Above $300K: Highly efficient","insight":"Overall company productivity.","commonMistakes":null,"sources":[],"department":"Finance","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Revenue per Employee\n\n**Definition:** Total revenue divided by headcount.\n\n**Formula:**\n```\nRevenue per Employee = ARR / Total employees\n```\n\n**Benchmarks:**\n- Below $100K: Early stage or overstaffed\n- $100K-$200K: Growing\n- $200K-$300K: Efficient\n- Above $300K: Highly efficient\n\n**What it tells you:** Overall company productivity.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":null},{"name":"Gross Margin","slug":"gross-margin","definition":"Revenue minus cost of goods sold (COGS), as a percentage of revenue. Measures profitability after direct delivery costs.","formulas":["Gross Margin = (Revenue (GAAP) - COGS) / Revenue (GAAP) × 100","GM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100","GM-M = (Revenue − COGS) / Revenue × 100","GM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100"],"benchmarks":"- Below 60%: Low, may indicate infrastructure-heavy or services-heavy business\n- 60-70%: Moderate (Seed/Series A acceptable while scaling)\n- 70-80%: Good, typical for SaaS (Most VCs require 70%+ for investment)\n- 75-80%: Series B+ expected, attractive to investors\n- 80-85%: Best-in-class (commands valuation premium)","insight":"How much of each dollar of revenue is available after delivery costs. Higher margins = more scalable business.","commonMistakes":null,"sources":["The SaaS CFO: How to Calculate SaaS Gross Margin: https://www.thesaascfo.com/how-to-calculate-saas-gross-margin/","CloudZero: SaaS Gross Margin: https://www.cloudzero.com/blog/saas-gross-margin/","Drivetrain: SaaS Gross Margin: https://www.drivetrain.ai/strategic-finance-glossary/saas-gross-margin"],"department":"Finance","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Gross Margin\n\nSee [Core Metrics](core.md#gross-margin) for full definition.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":null},{"name":"Operating Margin (EBIT Margin)","slug":"operating-margin-ebit-margin","definition":"Operating income as a percentage of revenue.","formulas":["Operating Margin = Operating Income / Revenue × 100"],"benchmarks":"- Below -50%: Heavy investment phase\n- -50% to 0%: Growth mode\n- 0-20%: Path to profitability\n- Above 20%: Profitable and efficient","insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Operating Margin (EBIT Margin)\n\n**Definition:** Operating income as a percentage of revenue.\n\n**Formula:**\n```\nOperating Margin = Operating Income / Revenue × 100\n```\n\nOperating Income = Revenue - COGS - Operating Expenses\n\n**Benchmarks:**\n- Below -50%: Heavy investment phase\n- -50% to 0%: Growth mode\n- 0-20%: Path to profitability\n- Above 20%: Profitable and efficient\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"EBITDA Margin","slug":"ebitda-margin","definition":"Earnings before interest, taxes, depreciation and amortization as a percentage of revenue.","formulas":["EBITDA Margin = EBITDA / Revenue × 100"],"benchmarks":null,"insight":"Operational profitability before non-cash charges.","commonMistakes":null,"sources":[],"department":"Finance","category":"Profitability Metrics","aliases":["EBITDA"],"rawMarkdown":"### EBITDA Margin\n\n**Definition:** Earnings before interest, taxes, depreciation and amortization as a percentage of revenue.\n\n**Formula:**\n```\nEBITDA Margin = EBITDA / Revenue × 100\n```\n\n**What it tells you:** Operational profitability before non-cash charges.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Net Income Margin","slug":"net-income-margin","definition":"Net income as a percentage of revenue.","formulas":["Net Income Margin = Net Income / Revenue × 100"],"benchmarks":null,"insight":"Bottom line profitability.","commonMistakes":null,"sources":[],"department":"Finance","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Net Income Margin\n\n**Definition:** Net income as a percentage of revenue.\n\n**Formula:**\n```\nNet Income Margin = Net Income / Revenue × 100\n```\n\n**What it tells you:** Bottom line profitability.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Rule of 40","slug":"rule-of-40","definition":"A heuristic that balances growth and profitability. A healthy SaaS company's growth rate plus profit margin should equal 40% or more.","formulas":["Rule of 40 = ARR Growth Rate (YoY %) + EBITDA Margin (%)"],"benchmarks":"- Below 20: Struggling (Median public SaaS Q1 2025: 12-15%)\n- 20-40: Developing (Median mid-2024: 34%)\n- 40+: Healthy balance of growth and profitability\n- 60+: Elite (top quartile: 45%+ growth component)","insight":"Whether you're balancing growth and profitability appropriately. You can grow fast and lose money, or grow slow and be profitable, but the sum should hit 40.","commonMistakes":null,"sources":["Wall Street Prep: Rule of 40: https://www.wallstreetprep.com/knowledge/rule-of-40/","The SaaS CFO: Rule of 40: https://www.thesaascfo.com/rule-of-40-saas/","Corporate Finance Institute: Rule of 40: https://corporatefinanceinstitute.com/resources/valuation/rule-of-40/"],"department":"Finance","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Rule of 40\n\nSee [Core Metrics](core.md#rule-of-40) for full definition.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":null},{"name":"Cash Burn Rate","slug":"cash-burn-rate","definition":"Net cash consumed per month.","formulas":["Burn Rate = (Cash at start of period - Cash at end of period) / Months in period"],"benchmarks":null,"insight":"How fast cash is being consumed.","commonMistakes":null,"sources":[],"department":"Finance","category":"Cash Metrics","aliases":[],"rawMarkdown":"### Cash Burn Rate\n\n**Definition:** Net cash consumed per month.\n\n**Formula:**\n```\nBurn Rate = (Cash at start of period - Cash at end of period) / Months in period\n```\n\n**What it tells you:** How fast cash is being consumed.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cash Runway","slug":"cash-runway","definition":"Time until cash runs out at current burn rate.","formulas":["Runway = Current cash / Monthly burn rate"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Cash Metrics","aliases":[],"rawMarkdown":"### Cash Runway\n\n**Definition:** Time until cash runs out at current burn rate.\n\n**Formula:**\n```\nRunway = Current cash / Monthly burn rate\n```\n\nMeasured in months.\n\n**Targets:**\n- Below 6 months: Critical, fundraise immediately\n- 6-12 months: Urgent attention needed\n- 12-18 months: Planning window\n- Above 18 months: Comfortable\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Free Cash Flow (FCF)","slug":"free-cash-flow-fcf","definition":"Cash generated from operations minus capital expenditures.","formulas":["FCF = Operating cash flow - Capital expenditures"],"benchmarks":null,"insight":"Cash available for growth, debt repayment or distribution.","commonMistakes":null,"sources":[],"department":"Finance","category":"Cash Metrics","aliases":["FCF"],"rawMarkdown":"### Free Cash Flow (FCF)\n\n**Definition:** Cash generated from operations minus capital expenditures.\n\n**Formula:**\n```\nFCF = Operating cash flow - Capital expenditures\n```\n\n**What it tells you:** Cash available for growth, debt repayment or distribution.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Free Cash Flow Margin","slug":"free-cash-flow-margin","definition":"FCF as a percentage of revenue.","formulas":["FCF Margin = Free Cash Flow / Revenue × 100"],"benchmarks":"- Below -20%: Heavy investment\n- -20% to 0%: Growth mode\n- 0-10%: Cash flow positive\n- Above 10%: Strong cash generation","insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Cash Metrics","aliases":[],"rawMarkdown":"### Free Cash Flow Margin\n\n**Definition:** FCF as a percentage of revenue.\n\n**Formula:**\n```\nFCF Margin = Free Cash Flow / Revenue × 100\n```\n\n**Benchmarks:**\n- Below -20%: Heavy investment\n- -20% to 0%: Growth mode\n- 0-10%: Cash flow positive\n- Above 10%: Strong cash generation\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"CAC Payback Period","slug":"cac-payback-period","definition":"The number of months required to recover the cost of acquiring a customer. Also called \"Months to Recover CAC\" or \"Time to Recover CAC.\"","formulas":["CAC Payback = CAC / (ARPA × Gross Margin)"],"benchmarks":"- Under 12 months: Good, investor-friendly target (best-in-class)\n- 12-18 months: Acceptable (Median 2024: 18-20 months)\n- 18-24 months: Concerning for most segments\n- Over 24 months: Requires attention","insight":"How quickly customers become profitable. Critical for cash management and determining sustainable growth rate.","commonMistakes":null,"sources":["Wall Street Prep: CAC Payback Period: https://www.wallstreetprep.com/knowledge/cac-payback-period/","Maxio: CAC Payback: https://www.maxio.com/saaspedia/cac-payback","Corporate Finance Institute: CAC Payback Period: https://corporatefinanceinstitute.com/resources/valuation/cac-payback-period/"],"department":"Finance","category":"Efficiency Metrics","aliases":["CAC"],"rawMarkdown":"### CAC Payback Period\n\nSee [Core Metrics](core.md#cac-payback-period) for full definition.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"LTV:CAC Ratio","slug":"ltvcac-ratio","definition":"The ratio of customer lifetime value to acquisition cost. Measures the return on investment from sales and marketing spend.","formulas":["LTV:CAC = LTV / CAC"],"benchmarks":"- Below 1:1: Losing money on every customer\n- 1:1 to 2:1: Breaking even or marginal, concerning to investors\n- 3:1 to 4:1: Industry standard, healthy sustainable growth (Median B2B SaaS: 3.2:1)\n- 4:1 to 5:1: Strong business model\n- Above 5:1: Under-investing in growth; could be growing faster","insight":"Unit economics health. Are customers worth more than they cost to acquire?","commonMistakes":null,"sources":["Wall Street Prep: LTV/CAC Ratio: https://www.wallstreetprep.com/knowledge/ltv-cac-ratio/","SaaS Capital: LTV/CAC Benchmarks: https://www.saas-capital.com/blog-posts/ltv-to-cac-ratio/","Corporate Finance Institute: LTV/CAC: https://corporatefinanceinstitute.com/resources/valuation/ltv-cac-ratio/"],"department":"Finance","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### LTV:CAC Ratio\n\nSee [Core Metrics](core.md#ltvcac-ratio) for full definition.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Magic Number","slug":"magic-number","definition":"Sales efficiency metric measuring revenue generated per dollar of sales and marketing spend.","formulas":["Magic Number = (QoQ ARR growth) / (Prior quarter S&M spend)"],"benchmarks":"- Below 0.5: Inefficient, fix before scaling\n- 0.5-0.75: Acceptable\n- 0.75-1.0: Efficient (2024 median: 0.90)\n- Above 1.0: Very efficient, invest more aggressively","insight":"Whether sales and marketing investment is generating sufficient returns.","commonMistakes":null,"sources":["Benchmarkit: 2025 SaaS Metrics: https://www.benchmarkit.ai/2025benchmarks","Drivetrain: SaaS Magic Number: https://www.drivetrain.ai/strategic-finance-glossary/what-is-magic-number-saas-companies"],"department":"Finance","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Magic Number\n\n**Definition:** Sales efficiency metric measuring revenue generated per dollar of sales and marketing spend.\n\n**Formula:**\n```\nMagic Number = (QoQ ARR growth) / (Prior quarter S&M spend)\n```\n\n**Benchmarks:**\n- Below 0.5: Inefficient, fix before scaling\n- 0.5-0.75: Acceptable\n- 0.75-1.0: Efficient (2024 median: 0.90)\n- Above 1.0: Very efficient, invest more aggressively\n\n**What it tells you:** Whether sales and marketing investment is generating sufficient returns.\n\n**Sources:**\n- [Benchmarkit: 2025 SaaS Metrics](https://www.benchmarkit.ai/2025benchmarks)\n- [Drivetrain: SaaS Magic Number](https://www.drivetrain.ai/strategic-finance-glossary/what-is-magic-number-saas-companies)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Burn Multiple","slug":"burn-multiple","definition":"Net burn divided by net new ARR. Popularized by David Sacks.","formulas":["Burn Multiple = Net burn / Net new ARR"],"benchmarks":"- Below 1x: Excellent (top 10% of Series A companies)\n- 1.0-1.5x: Strong (top quartile)\n- 1.5-2x: Median, acceptable\n- 2.0-3x: Concerning, especially above $20M ARR\n- Above 3x: Critical, requires immediate attention","insight":"How much cash is being burned to generate each dollar of new ARR.","commonMistakes":null,"sources":["CFO Advisors: 2025 Burn Multiple Benchmarks: https://www.cfoadvisors.com/blog/2025-burn-multiple-benchmarks_-how-series-a-saas-startups-can-prove-capital-efficiency","Benchmarkit: SaaS Performance Metrics: https://www.benchmarkit.ai/2025benchmarks"],"department":"Finance","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Burn Multiple\n\n**Definition:** Net burn divided by net new ARR. Popularized by David Sacks.\n\n**Formula:**\n```\nBurn Multiple = Net burn / Net new ARR\n```\n\n**Benchmarks:**\n- Below 1x: Excellent (top 10% of Series A companies)\n- 1.0-1.5x: Strong (top quartile)\n- 1.5-2x: Median, acceptable\n- 2.0-3x: Concerning, especially above $20M ARR\n- Above 3x: Critical, requires immediate attention\n\n**Scale expectations:** Burn multiple should decrease as company scales. Target <1.0x by $25M-$50M ARR range.\n\n**What it tells you:** How much cash is being burned to generate each dollar of new ARR.\n\n**Sources:**\n- [CFO Advisors: 2025 Burn Multiple Benchmarks](https://www.cfoadvisors.com/blog/2025-burn-multiple-benchmarks_-how-series-a-saas-startups-can-prove-capital-efficiency)\n- [Benchmarkit: SaaS Performance Metrics](https://www.benchmarkit.ai/2025benchmarks)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Opex Ratio","slug":"opex-ratio","definition":"Operating expenses as a percentage of revenue.","formulas":["Opex Ratio = Operating expenses / Revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Operating Expense Metrics","aliases":[],"rawMarkdown":"### Opex Ratio\n\n**Definition:** Operating expenses as a percentage of revenue.\n\n**Formula:**\n```\nOpex Ratio = Operating expenses / Revenue × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"S&M as % of Revenue","slug":"sm-as-of-revenue","definition":"Sales and marketing spend as percentage of revenue.","formulas":["S&M % = Sales & Marketing expense / Revenue × 100"],"benchmarks":"- Early stage: 80-120%\n- Growth stage: 40-60%\n- Mature: 20-40%","insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Operating Expense Metrics","aliases":[],"rawMarkdown":"### S&M as % of Revenue\n\n**Definition:** Sales and marketing spend as percentage of revenue.\n\n**Formula:**\n```\nS&M % = Sales & Marketing expense / Revenue × 100\n```\n\n**Benchmarks:**\n- Early stage: 80-120%\n- Growth stage: 40-60%\n- Mature: 20-40%\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"R&D as % of Revenue","slug":"rd-as-of-revenue","definition":"Research and development spend as percentage of revenue.","formulas":["R&D % = R&D expense / Revenue × 100"],"benchmarks":"- SaaS typical: 15-25%","insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Operating Expense Metrics","aliases":[],"rawMarkdown":"### R&D as % of Revenue\n\n**Definition:** Research and development spend as percentage of revenue.\n\n**Formula:**\n```\nR&D % = R&D expense / Revenue × 100\n```\n\n**Benchmarks:**\n- SaaS typical: 15-25%\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"G&A as % of Revenue","slug":"ga-as-of-revenue","definition":"General and administrative spend as percentage of revenue.","formulas":["G&A % = G&A expense / Revenue × 100"],"benchmarks":"- SaaS typical: 10-15%","insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Operating Expense Metrics","aliases":[],"rawMarkdown":"### G&A as % of Revenue\n\n**Definition:** General and administrative spend as percentage of revenue.\n\n**Formula:**\n```\nG&A % = G&A expense / Revenue × 100\n```\n\n**Benchmarks:**\n- SaaS typical: 10-15%\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Days Sales Outstanding (DSO)","slug":"days-sales-outstanding-dso","definition":"Average days to collect payment after invoicing.","formulas":["DSO = (Accounts receivable / Revenue) × Days in period"],"benchmarks":"- Below 30 days: Excellent\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Collection issues","insight":"Collection efficiency and customer payment behavior.","commonMistakes":null,"sources":[],"department":"Finance","category":"Collections Metrics","aliases":["DSO"],"rawMarkdown":"### Days Sales Outstanding (DSO)\n\n**Definition:** Average days to collect payment after invoicing.\n\n**Formula:**\n```\nDSO = (Accounts receivable / Revenue) × Days in period\n```\n\n**Benchmarks:**\n- Below 30 days: Excellent\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Collection issues\n\n**What it tells you:** Collection efficiency and customer payment behavior.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Collection Rate","slug":"collection-rate","definition":"Percentage of invoiced amounts collected.","formulas":["Collection Rate = Cash collected / Amount invoiced × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Collections Metrics","aliases":[],"rawMarkdown":"### Collection Rate\n\n**Definition:** Percentage of invoiced amounts collected.\n\n**Formula:**\n```\nCollection Rate = Cash collected / Amount invoiced × 100\n```\n\n**Target:** >95%\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bad Debt Rate","slug":"bad-debt-rate","definition":"Percentage of revenue written off as uncollectable.","formulas":["Bad Debt Rate = Bad debt expense / Revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Finance","category":"Collections Metrics","aliases":[],"rawMarkdown":"### Bad Debt Rate\n\n**Definition:** Percentage of revenue written off as uncollectable.\n\n**Formula:**\n```\nBad Debt Rate = Bad debt expense / Revenue × 100\n```\n\n**Target:** <1%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Visitors","slug":"visitors","definition":"Unique visitors to owned properties (website, app).","formulas":["Visitors = Unique visitors in period"],"benchmarks":null,"insight":"Top of funnel awareness and reach.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Visitors\n\n**Definition:** Unique visitors to owned properties (website, app).\n\n**Formula:**\n```\nVisitors = Unique visitors in period\n```\n\n**What it tells you:** Top of funnel awareness and reach.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Visitor-to-Lead Rate","slug":"visitor-to-lead-rate","definition":"Percentage of website visitors who become leads.","formulas":["Visitor-to-Lead = Leads captured / Visitors × 100"],"benchmarks":"- Below 2%: Below average, optimize capture\n- 2-3%: Average for B2B websites\n- 3-7%: Good (majority of SaaS market)\n- 7-12%: Excellent / top performers","insight":"Website and content effectiveness at capturing interest.","commonMistakes":null,"sources":["First Page Sage: B2B SaaS Funnel Benchmarks: https://firstpagesage.com/seo-blog/b2b-saas-funnel-conversion-benchmarks-fc/","Userpilot: B2B SaaS Funnel Conversion: https://userpilot.com/blog/b2b-saas-funnel-conversion-benchmarks/"],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Visitor-to-Lead Rate\n\n**Definition:** Percentage of website visitors who become leads.\n\n**Formula:**\n```\nVisitor-to-Lead = Leads captured / Visitors × 100\n```\n\n**Benchmarks:**\n- Below 2%: Below average, optimize capture\n- 2-3%: Average for B2B websites\n- 3-7%: Good (majority of SaaS market)\n- 7-12%: Excellent / top performers\n\n**By channel:**\n- Referral traffic: ~2.9%\n- Organic search: ~2.6%\n- Email: ~2.4%\n- Paid search: 1.5-3.2%\n- Social: ~1% or less\n\n**Free trial impact:**\n- With credit card required: ~2%\n- Without credit card: ~10%\n\n**What it tells you:** Website and content effectiveness at capturing interest.\n\n**Sources:**\n- [First Page Sage: B2B SaaS Funnel Benchmarks](https://firstpagesage.com/seo-blog/b2b-saas-funnel-conversion-benchmarks-fc/)\n- [Userpilot: B2B SaaS Funnel Conversion](https://userpilot.com/blog/b2b-saas-funnel-conversion-benchmarks/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Leads","slug":"leads","definition":"Contacts who have expressed interest (form fill, signup, etc.).","formulas":["Leads = Total new leads captured in period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Leads\n\n**Definition:** Contacts who have expressed interest (form fill, signup, etc.).\n\n**Formula:**\n```\nLeads = Total new leads captured in period\n```\n\nBreak down by source: organic, paid, referral, direct, events.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketing Qualified Leads (MQLs)","slug":"marketing-qualified-leads-mqls","definition":"Leads that have demonstrated sufficient engagement and intent to warrant sales attention, based on criteria established between marketing and sales.","formulas":["MQLs = Leads meeting MQL criteria in period"],"benchmarks":null,"insight":"Volume of potentially sales-ready prospects.","commonMistakes":null,"sources":["Gartner: MQL vs SQL: https://www.gartner.com/en/digital-markets/insights/marketing-qualified-lead-vs-sales-qualified-lead","MetricHQ: MQL to SQL: https://www.metrichq.org/marketing/mql-to-sql-conversion-rate/"],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Marketing Qualified Leads (MQLs)\n\n**Definition:** Leads that have demonstrated sufficient engagement and intent to warrant sales attention, based on criteria established between marketing and sales.\n\n**MQL criteria (typical):**\n- **Behavioral:** Demo requests, pricing page visits, content downloads, webinar attendance\n- **Firmographic:** Company size, industry, role matches ICP\n- **Engagement:** Lead score threshold reached\n\n**High-intent signals (prioritize these):**\n- Demo/trial requests\n- Pricing page visits\n- Buying guide downloads\n- Contact sales form fills\n\n**Formula:**\n```\nMQLs = Leads meeting MQL criteria in period\n```\n\n**What it tells you:** Volume of potentially sales-ready prospects.\n\n**Key distinction:** MQLs show engagement but not confirmed buying intent. SQLs pass sales qualification (BANT: Budget, Authority, Need, Timeline).\n\n**Sources:**\n- [Gartner: MQL vs SQL](https://www.gartner.com/en/digital-markets/insights/marketing-qualified-lead-vs-sales-qualified-lead)\n- [MetricHQ: MQL to SQL](https://www.metrichq.org/marketing/mql-to-sql-conversion-rate/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Lead-to-MQL Rate","slug":"lead-to-mql-rate","definition":"Percentage of leads that become MQLs.","formulas":["Lead-to-MQL = MQLs / Total leads × 100"],"benchmarks":"- Below 15%: Low quality leads or strict MQL criteria\n- 15-30%: Average\n- 30-50%: Good quality leads\n- Above 50%: May indicate loose criteria","insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Lead-to-MQL Rate\n\n**Definition:** Percentage of leads that become MQLs.\n\n**Formula:**\n```\nLead-to-MQL = MQLs / Total leads × 100\n```\n\n**Benchmarks:**\n- Below 15%: Low quality leads or strict MQL criteria\n- 15-30%: Average\n- 30-50%: Good quality leads\n- Above 50%: May indicate loose criteria\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Sales Qualified Leads (SQLs)","slug":"sales-qualified-leads-sqls","definition":"MQLs accepted by sales as worth pursuing.","formulas":["SQLs = MQLs accepted by sales in period"],"benchmarks":null,"insight":"Marketing and sales alignment on lead quality.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### Sales Qualified Leads (SQLs)\n\n**Definition:** MQLs accepted by sales as worth pursuing.\n\n**Formula:**\n```\nSQLs = MQLs accepted by sales in period\n```\n\n**What it tells you:** Marketing and sales alignment on lead quality.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"MQL-to-SQL Rate","slug":"mql-to-sql-rate","definition":"Percentage of MQLs accepted by sales as qualified.","formulas":["MQL-to-SQL = SQLs / MQLs × 100"],"benchmarks":"- Overall average (all industries): ~13%\n- B2B SaaS average: 20-30%\n- B2B SaaS top performers: 40%+\n- Website leads: ~31%\n- Referral leads: Highest conversion","insight":"Quality of MQLs from sales perspective and marketing-sales alignment.","commonMistakes":null,"sources":["MetricHQ: MQL to SQL Conversion Rate: https://www.metrichq.org/marketing/mql-to-sql-conversion-rate/","Geckoboard: MQL to SQL: https://www.geckoboard.com/best-practice/kpi-examples/mql-to-sql-conversion-rate/","Data-Mania: MQL to SQL Benchmarks: https://www.data-mania.com/blog/mql-to-sql-conversion-rate-benchmarks-2025/"],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### MQL-to-SQL Rate\n\n**Definition:** Percentage of MQLs accepted by sales as qualified.\n\n**Formula:**\n```\nMQL-to-SQL = SQLs / MQLs × 100\n```\n\n**Benchmarks:**\n- Overall average (all industries): ~13%\n- B2B SaaS average: 20-30%\n- B2B SaaS top performers: 40%+\n- Website leads: ~31%\n- Referral leads: Highest conversion\n\n**By lead scoring approach:**\n- Basic demographic scoring: ~20%\n- Behavioral scoring models: 39-40%\n\n**Speed-to-lead impact:**\n- Response within 1 hour: 53% conversion\n- Response after 24 hours: 17% conversion\n\n**What it tells you:** Quality of MQLs from sales perspective and marketing-sales alignment.\n\n**Sources:**\n- [MetricHQ: MQL to SQL Conversion Rate](https://www.metrichq.org/marketing/mql-to-sql-conversion-rate/)\n- [Geckoboard: MQL to SQL](https://www.geckoboard.com/best-practice/kpi-examples/mql-to-sql-conversion-rate/)\n- [Data-Mania: MQL to SQL Benchmarks](https://www.data-mania.com/blog/mql-to-sql-conversion-rate-benchmarks-2025/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"SQL-to-Opportunity Rate","slug":"sql-to-opportunity-rate","definition":"Percentage of SQLs that become pipeline opportunities.","formulas":["SQL-to-Opp = Opportunities created / SQLs × 100"],"benchmarks":"- Below 30%: Low conversion\n- 30-50%: Average\n- Above 50%: Good","insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Funnel Metrics","aliases":[],"rawMarkdown":"### SQL-to-Opportunity Rate\n\n**Definition:** Percentage of SQLs that become pipeline opportunities.\n\n**Formula:**\n```\nSQL-to-Opp = Opportunities created / SQLs × 100\n```\n\n**Benchmarks:**\n- Below 30%: Low conversion\n- 30-50%: Average\n- Above 50%: Good\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Lead Velocity Rate (LVR)","slug":"lead-velocity-rate-lvr","definition":"Month-over-month growth in qualified leads. Considered by many to be the most important leading indicator in SaaS.","formulas":["LVR = (Qualified leads this month - Qualified leads last month) / Qualified leads last month × 100"],"benchmarks":"- 10%/month: Target after $1M ARR\n- 8%/month: Target after $3M ARR (supports 100%+ YoY growth)","insight":"Pipeline growth momentum. If LVR is consistently positive, you have the raw ingredients for growth.","commonMistakes":null,"sources":["SaaStr: Why LVR Is The Most Important Metric: https://www.saastr.com/why-lead-velocity-rate-lvr-is-the-most-important-metric-in-saas/","Wall Street Prep: Lead Velocity Rate: https://www.wallstreetprep.com/knowledge/lead-velocity-rate-lvr/","Corporate Finance Institute: LVR: https://corporatefinanceinstitute.com/resources/valuation/lead-velocity-rate-lvr/"],"department":"Marketing","category":"Funnel Metrics","aliases":["LVR"],"rawMarkdown":"### Lead Velocity Rate (LVR)\n\n**Definition:** Month-over-month growth in qualified leads. Considered by many to be the most important leading indicator in SaaS.\n\n**Formula:**\n```\nLVR = (Qualified leads this month - Qualified leads last month) / Qualified leads last month × 100\n```\n\n**Origin:** Popularized by Jason Lemkin (SaaStr), who calls it \"the most important metric in SaaS\" because it predicts future revenue 12-18 months out.\n\n**Why it matters:** Revenue is a lagging indicator (tells you about the past). LVR is real-time and predicts the future.\n\n**Benchmarks (per Jason Lemkin):**\n- 10%/month: Target after $1M ARR\n- 8%/month: Target after $3M ARR (supports 100%+ YoY growth)\n\n**Critical:** Must use **qualified** leads (MQLs), not raw leads. Otherwise it becomes a vanity metric.\n\n**What it tells you:** Pipeline growth momentum. If LVR is consistently positive, you have the raw ingredients for growth.\n\n**Limitation:** Doesn't measure conversion quality. Track alongside MRR growth.\n\n**Sources:**\n- [SaaStr: Why LVR Is The Most Important Metric](https://www.saastr.com/why-lead-velocity-rate-lvr-is-the-most-important-metric-in-saas/)\n- [Wall Street Prep: Lead Velocity Rate](https://www.wallstreetprep.com/knowledge/lead-velocity-rate-lvr/)\n- [Corporate Finance Institute: LVR](https://corporatefinanceinstitute.com/resources/valuation/lead-velocity-rate-lvr/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Customer Acquisition Cost (CAC)","slug":"customer-acquisition-cost-cac","definition":"The total cost to acquire a new customer.","formulas":["CAC = (Sales + Marketing spend in period) / New customers acquired in period","CAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers Acquired","CAC-M = S&M Spend / New Customers Acquired","CAC-O = CAC-M + Implementation_Cost_per_Customer + Onboarding_Cost_per_Customer"],"benchmarks":"- SMB SaaS: $300-$1,000\n- Mid-market: $1,000-$5,000\n- Enterprise: $5,000-$50,000+\n- Target LTV:CAC ratio: 3:1 or higher (see LTV:CAC Ratio)","insight":"The investment required to acquire each customer.","commonMistakes":["Excluding salaries (they're a real cost)","Using wrong time period (customers acquired may not align with spend timing)","Including Customer Success costs","Mixing paid and organic (calculate separately for channel efficiency)"],"sources":["Wall Street Prep: Customer Acquisition Cost: https://www.wallstreetprep.com/knowledge/customer-acquisition-cost-cac/","Maxio: CAC Customer Acquisition Cost: https://www.maxio.com/saaspedia/cac-customer-acquisition-cost","Paddle: Customer Acquisition Cost: https://www.paddle.com/resources/customer-acquisition-cost"],"department":"Marketing","category":"Efficiency Metrics","aliases":["CAC"],"rawMarkdown":"### Customer Acquisition Cost (CAC)\n\nSee [Core Metrics](core.md#cac-customer-acquisition-cost) for full definition.\n\nMarketing typically owns a portion of CAC (marketing spend / new customers).\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketing CAC","slug":"marketing-cac","definition":"Marketing-only portion of acquisition cost.","formulas":["Marketing CAC = Marketing spend / New customers acquired"],"benchmarks":null,"insight":"Marketing efficiency at generating customers.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Marketing CAC\n\n**Definition:** Marketing-only portion of acquisition cost.\n\n**Formula:**\n```\nMarketing CAC = Marketing spend / New customers acquired\n```\n\n**What it tells you:** Marketing efficiency at generating customers.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"CAC by Channel","slug":"cac-by-channel","definition":"Customer acquisition cost broken down by marketing channel.","formulas":["Channel CAC = Channel spend / Customers acquired via channel"],"benchmarks":null,"insight":"Which channels are most efficient.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Efficiency Metrics","aliases":["CAC"],"rawMarkdown":"### CAC by Channel\n\n**Definition:** Customer acquisition cost broken down by marketing channel.\n\n**Formula:**\n```\nChannel CAC = Channel spend / Customers acquired via channel\n```\n\n**Channels:** Paid search, paid social, organic, content, events, referral, partner.\n\n**What it tells you:** Which channels are most efficient.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost per Lead (CPL)","slug":"cost-per-lead-cpl","definition":"Cost to acquire a lead.","formulas":["CPL = Marketing spend / Leads generated"],"benchmarks":null,"insight":"Top-of-funnel efficiency.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Efficiency Metrics","aliases":["CPL"],"rawMarkdown":"### Cost per Lead (CPL)\n\n**Definition:** Cost to acquire a lead.\n\n**Formula:**\n```\nCPL = Marketing spend / Leads generated\n```\n\n**What it tells you:** Top-of-funnel efficiency.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost per MQL","slug":"cost-per-mql","definition":"Cost to acquire a marketing qualified lead.","formulas":["Cost per MQL = Marketing spend / MQLs generated"],"benchmarks":"- Average range: $30-$120\n- SMB-focused: $50-$150\n- Mid-market: $150-$400\n- Enterprise: $400-$1000+","insight":"Lead generation efficiency and channel performance.","commonMistakes":null,"sources":["SaaS Capital: Spending Benchmarks 2025: https://www.saas-capital.com/blog-posts/spending-benchmarks-for-private-b2b-saas-companies/","Martal: B2B Marketing ROI Benchmarks: https://martal.ca/b2b-digital-marketing-benchmarks-lb/"],"department":"Marketing","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Cost per MQL\n\n**Definition:** Cost to acquire a marketing qualified lead.\n\n**Formula:**\n```\nCost per MQL = Marketing spend / MQLs generated\n```\n\n**Benchmarks (B2B SaaS 2025):**\n- Average range: $30-$120\n- SMB-focused: $50-$150\n- Mid-market: $150-$400\n- Enterprise: $400-$1000+\n\n**Cost per Lead (CPL) for context:**\n- B2B SaaS paid channels: ~$310\n- B2B SaaS organic: ~$164\n- Blended average: ~$237\n- Demo request leads: $600-$800\n\n**By channel:**\n- Google Ads: $150-$250\n- LinkedIn: $100-$200\n- Bing: $80-$180\n- SEO/Organic: Significantly lower\n\n**What it tells you:** Lead generation efficiency and channel performance.\n\n**Sources:**\n- [SaaS Capital: Spending Benchmarks 2025](https://www.saas-capital.com/blog-posts/spending-benchmarks-for-private-b2b-saas-companies/)\n- [Martal: B2B Marketing ROI Benchmarks](https://martal.ca/b2b-digital-marketing-benchmarks-lb/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketing Sourced Pipeline","slug":"marketing-sourced-pipeline","definition":"Pipeline value attributed to marketing efforts (first-touch attribution).","formulas":["Marketing Sourced Pipeline = Sum of opportunity value where first touch = marketing"],"benchmarks":null,"insight":"Marketing's contribution to sales pipeline.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Marketing Sourced Pipeline\n\n**Definition:** Pipeline value attributed to marketing efforts (first-touch attribution).\n\n**Formula:**\n```\nMarketing Sourced Pipeline = Sum of opportunity value where first touch = marketing\n```\n\n**Benchmark:** Strong programs generate 30-50% of sales pipeline from marketing.\n\n**What it tells you:** Marketing's contribution to sales pipeline.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketing Sourced Revenue","slug":"marketing-sourced-revenue","definition":"Closed revenue attributed to marketing efforts (first-touch attribution).","formulas":["Marketing Sourced Revenue = Sum of closed won revenue where first touch = marketing"],"benchmarks":null,"insight":"Marketing's contribution to actual revenue.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Marketing Sourced Revenue\n\n**Definition:** Closed revenue attributed to marketing efforts (first-touch attribution).\n\n**Formula:**\n```\nMarketing Sourced Revenue = Sum of closed won revenue where first touch = marketing\n```\n\n**What it tells you:** Marketing's contribution to actual revenue.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketing Influenced Pipeline/Revenue","slug":"marketing-influenced-pipelinerevenue","definition":"Pipeline or revenue where marketing touched the deal at any point (multi-touch attribution).","formulas":["Marketing Influenced = Pipeline/Revenue where any touch = marketing"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":["SaaS Capital: Spending Benchmarks: https://www.saas-capital.com/blog-posts/spending-benchmarks-for-private-b2b-saas-companies/","Digital Bloom: Pipeline Performance Benchmarks: https://thedigitalbloom.com/learn/pipeline-performance-benchmarks-2025/"],"department":"Marketing","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Marketing Influenced Pipeline/Revenue\n\n**Definition:** Pipeline or revenue where marketing touched the deal at any point (multi-touch attribution).\n\n**Formula:**\n```\nMarketing Influenced = Pipeline/Revenue where any touch = marketing\n```\n\nTypically 2-3x higher than sourced (multiple touches on most B2B deals).\n\n**Note:** B2B buyers average 6-8 touches before purchase, so influenced is often more representative than sourced.\n\n**Sources:**\n- [SaaS Capital: Spending Benchmarks](https://www.saas-capital.com/blog-posts/spending-benchmarks-for-private-b2b-saas-companies/)\n- [Digital Bloom: Pipeline Performance Benchmarks](https://thedigitalbloom.com/learn/pipeline-performance-benchmarks-2025/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Organic Traffic","slug":"organic-traffic","definition":"Visitors from unpaid search.","formulas":["Organic Traffic = Visitors where source = organic search"],"benchmarks":null,"insight":"SEO effectiveness and brand awareness.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Channel Metrics","aliases":[],"rawMarkdown":"### Organic Traffic\n\n**Definition:** Visitors from unpaid search.\n\n**Formula:**\n```\nOrganic Traffic = Visitors where source = organic search\n```\n\n**What it tells you:** SEO effectiveness and brand awareness.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Paid Media Efficiency (ROAS)","slug":"paid-media-efficiency-roas","definition":"Return on ad spend.","formulas":["ROAS = Revenue attributed to ads / Ad spend"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":["Varos: Google ROAS for B2B SaaS: https://varos.com/benchmarks/google-roas-for-b2b-saas","Directive: B2B ROAS Benchmarks 2025: https://directiveconsulting.com/blog/b2b-roas-benchmarks-high-performing-campaigns-in-2025/"],"department":"Marketing","category":"Channel Metrics","aliases":["ROAS"],"rawMarkdown":"### Paid Media Efficiency (ROAS)\n\n**Definition:** Return on ad spend.\n\n**Formula:**\n```\nROAS = Revenue attributed to ads / Ad spend\n```\n\nExpress as ratio (e.g., \"3:1\" or \"3x\").\n\n**B2B SaaS Benchmarks:**\n- Below 2x: Below average, but may be acceptable if LTV is high\n- 2-3x: Average for mid-market SaaS\n- 3-4x: Good\n- 4x+: Strong / top quartile\n\n**By segment:**\n- Enterprise: 2-3x typical (long sales cycles)\n- Mid-market SaaS: 2.6x average, 4.1x top quartile\n- SMB: Higher ROAS expected\n\n**By channel:**\n- Google Ads (Search): ~2.8x average\n- LinkedIn: ~2.2x average\n- Facebook: ~1.9x average\n- Branded search: Very high (captures existing intent)\n\n**Important:** Lower ROAS can be acceptable if customer LTV is high. Always consider LTV:CAC alongside ROAS.\n\n**Sources:**\n- [Varos: Google ROAS for B2B SaaS](https://varos.com/benchmarks/google-roas-for-b2b-saas)\n- [Directive: B2B ROAS Benchmarks 2025](https://directiveconsulting.com/blog/b2b-roas-benchmarks-high-performing-campaigns-in-2025/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Email Metrics","slug":"email-metrics","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":["HubSpot: Email Marketing Benchmarks: https://blog.hubspot.com/sales/average-email-open-rate-benchmark","GetResponse: Email Marketing Benchmarks 2024: https://www.getresponse.com/resources/reports/email-marketing-benchmarks","SalesHive: B2B SaaS Email Benchmarks 2025: https://saleshive.com/blog/b2b-benchmarks-email-marketing-saas-you-need-know-2025/"],"department":"Marketing","category":"Channel Metrics","aliases":[],"rawMarkdown":"### Email Metrics\n\n| Metric | Formula | B2B SaaS Benchmark |\n|--------|---------|-----------|\n| Open Rate | Opens / Delivered × 100 | 25-40% |\n| Click Rate (CTR) | Clicks / Delivered × 100 | 2-4% |\n| Click-to-Open Rate | Clicks / Opens × 100 | 5-7% |\n| Unsubscribe Rate | Unsubscribes / Delivered × 100 | <0.3% |\n| Bounce Rate | Bounces / Sent × 100 | <2.5% |\n| Spam Complaint Rate | Complaints / Delivered × 100 | <0.1% |\n\n**Cold email/outbound (SaaS SDRs):**\n- Open rate: 38-42%\n- Reply rate: 3-8% (good: 5-10%)\n- Meeting booked rate: 1-2%\n\n**Important:** Apple Mail Privacy Protection (46% of email clients) inflates open rates by preloading images. Treat opens as directional only; focus on replies and conversions.\n\n**Sources:**\n- [HubSpot: Email Marketing Benchmarks](https://blog.hubspot.com/sales/average-email-open-rate-benchmark)\n- [GetResponse: Email Marketing Benchmarks 2024](https://www.getresponse.com/resources/reports/email-marketing-benchmarks)\n- [SalesHive: B2B SaaS Email Benchmarks 2025](https://saleshive.com/blog/b2b-benchmarks-email-marketing-saas-you-need-know-2025/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Content Performance","slug":"content-performance","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Channel Metrics","aliases":[],"rawMarkdown":"### Content Performance\n\n| Metric | Formula |\n|--------|---------|\n| Downloads | Content pieces downloaded |\n| Engagement Rate | Engaged visitors / Total visitors × 100 |\n| Content-to-MQL | MQLs from content / Content engagements × 100 |\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Brand Awareness","slug":"brand-awareness","definition":"Percentage of target market aware of brand.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Brand Metrics","aliases":[],"rawMarkdown":"### Brand Awareness\n\n**Definition:** Percentage of target market aware of brand.\n\n**Measurement:** Survey-based or search volume proxy.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Share of Voice","slug":"share-of-voice","definition":"Brand mentions relative to competitors.","formulas":["Share of Voice = Brand mentions / (Brand + Competitor mentions) × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Marketing","category":"Brand Metrics","aliases":[],"rawMarkdown":"### Share of Voice\n\n**Definition:** Brand mentions relative to competitors.\n\n**Formula:**\n```\nShare of Voice = Brand mentions / (Brand + Competitor mentions) × 100\n```\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"NPS (Marketing context)","slug":"nps-marketing-context","definition":"Net Promoter Score for prospects/market (vs customers).","formulas":[],"benchmarks":null,"insight":"Brand perception in broader market.","commonMistakes":null,"sources":[],"department":"Marketing","category":"Brand Metrics","aliases":["NPS"],"rawMarkdown":"### NPS (Marketing context)\n\n**Definition:** Net Promoter Score for prospects/market (vs customers).\n\n**What it tells you:** Brand perception in broader market.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to First Value (TTFV)","slug":"time-to-first-value-ttfv","definition":"Time from customer signup/contract to achieving first meaningful value.","formulas":["TTFV = Median of (First value milestone date - Contract start date)"],"benchmarks":"| Model | TTFV Target |\n|-------|-------------|\n| PLG/Self-serve | ~1.5 days (median: 1 day 2 hours) |\n| SMB with implementation | 1-2 weeks |\n| Mid-market | 2-4 weeks |\n| Enterprise | 4-12 weeks |","insight":"How quickly customers realize value. Directly impacts retention.","commonMistakes":null,"sources":["Userpilot: Time-to-Value Benchmark Report 2024: https://userpilot.com/blog/time-to-value-benchmark-report-2024/","Userpilot: SaaS Product Metrics: https://userpilot.com/saas-product-metrics/"],"department":"Onboarding","category":"Time Metrics","aliases":["TTFV"],"rawMarkdown":"### Time to First Value (TTFV)\n\n**Definition:** Time from customer signup/contract to achieving first meaningful value.\n\n**Formula:**\n```\nTTFV = Median of (First value milestone date - Contract start date)\n```\n\n**First value milestone (examples):**\n- First successful transaction processed\n- First report generated\n- First integration completed\n- First core workflow executed\n\n**Benchmarks (per Userpilot 2024 data):**\n\n| Model | TTFV Target |\n|-------|-------------|\n| PLG/Self-serve | ~1.5 days (median: 1 day 2 hours) |\n| SMB with implementation | 1-2 weeks |\n| Mid-market | 2-4 weeks |\n| Enterprise | 4-12 weeks |\n\n**By industry:**\n- CRM/Sales tools: Faster (simpler onboarding)\n- Insurance/Martech: Longer (complex products)\n\n**By growth model:**\n- Sales-led: Slightly faster (paid upfront, motivated)\n- Product-led: Longer (free trials attract less committed users)\n\n**What it tells you:** How quickly customers realize value. Directly impacts retention.\n\n**Sources:**\n- [Userpilot: Time-to-Value Benchmark Report 2024](https://userpilot.com/blog/time-to-value-benchmark-report-2024/)\n- [Userpilot: SaaS Product Metrics](https://userpilot.com/saas-product-metrics/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Go-Live","slug":"time-to-go-live","definition":"Time from contract to production deployment.","formulas":["Time to Go-Live = Median of (Go-live date - Contract start date)"],"benchmarks":null,"insight":"Implementation efficiency.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Time Metrics","aliases":[],"rawMarkdown":"### Time to Go-Live\n\n**Definition:** Time from contract to production deployment.\n\n**Formula:**\n```\nTime to Go-Live = Median of (Go-live date - Contract start date)\n```\n\n**What it tells you:** Implementation efficiency.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Full Adoption","slug":"time-to-full-adoption","definition":"Time from contract to using all purchased features/modules.","formulas":["Time to Full Adoption = Median of (Full adoption date - Contract start date)"],"benchmarks":null,"insight":"How long until customers are fully utilizing what they paid for.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Time Metrics","aliases":[],"rawMarkdown":"### Time to Full Adoption\n\n**Definition:** Time from contract to using all purchased features/modules.\n\n**Formula:**\n```\nTime to Full Adoption = Median of (Full adoption date - Contract start date)\n```\n\n**What it tells you:** How long until customers are fully utilizing what they paid for.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding Duration","slug":"onboarding-duration","definition":"Time spent actively in onboarding process.","formulas":["Onboarding Duration = Median of (Onboarding complete date - Onboarding start date)"],"benchmarks":null,"insight":"Length of onboarding program.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Time Metrics","aliases":[],"rawMarkdown":"### Onboarding Duration\n\n**Definition:** Time spent actively in onboarding process.\n\n**Formula:**\n```\nOnboarding Duration = Median of (Onboarding complete date - Onboarding start date)\n```\n\n**What it tells you:** Length of onboarding program.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding Completion Rate","slug":"onboarding-completion-rate","definition":"Percentage of customers who complete the onboarding program.","formulas":["Completion Rate = Customers completing onboarding / Customers starting onboarding × 100"],"benchmarks":"- Below 70%: Low, investigate friction points\n- 70-85%: Average\n- 85-95%: Good\n- Above 95%: Excellent","insight":"Onboarding program effectiveness.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Completion Metrics","aliases":[],"rawMarkdown":"### Onboarding Completion Rate\n\n**Definition:** Percentage of customers who complete the onboarding program.\n\n**Formula:**\n```\nCompletion Rate = Customers completing onboarding / Customers starting onboarding × 100\n```\n\n**Benchmarks:**\n- Below 70%: Low, investigate friction points\n- 70-85%: Average\n- 85-95%: Good\n- Above 95%: Excellent\n\n**What it tells you:** Onboarding program effectiveness.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Milestone Completion Rate","slug":"milestone-completion-rate","definition":"Percentage of customers completing each onboarding milestone.","formulas":["Milestone Completion = Customers completing milestone / Customers reaching milestone × 100"],"benchmarks":null,"insight":"Where customers get stuck.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Completion Metrics","aliases":[],"rawMarkdown":"### Milestone Completion Rate\n\n**Definition:** Percentage of customers completing each onboarding milestone.\n\n**Formula:**\n```\nMilestone Completion = Customers completing milestone / Customers reaching milestone × 100\n```\n\nTrack for each milestone to identify drop-off points.\n\n**Typical milestones:**\n1. Kickoff completed\n2. Data import completed\n3. Configuration completed\n4. Integration completed\n5. Training completed\n6. Go-live achieved\n\n**What it tells you:** Where customers get stuck.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"On-Time Completion Rate","slug":"on-time-completion-rate","definition":"Percentage of customers completing onboarding within target timeframe.","formulas":["On-Time Rate = Customers completing on time / Total customers completing × 100"],"benchmarks":null,"insight":"Predictability of onboarding timeline.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Completion Metrics","aliases":[],"rawMarkdown":"### On-Time Completion Rate\n\n**Definition:** Percentage of customers completing onboarding within target timeframe.\n\n**Formula:**\n```\nOn-Time Rate = Customers completing on time / Total customers completing × 100\n```\n\n**Target:** >80%\n\n**What it tells you:** Predictability of onboarding timeline.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding Engagement Score","slug":"onboarding-engagement-score","definition":"Level of customer engagement during onboarding.","formulas":["Engagement Score = Weighted average of engagement indicators (0-100)"],"benchmarks":null,"insight":"Customer investment in onboarding success.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Onboarding Engagement Score\n\n**Definition:** Level of customer engagement during onboarding.\n\n**Components:**\n- Attendance at scheduled sessions\n- Response time to onboarding team\n- Completion of assigned tasks\n- Login frequency during onboarding\n\n**Formula:**\n```\nEngagement Score = Weighted average of engagement indicators (0-100)\n```\n\n**What it tells you:** Customer investment in onboarding success.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Session Attendance Rate","slug":"session-attendance-rate","definition":"Percentage of scheduled onboarding sessions attended.","formulas":["Attendance Rate = Sessions attended / Sessions scheduled × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Onboarding","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Session Attendance Rate\n\n**Definition:** Percentage of scheduled onboarding sessions attended.\n\n**Formula:**\n```\nAttendance Rate = Sessions attended / Sessions scheduled × 100\n```\n\n**Target:** >90%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Task Completion Rate","slug":"task-completion-rate","definition":"Percentage of assigned onboarding tasks completed by customer.","formulas":["Task Completion = Tasks completed / Tasks assigned × 100"],"benchmarks":null,"insight":"Customer follow-through on their responsibilities.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Task Completion Rate\n\n**Definition:** Percentage of assigned onboarding tasks completed by customer.\n\n**Formula:**\n```\nTask Completion = Tasks completed / Tasks assigned × 100\n```\n\n**What it tells you:** Customer follow-through on their responsibilities.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding CSAT","slug":"onboarding-csat","definition":"Customer satisfaction with the onboarding experience.","formulas":["Onboarding CSAT = Positive ratings / Total ratings × 100"],"benchmarks":"- Below 80%: Investigate pain points\n- 80-90%: Average\n- Above 90%: Good\n- Above 95%: Excellent","insight":null,"commonMistakes":null,"sources":[],"department":"Onboarding","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Onboarding CSAT\n\n**Definition:** Customer satisfaction with the onboarding experience.\n\n**Formula:**\n```\nOnboarding CSAT = Positive ratings / Total ratings × 100\n```\n\nSurveyed at onboarding completion.\n\n**Benchmarks:**\n- Below 80%: Investigate pain points\n- 80-90%: Average\n- Above 90%: Good\n- Above 95%: Excellent\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding NPS","slug":"onboarding-nps","definition":"Net Promoter Score specifically for onboarding experience.","formulas":["Onboarding NPS = % Promoters - % Detractors"],"benchmarks":null,"insight":"Onboarding experience quality.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Onboarding NPS\n\n**Definition:** Net Promoter Score specifically for onboarding experience.\n\n**Formula:**\n```\nOnboarding NPS = % Promoters - % Detractors\n```\n\n**What it tells you:** Onboarding experience quality.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Implementation Quality Score","slug":"implementation-quality-score","definition":"Assessment of implementation completeness and correctness.","formulas":[],"benchmarks":null,"insight":"Whether implementations are set up for success.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Implementation Quality Score\n\n**Definition:** Assessment of implementation completeness and correctness.\n\n**Components:**\n- Configuration accuracy\n- Data quality post-migration\n- Integration health\n- User setup completeness\n\n**What it tells you:** Whether implementations are set up for success.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboardings per Resource","slug":"onboardings-per-resource","definition":"Number of onboardings handled per implementation resource.","formulas":["Onboardings per Resource = Completed onboardings / Implementation headcount"],"benchmarks":null,"insight":"Team capacity and efficiency.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Onboardings per Resource\n\n**Definition:** Number of onboardings handled per implementation resource.\n\n**Formula:**\n```\nOnboardings per Resource = Completed onboardings / Implementation headcount\n```\n\n**What it tells you:** Team capacity and efficiency.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost per Onboarding","slug":"cost-per-onboarding","definition":"Total onboarding cost divided by customers onboarded.","formulas":["Cost per Onboarding = Total onboarding team cost / Customers onboarded"],"benchmarks":null,"insight":"Unit economics of implementation.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Cost per Onboarding\n\n**Definition:** Total onboarding cost divided by customers onboarded.\n\n**Formula:**\n```\nCost per Onboarding = Total onboarding team cost / Customers onboarded\n```\n\n**What it tells you:** Unit economics of implementation.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time Spent per Onboarding","slug":"time-spent-per-onboarding","definition":"Total hours invested per customer onboarding.","formulas":["Hours per Onboarding = Total onboarding hours / Customers onboarded"],"benchmarks":"- Self-serve/digital: 0-2 hours\n- SMB: 5-15 hours\n- Mid-market: 20-50 hours\n- Enterprise: 50-200+ hours","insight":null,"commonMistakes":null,"sources":[],"department":"Onboarding","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Time Spent per Onboarding\n\n**Definition:** Total hours invested per customer onboarding.\n\n**Formula:**\n```\nHours per Onboarding = Total onboarding hours / Customers onboarded\n```\n\n**Benchmarks:**\n- Self-serve/digital: 0-2 hours\n- SMB: 5-15 hours\n- Mid-market: 20-50 hours\n- Enterprise: 50-200+ hours\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding-to-Active Rate (Activation Rate)","slug":"onboarding-to-active-rate-activation-rate","definition":"Percentage of onboarded customers who become actively engaged.","formulas":["Activation Rate = Active customers post-onboarding / Customers completing onboarding × 100"],"benchmarks":"- Average across SaaS: 37.5%\n- PLG companies: 34.6%\n- Sales-led companies: 41.6%","insight":"Does onboarding translate to actual product usage?","commonMistakes":null,"sources":["Userpilot: User Activation Rate Benchmark 2024: https://userpilot.com/blog/user-activation-rate-benchmark-report-2024/","Userpilot: Activation Metrics for SaaS: https://userpilot.com/blog/activation-metrics-saas/"],"department":"Onboarding","category":"Outcome Metrics","aliases":[],"rawMarkdown":"### Onboarding-to-Active Rate (Activation Rate)\n\n**Definition:** Percentage of onboarded customers who become actively engaged.\n\n**Formula:**\n```\nActivation Rate = Active customers post-onboarding / Customers completing onboarding × 100\n```\n\nActive = meeting defined usage thresholds (product-specific \"aha moment\").\n\n**Benchmarks (Userpilot 2024 data):**\n- Average across SaaS: 37.5%\n- PLG companies: 34.6%\n- Sales-led companies: 41.6%\n\n**By company size:**\n- $1-5M ARR: 41.6%\n- $5-10M ARR: 36.9%\n- $10-50M ARR: 17.6%\n- $50M+ ARR: 43.1%\n\n**Target:** Varies by model. For managed onboarding (enterprise), aim for >90%. For PLG/self-serve, 40%+ is strong.\n\n**What it tells you:** Does onboarding translate to actual product usage?\n\n**Sources:**\n- [Userpilot: User Activation Rate Benchmark 2024](https://userpilot.com/blog/user-activation-rate-benchmark-report-2024/)\n- [Userpilot: Activation Metrics for SaaS](https://userpilot.com/blog/activation-metrics-saas/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"30-Day Retention (Post-Onboarding)","slug":"30-day-retention-post-onboarding","definition":"Percentage of customers still active 30 days after onboarding completion.","formulas":["30-Day Retention = Customers active at day 30 / Customers completing onboarding × 100"],"benchmarks":null,"insight":"Near-term stickiness after onboarding.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Outcome Metrics","aliases":[],"rawMarkdown":"### 30-Day Retention (Post-Onboarding)\n\n**Definition:** Percentage of customers still active 30 days after onboarding completion.\n\n**Formula:**\n```\n30-Day Retention = Customers active at day 30 / Customers completing onboarding × 100\n```\n\n**Target:** >95%\n\n**What it tells you:** Near-term stickiness after onboarding.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Onboarding Cohort Churn","slug":"onboarding-cohort-churn","definition":"Churn rate segmented by onboarding characteristics.","formulas":[],"benchmarks":null,"insight":"How onboarding experience predicts retention.","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Outcome Metrics","aliases":[],"rawMarkdown":"### Onboarding Cohort Churn\n\n**Definition:** Churn rate segmented by onboarding characteristics.\n\n**Analysis dimensions:**\n- Onboarding duration (fast vs slow)\n- Onboarding completeness (full vs partial)\n- Engagement level during onboarding\n\n**What it tells you:** How onboarding experience predicts retention.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Feature Adoption at Go-Live","slug":"feature-adoption-at-go-live","definition":"Percentage of available features being used at go-live.","formulas":["Feature Adoption = Features in use / Total features available × 100"],"benchmarks":null,"insight":"Are customers set up to use the product fully?","commonMistakes":null,"sources":[],"department":"Onboarding","category":"Outcome Metrics","aliases":[],"rawMarkdown":"### Feature Adoption at Go-Live\n\n**Definition:** Percentage of available features being used at go-live.\n\n**Formula:**\n```\nFeature Adoption = Features in use / Total features available × 100\n```\n\n**What it tells you:** Are customers set up to use the product fully?\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Total Active Partners","slug":"total-active-partners","definition":"Number of partners actively engaged in the program.","formulas":["Active Partners = Partners with activity in trailing 12 months"],"benchmarks":null,"insight":"Size of active partner ecosystem.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Portfolio","aliases":[],"rawMarkdown":"### Total Active Partners\n\n**Definition:** Number of partners actively engaged in the program.\n\n**Formula:**\n```\nActive Partners = Partners with activity in trailing 12 months\n```\n\n**Activity:** Deals registered, deals closed, certifications maintained or engagement threshold met.\n\n**What it tells you:** Size of active partner ecosystem.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Tier Distribution","slug":"partner-tier-distribution","definition":"Breakdown of partners by program tier.","formulas":["Tier Distribution = Partners in tier / Total partners × 100"],"benchmarks":null,"insight":"Partner ecosystem maturity.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Portfolio","aliases":[],"rawMarkdown":"### Partner Tier Distribution\n\n**Definition:** Breakdown of partners by program tier.\n\n**Tiers (typical):**\n- Registered / Affiliate\n- Silver / Select\n- Gold / Premier\n- Platinum / Elite\n\n**Formula:**\n```\nTier Distribution = Partners in tier / Total partners × 100\n```\n\n**What it tells you:** Partner ecosystem maturity.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Activation Rate","slug":"partner-activation-rate","definition":"Percentage of recruited partners who become productive.","formulas":["Activation Rate = Partners with first deal / Partners recruited × 100"],"benchmarks":"- Below 20%: Low activation\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong enablement","insight":"Partner onboarding and enablement effectiveness.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Portfolio","aliases":[],"rawMarkdown":"### Partner Activation Rate\n\n**Definition:** Percentage of recruited partners who become productive.\n\n**Formula:**\n```\nActivation Rate = Partners with first deal / Partners recruited × 100\n```\n\n**Benchmarks:**\n- Below 20%: Low activation\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong enablement\n\n**What it tells you:** Partner onboarding and enablement effectiveness.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Churn Rate","slug":"partner-churn-rate","definition":"Percentage of partners who leave or become inactive.","formulas":["Partner Churn = Partners churned / Partners at start of period × 100"],"benchmarks":null,"insight":"Partner program health and competitiveness.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Portfolio","aliases":[],"rawMarkdown":"### Partner Churn Rate\n\n**Definition:** Percentage of partners who leave or become inactive.\n\n**Formula:**\n```\nPartner Churn = Partners churned / Partners at start of period × 100\n```\n\n**What it tells you:** Partner program health and competitiveness.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner-Sourced Revenue","slug":"partner-sourced-revenue","definition":"Revenue from deals originated by partners.","formulas":["Partner-Sourced Revenue = Sum of closed revenue where partner = source"],"benchmarks":null,"insight":"Partner contribution to new business.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Revenue","aliases":[],"rawMarkdown":"### Partner-Sourced Revenue\n\n**Definition:** Revenue from deals originated by partners.\n\n**Formula:**\n```\nPartner-Sourced Revenue = Sum of closed revenue where partner = source\n```\n\n**What it tells you:** Partner contribution to new business.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner-Influenced Revenue","slug":"partner-influenced-revenue","definition":"Revenue from deals where partners were involved (but may not have originated).","formulas":["Partner-Influenced Revenue = Sum of closed revenue where partner = involved"],"benchmarks":null,"insight":"Total partner impact on revenue.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Revenue","aliases":[],"rawMarkdown":"### Partner-Influenced Revenue\n\n**Definition:** Revenue from deals where partners were involved (but may not have originated).\n\n**Formula:**\n```\nPartner-Influenced Revenue = Sum of closed revenue where partner = involved\n```\n\n**What it tells you:** Total partner impact on revenue.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Channel Revenue Percentage","slug":"channel-revenue-percentage","definition":"Partner revenue as percentage of total revenue.","formulas":["Channel % = Partner-sourced revenue / Total revenue × 100"],"benchmarks":"- Below 10%: Direct-dominant model\n- 10-30%: Developing channel\n- 30-50%: Balanced model\n- Above 50%: Channel-dominant model","insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Revenue","aliases":[],"rawMarkdown":"### Channel Revenue Percentage\n\n**Definition:** Partner revenue as percentage of total revenue.\n\n**Formula:**\n```\nChannel % = Partner-sourced revenue / Total revenue × 100\n```\n\n**Benchmarks:**\n- Below 10%: Direct-dominant model\n- 10-30%: Developing channel\n- 30-50%: Balanced model\n- Above 50%: Channel-dominant model\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Revenue Growth","slug":"partner-revenue-growth","definition":"Year-over-year growth in partner-sourced revenue.","formulas":["Growth = (Partner revenue this year - Partner revenue last year) / Partner revenue last year × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Revenue","aliases":[],"rawMarkdown":"### Partner Revenue Growth\n\n**Definition:** Year-over-year growth in partner-sourced revenue.\n\n**Formula:**\n```\nGrowth = (Partner revenue this year - Partner revenue last year) / Partner revenue last year × 100\n```\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Average Partner Revenue","slug":"average-partner-revenue","definition":"Average revenue per active partner.","formulas":["Average Partner Revenue = Total partner revenue / Active partners"],"benchmarks":null,"insight":"Partner productivity.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Revenue","aliases":[],"rawMarkdown":"### Average Partner Revenue\n\n**Definition:** Average revenue per active partner.\n\n**Formula:**\n```\nAverage Partner Revenue = Total partner revenue / Active partners\n```\n\n**What it tells you:** Partner productivity.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Deal Registration Volume","slug":"partner-deal-registration-volume","definition":"Number of deals registered by partners.","formulas":["Deal Registrations = Count of partner-registered deals in period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Deal Flow","aliases":[],"rawMarkdown":"### Partner Deal Registration Volume\n\n**Definition:** Number of deals registered by partners.\n\n**Formula:**\n```\nDeal Registrations = Count of partner-registered deals in period\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Deal Registration-to-Close Rate","slug":"deal-registration-to-close-rate","definition":"Percentage of registered deals that close.","formulas":["Registration-to-Close = Closed deals / Registered deals × 100"],"benchmarks":"- Below 20%: Low quality or poor follow-through\n- 20-35%: Average\n- Above 35%: Good","insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Deal Flow","aliases":[],"rawMarkdown":"### Deal Registration-to-Close Rate\n\n**Definition:** Percentage of registered deals that close.\n\n**Formula:**\n```\nRegistration-to-Close = Closed deals / Registered deals × 100\n```\n\n**Benchmarks:**\n- Below 20%: Low quality or poor follow-through\n- 20-35%: Average\n- Above 35%: Good\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Win Rate","slug":"partner-win-rate","definition":"Win rate on partner-involved opportunities.","formulas":["Partner Win Rate = Partner deals won / (Partner deals won + Partner deals lost) × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Deal Flow","aliases":[],"rawMarkdown":"### Partner Win Rate\n\n**Definition:** Win rate on partner-involved opportunities.\n\n**Formula:**\n```\nPartner Win Rate = Partner deals won / (Partner deals won + Partner deals lost) × 100\n```\n\nCompare to direct win rate to assess partner effectiveness.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Deal Size","slug":"partner-deal-size","definition":"Average deal size for partner-sourced deals.","formulas":["Partner Deal Size = Partner-sourced revenue / Partner deals closed"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Deal Flow","aliases":[],"rawMarkdown":"### Partner Deal Size\n\n**Definition:** Average deal size for partner-sourced deals.\n\n**Formula:**\n```\nPartner Deal Size = Partner-sourced revenue / Partner deals closed\n```\n\nCompare to direct deal size.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Sales Cycle","slug":"partner-sales-cycle","definition":"Average sales cycle for partner-sourced deals.","formulas":["Partner Sales Cycle = Median of (Close date - Registration date) for partner deals"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Deal Flow","aliases":[],"rawMarkdown":"### Partner Sales Cycle\n\n**Definition:** Average sales cycle for partner-sourced deals.\n\n**Formula:**\n```\nPartner Sales Cycle = Median of (Close date - Registration date) for partner deals\n```\n\nCompare to direct sales cycle.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Portal Engagement","slug":"partner-portal-engagement","definition":"Partner activity in partner portal/systems.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Engagement","aliases":[],"rawMarkdown":"### Partner Portal Engagement\n\n**Definition:** Partner activity in partner portal/systems.\n\n**Metrics:**\n- Portal logins per partner\n- Content downloads\n- Training modules accessed\n- Deal registrations submitted\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Certification Rate","slug":"certification-rate","definition":"Percentage of partners with current certifications.","formulas":["Certification Rate = Certified partners / Active partners × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Engagement","aliases":[],"rawMarkdown":"### Certification Rate\n\n**Definition:** Percentage of partners with current certifications.\n\n**Formula:**\n```\nCertification Rate = Certified partners / Active partners × 100\n```\n\n**Target:** >80% for technical partners\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Training Completion","slug":"training-completion","definition":"Percentage of partners completing required training.","formulas":["Training Completion = Partners completing training / Partners enrolled × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Engagement","aliases":[],"rawMarkdown":"### Training Completion\n\n**Definition:** Percentage of partners completing required training.\n\n**Formula:**\n```\nTraining Completion = Partners completing training / Partners enrolled × 100\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Joint Marketing Activities","slug":"joint-marketing-activities","definition":"Number of co-marketing activities with partners.","formulas":["Joint Activities = Count of co-marketing activities in period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Engagement","aliases":[],"rawMarkdown":"### Joint Marketing Activities\n\n**Definition:** Number of co-marketing activities with partners.\n\n**Activities:** Webinars, events, content, campaigns.\n\n**Formula:**\n```\nJoint Activities = Count of co-marketing activities in period\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner NPS","slug":"partner-nps","definition":"Net Promoter Score from partner satisfaction surveys.","formulas":["Partner NPS = % Promoters - % Detractors"],"benchmarks":null,"insight":"Partner satisfaction with the program.","commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Engagement","aliases":[],"rawMarkdown":"### Partner NPS\n\n**Definition:** Net Promoter Score from partner satisfaction surveys.\n\n**Formula:**\n```\nPartner NPS = % Promoters - % Detractors\n```\n\n**What it tells you:** Partner satisfaction with the program.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Margin / Commission","slug":"partner-margin-commission","definition":"Compensation paid to partners.","formulas":["Partner Margin = Partner compensation / Partner-sourced revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Economics","aliases":[],"rawMarkdown":"### Partner Margin / Commission\n\n**Definition:** Compensation paid to partners.\n\n**Formula:**\n```\nPartner Margin = Partner compensation / Partner-sourced revenue × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost of Partner Acquisition","slug":"cost-of-partner-acquisition","definition":"Cost to recruit and onboard a new partner.","formulas":["Cost of Partner Acquisition = Partner program costs / New partners recruited"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Economics","aliases":[],"rawMarkdown":"### Cost of Partner Acquisition\n\n**Definition:** Cost to recruit and onboard a new partner.\n\n**Formula:**\n```\nCost of Partner Acquisition = Partner program costs / New partners recruited\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner Lifetime Value","slug":"partner-lifetime-value","definition":"Expected revenue from a partner over their lifetime.","formulas":["Partner LTV = Average annual partner revenue / Partner churn rate"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Economics","aliases":[],"rawMarkdown":"### Partner Lifetime Value\n\n**Definition:** Expected revenue from a partner over their lifetime.\n\n**Formula:**\n```\nPartner LTV = Average annual partner revenue / Partner churn rate\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Partner ROI","slug":"partner-roi","definition":"Return on investment in partner program.","formulas":["Partner ROI = (Partner-sourced revenue - Partner program costs) / Partner program costs × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Economics","aliases":[],"rawMarkdown":"### Partner ROI\n\n**Definition:** Return on investment in partner program.\n\n**Formula:**\n```\nPartner ROI = (Partner-sourced revenue - Partner program costs) / Partner program costs × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Resellers","slug":"resellers","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Types","aliases":[],"rawMarkdown":"### Resellers\n\n- Focus: Revenue sourced, deal flow, margin\n- Key metric: Revenue per reseller","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Referral Partners","slug":"referral-partners","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Types","aliases":[],"rawMarkdown":"### Referral Partners\n\n- Focus: Lead volume, conversion, referral fees\n- Key metric: Referrals per partner","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Technology Partners (Integrations)","slug":"technology-partners-integrations","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Types","aliases":[],"rawMarkdown":"### Technology Partners (Integrations)\n\n- Focus: Integration usage, co-sell, marketplace\n- Key metric: Customers using integration","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"System Integrators (SIs)","slug":"system-integrators-sis","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Types","aliases":[],"rawMarkdown":"### System Integrators (SIs)\n\n- Focus: Implementation capacity, project revenue, customer success\n- Key metric: Implementations delivered","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Managed Service Providers (MSPs)","slug":"managed-service-providers-msps","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Partner Types","aliases":[],"rawMarkdown":"### Managed Service Providers (MSPs)\n\n- Focus: Managed seats, recurring revenue, retention\n- Key metric: Seats under management\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketplace Revenue","slug":"marketplace-revenue","definition":"Revenue transacted through marketplace (AWS, Azure, etc.).","formulas":["Marketplace Revenue = Sum of marketplace transactions"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Marketplace (if applicable)","aliases":[],"rawMarkdown":"### Marketplace Revenue\n\n**Definition:** Revenue transacted through marketplace (AWS, Azure, etc.).\n\n**Formula:**\n```\nMarketplace Revenue = Sum of marketplace transactions\n```\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketplace as % of Revenue","slug":"marketplace-as-of-revenue","definition":"Marketplace contribution to total revenue.","formulas":["Marketplace % = Marketplace revenue / Total revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Marketplace (if applicable)","aliases":[],"rawMarkdown":"### Marketplace as % of Revenue\n\n**Definition:** Marketplace contribution to total revenue.\n\n**Formula:**\n```\nMarketplace % = Marketplace revenue / Total revenue × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Marketplace Listings Performance","slug":"marketplace-listings-performance","definition":"Performance of product listings.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Partnerships","category":"Marketplace (if applicable)","aliases":[],"rawMarkdown":"### Marketplace Listings Performance\n\n**Definition:** Performance of product listings.\n\n**Metrics:**\n- Listing views\n- Trial starts\n- Conversions\n- Reviews/ratings\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Total Headcount","slug":"total-headcount","definition":"Total number of employees.","formulas":["Headcount = Total active employees at end of period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Headcount Metrics","aliases":[],"rawMarkdown":"### Total Headcount\n\n**Definition:** Total number of employees.\n\n**Formula:**\n```\nHeadcount = Total active employees at end of period\n```\n\nInclude: Full-time, part-time employees\nExclude: Contractors (track separately)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Headcount Growth Rate","slug":"headcount-growth-rate","definition":"Percentage change in headcount over a period.","formulas":["Growth Rate = (Headcount end - Headcount start) / Headcount start × 100"],"benchmarks":null,"insight":"Organizational scaling velocity.","commonMistakes":null,"sources":[],"department":"People","category":"Headcount Metrics","aliases":[],"rawMarkdown":"### Headcount Growth Rate\n\n**Definition:** Percentage change in headcount over a period.\n\n**Formula:**\n```\nGrowth Rate = (Headcount end - Headcount start) / Headcount start × 100\n```\n\n**What it tells you:** Organizational scaling velocity.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Headcount by Department","slug":"headcount-by-department","definition":"Distribution of employees across functions.","formulas":[],"benchmarks":null,"insight":"Resource allocation and organizational structure.","commonMistakes":null,"sources":[],"department":"People","category":"Headcount Metrics","aliases":[],"rawMarkdown":"### Headcount by Department\n\n**Definition:** Distribution of employees across functions.\n\n**Typical breakdown for SaaS:**\n| Department | % of Headcount |\n|------------|----------------|\n| Engineering | 25-35% |\n| Sales | 20-30% |\n| Customer Success/Support | 15-25% |\n| Marketing | 5-10% |\n| G&A (Finance, HR, Legal, Ops) | 10-15% |\n| Product | 5-10% |\n\n**What it tells you:** Resource allocation and organizational structure.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue per Employee","slug":"revenue-per-employee","definition":"ARR divided by total headcount.","formulas":["Revenue per Employee = ARR / Total headcount"],"benchmarks":"- Below $100K: Early stage or overstaffed\n- $100K-$200K: Growing\n- $200K-$300K: Efficient\n- Above $300K: Highly efficient","insight":"Overall workforce productivity.","commonMistakes":null,"sources":[],"department":"People","category":"Headcount Metrics","aliases":[],"rawMarkdown":"### Revenue per Employee\n\n**Definition:** ARR divided by total headcount.\n\n**Formula:**\n```\nRevenue per Employee = ARR / Total headcount\n```\n\n**Benchmarks:**\n- Below $100K: Early stage or overstaffed\n- $100K-$200K: Growing\n- $200K-$300K: Efficient\n- Above $300K: Highly efficient\n\n**What it tells you:** Overall workforce productivity.\n\n---","signalType":"outcome","signalTypeSecondary":"efficiency","dualLens":null,"dualLensNote":null},{"name":"Employee Turnover Rate","slug":"employee-turnover-rate","definition":"Percentage of employees who left in a period.","formulas":["Turnover Rate = Employees departed / Average headcount × 100"],"benchmarks":"- Below 10%: Excellent retention\n- 10-15%: Good\n- 13-20%: Average for tech (tech runs higher than other industries)\n- 20-25%: High for tech, investigate\n- Above 25%: Critical","insight":null,"commonMistakes":null,"sources":["BambooHR: Turnover Benchmarks 2025: https://www.bamboohr.com/resources/guides/turnover-benchmarks","Mercer: 2025 US Turnover Survey: https://www.imercer.com/articleinsights/workforce-turnover-trends"],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Employee Turnover Rate\n\n**Definition:** Percentage of employees who left in a period.\n\n**Formula:**\n```\nTurnover Rate = Employees departed / Average headcount × 100\n```\n\nCalculate monthly or annually. Annualize for comparability.\n\n**Benchmarks (Annual):**\n- Below 10%: Excellent retention\n- 10-15%: Good\n- 13-20%: Average for tech (tech runs higher than other industries)\n- 20-25%: High for tech, investigate\n- Above 25%: Critical\n\n**Context:** US voluntary turnover averaged 13.5% in 2025 (down from 17.3% in 2023). Tech sector runs 13-25% due to competitive demand for specialized skills. Average tech tenure is 2-3 years vs 4.1 years overall.\n\n**Sources:**\n- [BambooHR: Turnover Benchmarks 2025](https://www.bamboohr.com/resources/guides/turnover-benchmarks)\n- [Mercer: 2025 US Turnover Survey](https://www.imercer.com/articleinsights/workforce-turnover-trends)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Voluntary Turnover Rate","slug":"voluntary-turnover-rate","definition":"Turnover due to employee choice (resignations).","formulas":["Voluntary Turnover = Voluntary departures / Average headcount × 100"],"benchmarks":null,"insight":"Employee satisfaction and competitiveness of employment.","commonMistakes":null,"sources":[],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Voluntary Turnover Rate\n\n**Definition:** Turnover due to employee choice (resignations).\n\n**Formula:**\n```\nVoluntary Turnover = Voluntary departures / Average headcount × 100\n```\n\n**What it tells you:** Employee satisfaction and competitiveness of employment.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Involuntary Turnover Rate","slug":"involuntary-turnover-rate","definition":"Turnover due to company decision (terminations, layoffs).","formulas":["Involuntary Turnover = Involuntary departures / Average headcount × 100"],"benchmarks":null,"insight":"Hiring quality and performance management.","commonMistakes":null,"sources":[],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Involuntary Turnover Rate\n\n**Definition:** Turnover due to company decision (terminations, layoffs).\n\n**Formula:**\n```\nInvoluntary Turnover = Involuntary departures / Average headcount × 100\n```\n\n**What it tells you:** Hiring quality and performance management.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Regrettable Turnover","slug":"regrettable-turnover","definition":"Voluntary departures of high performers.","formulas":["Regrettable Turnover = High performer departures / Total high performers × 100"],"benchmarks":null,"insight":"Are you losing your best people?","commonMistakes":null,"sources":[],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Regrettable Turnover\n\n**Definition:** Voluntary departures of high performers.\n\n**Formula:**\n```\nRegrettable Turnover = High performer departures / Total high performers × 100\n```\n\n**Target:** <5%\n\n**What it tells you:** Are you losing your best people?\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Average Tenure","slug":"average-tenure","definition":"Average length of employment.","formulas":["Average Tenure = Sum of employee tenure / Total employees"],"benchmarks":null,"insight":"Workforce stability and institutional knowledge.","commonMistakes":null,"sources":[],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### Average Tenure\n\n**Definition:** Average length of employment.\n\n**Formula:**\n```\nAverage Tenure = Sum of employee tenure / Total employees\n```\n\nMeasured in months or years.\n\n**What it tells you:** Workforce stability and institutional knowledge.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"90-Day Turnover","slug":"90-day-turnover","definition":"Percentage of new hires who leave within 90 days.","formulas":["90-Day Turnover = Departures within 90 days / New hires × 100"],"benchmarks":"- Below 5%: Good onboarding and hiring\n- 5-10%: Average\n- Above 10%: Hiring or onboarding issues","insight":"Hiring quality and onboarding effectiveness.","commonMistakes":null,"sources":[],"department":"People","category":"Retention Metrics","aliases":[],"rawMarkdown":"### 90-Day Turnover\n\n**Definition:** Percentage of new hires who leave within 90 days.\n\n**Formula:**\n```\n90-Day Turnover = Departures within 90 days / New hires × 100\n```\n\n**Benchmarks:**\n- Below 5%: Good onboarding and hiring\n- 5-10%: Average\n- Above 10%: Hiring or onboarding issues\n\n**What it tells you:** Hiring quality and onboarding effectiveness.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Employee Net Promoter Score (eNPS)","slug":"employee-net-promoter-score-enps","definition":"Likelihood of employees recommending the company as a place to work.","formulas":["eNPS = % Promoters (9-10) - % Detractors (0-6)"],"benchmarks":"- Below 0: Poor engagement (investigate immediately)\n- 0-10: Below average\n- 10-30: Average (overall benchmark ~12-27)\n- 30-50: Good, leading companies\n- Above 50: Excellent","insight":"Employee satisfaction and advocacy.","commonMistakes":null,"sources":["AIHR: Employee Net Promoter Score Guide: https://www.aihr.com/blog/employee-net-promoter-score-enps/","Perceptyx: eNPS Guide: https://blog.perceptyx.com/employee-net-promoter-score"],"department":"People","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Employee Net Promoter Score (eNPS)\n\n**Definition:** Likelihood of employees recommending the company as a place to work.\n\n**Formula:**\n```\neNPS = % Promoters (9-10) - % Detractors (0-6)\n```\n\nBased on: \"How likely are you to recommend [company] as a place to work?\" (0-10)\n\n**Benchmarks:**\n- Below 0: Poor engagement (investigate immediately)\n- 0-10: Below average\n- 10-30: Average (overall benchmark ~12-27)\n- 30-50: Good, leading companies\n- Above 50: Excellent\n\n**Tech industry:** Average eNPS is 26, but top tech companies score 50-75+.\n\n**Company size effect:** Smaller companies (0-250) average 30; larger companies (5000+) average 9.\n\n**What it tells you:** Employee satisfaction and advocacy.\n\n**Sources:**\n- [AIHR: Employee Net Promoter Score Guide](https://www.aihr.com/blog/employee-net-promoter-score-enps/)\n- [Perceptyx: eNPS Guide](https://blog.perceptyx.com/employee-net-promoter-score)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Engagement Score","slug":"engagement-score","definition":"Composite score from engagement survey.","formulas":[],"benchmarks":"- Below 60%: Low engagement\n- 60-70%: Average\n- 70-80%: Good\n- Above 80%: High engagement","insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Engagement Score\n\n**Definition:** Composite score from engagement survey.\n\n**Measurement:** Typically annual or quarterly survey covering:\n- Job satisfaction\n- Manager relationship\n- Growth opportunities\n- Company direction\n- Work-life balance\n\n**Benchmarks:**\n- Below 60%: Low engagement\n- 60-70%: Average\n- 70-80%: Good\n- Above 80%: High engagement\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Survey Participation Rate","slug":"survey-participation-rate","definition":"Percentage of employees completing engagement surveys.","formulas":["Participation Rate = Surveys completed / Surveys sent × 100"],"benchmarks":null,"insight":"Trust in feedback process and engagement with company.","commonMistakes":null,"sources":[],"department":"People","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Survey Participation Rate\n\n**Definition:** Percentage of employees completing engagement surveys.\n\n**Formula:**\n```\nParticipation Rate = Surveys completed / Surveys sent × 100\n```\n\n**Target:** >80%\n\n**What it tells you:** Trust in feedback process and engagement with company.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Open Positions","slug":"open-positions","definition":"Number of unfilled roles.","formulas":[],"benchmarks":null,"insight":"Hiring backlog and growth plans.","commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Open Positions\n\n**Definition:** Number of unfilled roles.\n\n**What it tells you:** Hiring backlog and growth plans.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Fill","slug":"time-to-fill","definition":"Days from job opening to accepted offer.","formulas":["Time to Fill = Average of (Offer accepted date - Job posted date)"],"benchmarks":"- Below 30 days: Fast\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Slow, may impact growth","insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Time to Fill\n\n**Definition:** Days from job opening to accepted offer.\n\n**Formula:**\n```\nTime to Fill = Average of (Offer accepted date - Job posted date)\n```\n\n**Benchmarks:**\n- Below 30 days: Fast\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Slow, may impact growth\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Hire","slug":"time-to-hire","definition":"Days from candidate application to accepted offer.","formulas":["Time to Hire = Average of (Offer accepted date - Application date)"],"benchmarks":null,"insight":"Candidate experience and process efficiency.","commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Time to Hire\n\n**Definition:** Days from candidate application to accepted offer.\n\n**Formula:**\n```\nTime to Hire = Average of (Offer accepted date - Application date)\n```\n\n**What it tells you:** Candidate experience and process efficiency.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Offer Acceptance Rate","slug":"offer-acceptance-rate","definition":"Percentage of offers accepted.","formulas":["Acceptance Rate = Offers accepted / Offers extended × 100"],"benchmarks":"- Below 70%: Low, may indicate compensation or culture issues\n- 70-85%: Average\n- Above 85%: Strong employer brand","insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Offer Acceptance Rate\n\n**Definition:** Percentage of offers accepted.\n\n**Formula:**\n```\nAcceptance Rate = Offers accepted / Offers extended × 100\n```\n\n**Benchmarks:**\n- Below 70%: Low, may indicate compensation or culture issues\n- 70-85%: Average\n- Above 85%: Strong employer brand\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quality of Hire","slug":"quality-of-hire","definition":"Performance rating of new hires after defined period.","formulas":["Quality of Hire = Average performance rating of hires at 6-12 months"],"benchmarks":null,"insight":"Recruiting effectiveness at finding good candidates.","commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Quality of Hire\n\n**Definition:** Performance rating of new hires after defined period.\n\n**Formula:**\n```\nQuality of Hire = Average performance rating of hires at 6-12 months\n```\n\nOr: Percentage of new hires meeting/exceeding expectations.\n\n**What it tells you:** Recruiting effectiveness at finding good candidates.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost per Hire","slug":"cost-per-hire","definition":"Total recruiting cost divided by hires made.","formulas":["Cost per Hire = (Internal recruiting costs + External recruiting costs) / Total hires"],"benchmarks":"- IC roles: $3,000-$7,000\n- Technical roles: $7,000-$15,000\n- Executive roles: $20,000-$50,000+","insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Cost per Hire\n\n**Definition:** Total recruiting cost divided by hires made.\n\n**Formula:**\n```\nCost per Hire = (Internal recruiting costs + External recruiting costs) / Total hires\n```\n\n**Benchmarks:**\n- IC roles: $3,000-$7,000\n- Technical roles: $7,000-$15,000\n- Executive roles: $20,000-$50,000+\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Source of Hire","slug":"source-of-hire","definition":"Where successful candidates came from.","formulas":[],"benchmarks":null,"insight":"Most effective recruiting channels.","commonMistakes":null,"sources":[],"department":"People","category":"Recruiting Metrics","aliases":[],"rawMarkdown":"### Source of Hire\n\n**Definition:** Where successful candidates came from.\n\n**Channels:**\n- Employee referrals\n- Job boards\n- LinkedIn/direct sourcing\n- Agencies\n- Career page\n- Internal transfers\n\n**What it tells you:** Most effective recruiting channels.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Compa-Ratio","slug":"compa-ratio","definition":"Employee salary relative to market midpoint.","formulas":["Compa-Ratio = Actual salary / Market midpoint × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Compensation Metrics","aliases":[],"rawMarkdown":"### Compa-Ratio\n\n**Definition:** Employee salary relative to market midpoint.\n\n**Formula:**\n```\nCompa-Ratio = Actual salary / Market midpoint × 100\n```\n\n**Interpretation:**\n- Below 90%: Below market\n- 90-110%: At market\n- Above 110%: Above market\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Pay Equity Ratio","slug":"pay-equity-ratio","definition":"Pay comparison across demographic groups for same role.","formulas":["Pay Equity = Average pay (Group A) / Average pay (Group B)"],"benchmarks":null,"insight":"Fairness in compensation practices.","commonMistakes":null,"sources":[],"department":"People","category":"Compensation Metrics","aliases":[],"rawMarkdown":"### Pay Equity Ratio\n\n**Definition:** Pay comparison across demographic groups for same role.\n\n**Formula:**\n```\nPay Equity = Average pay (Group A) / Average pay (Group B)\n```\n\n**Target:** 0.98-1.02 (within 2%)\n\n**What it tells you:** Fairness in compensation practices.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Diversity Representation","slug":"diversity-representation","definition":"Percentage of workforce from underrepresented groups.","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"People","category":"Diversity Metrics","aliases":[],"rawMarkdown":"### Diversity Representation\n\n**Definition:** Percentage of workforce from underrepresented groups.\n\n**Dimensions:**\n- Gender\n- Race/ethnicity\n- Age\n- Disability status\n- Veteran status\n\nTrack overall and by department/level.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Diversity in Leadership","slug":"diversity-in-leadership","definition":"Representation at manager+ levels.","formulas":["Leadership Diversity = URG in leadership / Total leadership × 100"],"benchmarks":null,"insight":"Pipeline to leadership for underrepresented groups.","commonMistakes":null,"sources":[],"department":"People","category":"Diversity Metrics","aliases":[],"rawMarkdown":"### Diversity in Leadership\n\n**Definition:** Representation at manager+ levels.\n\n**Formula:**\n```\nLeadership Diversity = URG in leadership / Total leadership × 100\n```\n\n**What it tells you:** Pipeline to leadership for underrepresented groups.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Diversity Hiring Rate","slug":"diversity-hiring-rate","definition":"Percentage of new hires from underrepresented groups.","formulas":["Diversity Hiring = URG hires / Total hires × 100"],"benchmarks":null,"insight":"Progress on diversifying the workforce.","commonMistakes":null,"sources":[],"department":"People","category":"Diversity Metrics","aliases":[],"rawMarkdown":"### Diversity Hiring Rate\n\n**Definition:** Percentage of new hires from underrepresented groups.\n\n**Formula:**\n```\nDiversity Hiring = URG hires / Total hires × 100\n```\n\n**What it tells you:** Progress on diversifying the workforce.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Daily Active Users (DAU)","slug":"daily-active-users-dau","definition":"Unique users who performed a meaningful action in the product on a given day.","formulas":["DAU = Count of unique users with qualifying activity in 24-hour period"],"benchmarks":null,"insight":"Daily engagement level.","commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":["DAU"],"rawMarkdown":"### Daily Active Users (DAU)\n\n**Definition:** Unique users who performed a meaningful action in the product on a given day.\n\n**Formula:**\n```\nDAU = Count of unique users with qualifying activity in 24-hour period\n```\n\n**Qualifying activity:** Defined per product. Must be intentional engagement, not passive (e.g., not just logging in, but performing a core action).\n\n**What it tells you:** Daily engagement level.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Weekly Active Users (WAU)","slug":"weekly-active-users-wau","definition":"Unique users who performed a meaningful action in the product within a 7-day period.","formulas":["WAU = Count of unique users with qualifying activity in 7-day period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":["WAU"],"rawMarkdown":"### Weekly Active Users (WAU)\n\n**Definition:** Unique users who performed a meaningful action in the product within a 7-day period.\n\n**Formula:**\n```\nWAU = Count of unique users with qualifying activity in 7-day period\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Monthly Active Users (MAU)","slug":"monthly-active-users-mau","definition":"Unique users who performed a meaningful action in the product within a 30-day period.","formulas":["MAU = Count of unique users with qualifying activity in 30-day period"],"benchmarks":null,"insight":"Monthly engagement breadth.","commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":["MAU"],"rawMarkdown":"### Monthly Active Users (MAU)\n\n**Definition:** Unique users who performed a meaningful action in the product within a 30-day period.\n\n**Formula:**\n```\nMAU = Count of unique users with qualifying activity in 30-day period\n```\n\n**What it tells you:** Monthly engagement breadth.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"DAU/MAU Ratio (Stickiness)","slug":"daumau-ratio-stickiness","definition":"The ratio of daily to monthly active users, indicating how often users return.","formulas":["Stickiness = DAU / MAU × 100"],"benchmarks":"- Below 10%: Low stickiness, investigate product-market fit\n- 10-13%: Average for B2B SaaS (Mixpanel data: 13% median)\n- 13-20%: Good for B2B SaaS\n- 20-25%: Strong engagement\n- 25%+: Exceptional (top-quartile products)\n- 50%+: World-class (communication/collaboration tools like Slack)","insight":"How habit-forming the product is. Higher = users come back more frequently.","commonMistakes":null,"sources":["Mixpanel: Product Benchmarks 2024: https://mixpanel.com/blog/product-benchmarks/","Gainsight: DAU/MAU Guide: https://www.gainsight.com/essential-guide/product-management-metrics/dau-mau/"],"department":"Product","category":"Usage Metrics","aliases":[],"rawMarkdown":"### DAU/MAU Ratio (Stickiness)\n\n**Definition:** The ratio of daily to monthly active users, indicating how often users return.\n\n**Formula:**\n```\nStickiness = DAU / MAU × 100\n```\n\n**Benchmarks:**\n- Below 10%: Low stickiness, investigate product-market fit\n- 10-13%: Average for B2B SaaS (Mixpanel data: 13% median)\n- 13-20%: Good for B2B SaaS\n- 20-25%: Strong engagement\n- 25%+: Exceptional (top-quartile products)\n- 50%+: World-class (communication/collaboration tools like Slack)\n\n**Important context:** DAU/MAU is misleading for products not designed for daily use (accounting tools, signature apps, seasonal products). For B2B tools used weekly, WAU/MAU is more appropriate.\n\n**What it tells you:** How habit-forming the product is. Higher = users come back more frequently.\n\n**Sources:**\n- [Mixpanel: Product Benchmarks 2024](https://mixpanel.com/blog/product-benchmarks/)\n- [Gainsight: DAU/MAU Guide](https://www.gainsight.com/essential-guide/product-management-metrics/dau-mau/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"WAU/MAU Ratio","slug":"waumau-ratio","definition":"Weekly to monthly active user ratio.","formulas":["WAU/MAU = WAU / MAU × 100"],"benchmarks":"- Below 40%: Infrequent use\n- 40-60%: Moderate use\n- Above 60%: Regular weekly use","insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":[],"rawMarkdown":"### WAU/MAU Ratio\n\n**Definition:** Weekly to monthly active user ratio.\n\n**Formula:**\n```\nWAU/MAU = WAU / MAU × 100\n```\n\n**Benchmarks:**\n- Below 40%: Infrequent use\n- 40-60%: Moderate use\n- Above 60%: Regular weekly use\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Active Accounts","slug":"active-accounts","definition":"Customer accounts with at least one active user in the period.","formulas":["Active Accounts = Count of accounts with ≥1 active user in period"],"benchmarks":null,"insight":"Account-level engagement (vs user-level).","commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":[],"rawMarkdown":"### Active Accounts\n\n**Definition:** Customer accounts with at least one active user in the period.\n\n**Formula:**\n```\nActive Accounts = Count of accounts with ≥1 active user in period\n```\n\n**What it tells you:** Account-level engagement (vs user-level).\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Activation Rate","slug":"activation-rate","definition":"Percentage of new users/accounts that reach the activation milestone.","formulas":["Activation Rate = Users reaching activation / New users × 100"],"benchmarks":"- Below 20%: Low activation, onboarding issue\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong activation","insight":"Is the product delivering value to new users?","commonMistakes":null,"sources":[],"department":"Product","category":"Usage Metrics","aliases":[],"rawMarkdown":"### Activation Rate\n\n**Definition:** Percentage of new users/accounts that reach the activation milestone.\n\n**Formula:**\n```\nActivation Rate = Users reaching activation / New users × 100\n```\n\n**Activation milestone:** Product-specific moment when user has experienced core value. Define explicitly.\n\n**Benchmarks:**\n- Below 20%: Low activation, onboarding issue\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong activation\n\n**What it tells you:** Is the product delivering value to new users?\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Feature Adoption Rate","slug":"feature-adoption-rate","definition":"Percentage of users/accounts using a specific feature.","formulas":["Feature Adoption = Users using feature / Total active users × 100"],"benchmarks":null,"insight":"Which features are being used, which are ignored.","commonMistakes":null,"sources":[],"department":"Product","category":"Adoption Metrics","aliases":[],"rawMarkdown":"### Feature Adoption Rate\n\n**Definition:** Percentage of users/accounts using a specific feature.\n\n**Formula:**\n```\nFeature Adoption = Users using feature / Total active users × 100\n```\n\nTrack for each key feature.\n\n**What it tells you:** Which features are being used, which are ignored.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Core Feature Adoption","slug":"core-feature-adoption","definition":"Percentage of users using the core features that define the product.","formulas":["Core Feature Adoption = Users using all core features / Total active users × 100"],"benchmarks":"- Below 30%: Users not fully utilizing product\n- 30-50%: Moderate adoption\n- 50-70%: Good\n- Above 70%: Strong full-product adoption","insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Adoption Metrics","aliases":[],"rawMarkdown":"### Core Feature Adoption\n\n**Definition:** Percentage of users using the core features that define the product.\n\n**Formula:**\n```\nCore Feature Adoption = Users using all core features / Total active users × 100\n```\n\nDefine 3-5 \"core\" features that represent full product usage.\n\n**Benchmarks:**\n- Below 30%: Users not fully utilizing product\n- 30-50%: Moderate adoption\n- 50-70%: Good\n- Above 70%: Strong full-product adoption\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Feature Depth","slug":"feature-depth","definition":"How extensively users engage with features (not just whether they use them).","formulas":["Feature Depth = Average feature actions per user per period"],"benchmarks":null,"insight":"Intensity of usage, not just breadth.","commonMistakes":null,"sources":[],"department":"Product","category":"Adoption Metrics","aliases":[],"rawMarkdown":"### Feature Depth\n\n**Definition:** How extensively users engage with features (not just whether they use them).\n\n**Formula:**\n```\nFeature Depth = Average feature actions per user per period\n```\n\n**What it tells you:** Intensity of usage, not just breadth.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Feature Adoption","slug":"time-to-feature-adoption","definition":"Time from signup/activation to using a specific feature.","formulas":["Time to Adoption = Median of (First feature use date - Signup date)"],"benchmarks":null,"insight":"Feature discovery and adoption speed.","commonMistakes":null,"sources":[],"department":"Product","category":"Adoption Metrics","aliases":[],"rawMarkdown":"### Time to Feature Adoption\n\n**Definition:** Time from signup/activation to using a specific feature.\n\n**Formula:**\n```\nTime to Adoption = Median of (First feature use date - Signup date)\n```\n\n**What it tells you:** Feature discovery and adoption speed.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Breadth of Adoption","slug":"breadth-of-adoption","definition":"Average number of features used per account.","formulas":["Breadth = Total features used across all accounts / Active accounts"],"benchmarks":null,"insight":"How much of the product is being utilized.","commonMistakes":null,"sources":[],"department":"Product","category":"Adoption Metrics","aliases":[],"rawMarkdown":"### Breadth of Adoption\n\n**Definition:** Average number of features used per account.\n\n**Formula:**\n```\nBreadth = Total features used across all accounts / Active accounts\n```\n\n**What it tells you:** How much of the product is being utilized.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Session Frequency","slug":"session-frequency","definition":"Average number of sessions per user per period.","formulas":["Session Frequency = Total sessions / Active users"],"benchmarks":null,"insight":"How often users return.","commonMistakes":null,"sources":[],"department":"Product","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Session Frequency\n\n**Definition:** Average number of sessions per user per period.\n\n**Formula:**\n```\nSession Frequency = Total sessions / Active users\n```\n\n**What it tells you:** How often users return.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Session Duration","slug":"session-duration","definition":"Average time spent per session.","formulas":["Session Duration = Total session time / Total sessions"],"benchmarks":"Highly product-dependent. Track trend over time.","insight":"Depth of engagement per visit.","commonMistakes":null,"sources":[],"department":"Product","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Session Duration\n\n**Definition:** Average time spent per session.\n\n**Formula:**\n```\nSession Duration = Total session time / Total sessions\n```\n\n**Benchmarks:** Highly product-dependent. Track trend over time.\n\n**What it tells you:** Depth of engagement per visit.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time in Product","slug":"time-in-product","definition":"Total time spent in product per user per period.","formulas":["Time in Product = Sum of session duration per user"],"benchmarks":null,"insight":"Overall engagement intensity.","commonMistakes":null,"sources":[],"department":"Product","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Time in Product\n\n**Definition:** Total time spent in product per user per period.\n\n**Formula:**\n```\nTime in Product = Sum of session duration per user\n```\n\n**What it tells you:** Overall engagement intensity.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Actions per Session","slug":"actions-per-session","definition":"Average number of meaningful actions per session.","formulas":["Actions per Session = Total actions / Total sessions"],"benchmarks":null,"insight":"Productivity per session.","commonMistakes":null,"sources":[],"department":"Product","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Actions per Session\n\n**Definition:** Average number of meaningful actions per session.\n\n**Formula:**\n```\nActions per Session = Total actions / Total sessions\n```\n\n**What it tells you:** Productivity per session.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Product Qualified Accounts (PQAs)","slug":"product-qualified-accounts-pqas","definition":"Accounts that have demonstrated product engagement indicating sales-readiness.","formulas":["PQA = Accounts meeting product engagement threshold"],"benchmarks":null,"insight":"Product-driven sales signals.","commonMistakes":null,"sources":[],"department":"Product","category":"Engagement Metrics","aliases":[],"rawMarkdown":"### Product Qualified Accounts (PQAs)\n\n**Definition:** Accounts that have demonstrated product engagement indicating sales-readiness.\n\n**Formula:**\n```\nPQA = Accounts meeting product engagement threshold\n```\n\n**Threshold criteria (examples):**\n- Used product X times\n- Activated Y features\n- Added Z users\n- Reached usage limit\n\n**What it tells you:** Product-driven sales signals.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"User Retention (Day N)","slug":"user-retention-day-n","definition":"Percentage of users who return on day N after signup.","formulas":["Day N Retention = Users active on day N / Users who signed up N days ago × 100"],"benchmarks":"- Below 20%: Poor\n- 20-40%: Average\n- Above 40%: Good","insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Retention Metrics (Product)","aliases":[],"rawMarkdown":"### User Retention (Day N)\n\n**Definition:** Percentage of users who return on day N after signup.\n\n**Formula:**\n```\nDay N Retention = Users active on day N / Users who signed up N days ago × 100\n```\n\nCommon intervals: Day 1, Day 7, Day 14, Day 30.\n\n**Benchmarks (Day 30 for B2B SaaS):**\n- Below 20%: Poor\n- 20-40%: Average\n- Above 40%: Good\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cohort Retention","slug":"cohort-retention","definition":"Retention tracked by signup cohort over time.","formulas":["Cohort Retention (Week N) = Active users in week N / Users in cohort × 100"],"benchmarks":null,"insight":"How retention evolves, and whether it's improving for newer cohorts.","commonMistakes":null,"sources":[],"department":"Product","category":"Retention Metrics (Product)","aliases":[],"rawMarkdown":"### Cohort Retention\n\n**Definition:** Retention tracked by signup cohort over time.\n\n**Formula:**\n```\nCohort Retention (Week N) = Active users in week N / Users in cohort × 100\n```\n\n**What it tells you:** How retention evolves, and whether it's improving for newer cohorts.\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Resurrection Rate","slug":"resurrection-rate","definition":"Percentage of churned/dormant users who return.","formulas":["Resurrection Rate = Reactivated users / Dormant users × 100"],"benchmarks":null,"insight":"Can you win back lost users?","commonMistakes":null,"sources":[],"department":"Product","category":"Retention Metrics (Product)","aliases":[],"rawMarkdown":"### Resurrection Rate\n\n**Definition:** Percentage of churned/dormant users who return.\n\n**Formula:**\n```\nResurrection Rate = Reactivated users / Dormant users × 100\n```\n\n**What it tells you:** Can you win back lost users?\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Release Frequency","slug":"release-frequency","definition":"How often new releases are shipped to customers.","formulas":["Release Frequency = Releases per period"],"benchmarks":null,"insight":"Product development velocity.","commonMistakes":null,"sources":[],"department":"Product","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Release Frequency\n\n**Definition:** How often new releases are shipped to customers.\n\n**Formula:**\n```\nRelease Frequency = Releases per period\n```\n\n**What it tells you:** Product development velocity.\n\n**Note:** Related to Engineering's Deployment Frequency, but measured at feature/product level vs code deployment level.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Feature Delivery Rate","slug":"feature-delivery-rate","definition":"Percentage of planned features delivered on schedule.","formulas":["Delivery Rate = Features shipped on time / Features planned × 100"],"benchmarks":null,"insight":"Roadmap predictability.","commonMistakes":null,"sources":[],"department":"Product","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Feature Delivery Rate\n\n**Definition:** Percentage of planned features delivered on schedule.\n\n**Formula:**\n```\nDelivery Rate = Features shipped on time / Features planned × 100\n```\n\n**What it tells you:** Roadmap predictability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Roadmap Completion","slug":"roadmap-completion","definition":"Percentage of roadmap items completed in the period.","formulas":["Roadmap Completion = Roadmap items completed / Roadmap items planned × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Roadmap Completion\n\n**Definition:** Percentage of roadmap items completed in the period.\n\n**Formula:**\n```\nRoadmap Completion = Roadmap items completed / Roadmap items planned × 100\n```\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Market","slug":"time-to-market","definition":"Time from feature concept to production release.","formulas":["Time to Market = Median of (Release date - Concept approval date)"],"benchmarks":null,"insight":"How quickly product can respond to market needs.","commonMistakes":null,"sources":[],"department":"Product","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Time to Market\n\n**Definition:** Time from feature concept to production release.\n\n**Formula:**\n```\nTime to Market = Median of (Release date - Concept approval date)\n```\n\n**What it tells you:** How quickly product can respond to market needs.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Error Rate (User-Facing)","slug":"error-rate-user-facing","definition":"Percentage of user actions that result in errors.","formulas":["Error Rate = Error events / Total user actions × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Quality Metrics (Product)","aliases":[],"rawMarkdown":"### Error Rate (User-Facing)\n\n**Definition:** Percentage of user actions that result in errors.\n\n**Formula:**\n```\nError Rate = Error events / Total user actions × 100\n```\n\n**Target:** <1%\n\n**Note:** Related to Engineering's Error Rate, but measured from user action perspective.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bug Escape Rate","slug":"bug-escape-rate","definition":"Bugs found in production vs found in testing.","formulas":["Bug Escape Rate = Production bugs / (Production bugs + Bugs caught in QA) × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Quality Metrics (Product)","aliases":[],"rawMarkdown":"### Bug Escape Rate\n\n**Definition:** Bugs found in production vs found in testing.\n\n**Formula:**\n```\nBug Escape Rate = Production bugs / (Production bugs + Bugs caught in QA) × 100\n```\n\n**Target:** <10%\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"User-Reported Issues","slug":"user-reported-issues","definition":"Number of bugs/issues reported by users.","formulas":["User-Reported Issues = Count of user-submitted bug reports"],"benchmarks":null,"insight":"Quality as perceived by users.","commonMistakes":null,"sources":[],"department":"Product","category":"Quality Metrics (Product)","aliases":[],"rawMarkdown":"### User-Reported Issues\n\n**Definition:** Number of bugs/issues reported by users.\n\n**Formula:**\n```\nUser-Reported Issues = Count of user-submitted bug reports\n```\n\n**What it tells you:** Quality as perceived by users.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Feature Request Volume","slug":"feature-request-volume","definition":"Number of feature requests received.","formulas":["Feature Request Volume = Count of feature requests per period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Product","category":"Quality Metrics (Product)","aliases":[],"rawMarkdown":"### Feature Request Volume\n\n**Definition:** Number of feature requests received.\n\n**Formula:**\n```\nFeature Request Volume = Count of feature requests per period\n```\n\nTrack by theme/category to identify patterns.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Revenue","slug":"services-revenue","definition":"Revenue from professional services (implementation, consulting, training).","formulas":["Services Revenue = Sum of recognized services revenue in period"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Services Revenue\n\n**Definition:** Revenue from professional services (implementation, consulting, training).\n\n**Formula:**\n```\nServices Revenue = Sum of recognized services revenue in period\n```\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services as % of Total Revenue","slug":"services-as-of-total-revenue","definition":"Professional services contribution to total revenue.","formulas":["Services % = Services revenue / Total revenue × 100"],"benchmarks":"- Below 10%: Product-led, minimal services\n- 10-20%: Services-assisted product\n- 20-30%: Balanced model\n- Above 30%: Services-heavy (may impact valuation multiples)","insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Services as % of Total Revenue\n\n**Definition:** Professional services contribution to total revenue.\n\n**Formula:**\n```\nServices % = Services revenue / Total revenue × 100\n```\n\n**Benchmarks:**\n- Below 10%: Product-led, minimal services\n- 10-20%: Services-assisted product\n- 20-30%: Balanced model\n- Above 30%: Services-heavy (may impact valuation multiples)\n\n**Note:** High services % can be viewed negatively by investors (less scalable than product revenue).\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Attach Rate","slug":"services-attach-rate","definition":"Percentage of product deals that include services.","formulas":["Attach Rate = Deals with services / Total deals × 100"],"benchmarks":null,"insight":"How often services are sold with product.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Services Attach Rate\n\n**Definition:** Percentage of product deals that include services.\n\n**Formula:**\n```\nAttach Rate = Deals with services / Total deals × 100\n```\n\n**What it tells you:** How often services are sold with product.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Average Services Deal Size","slug":"average-services-deal-size","definition":"Average value of services engagements.","formulas":["Avg Services Deal = Total services bookings / Number of services engagements"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Average Services Deal Size\n\n**Definition:** Average value of services engagements.\n\n**Formula:**\n```\nAvg Services Deal = Total services bookings / Number of services engagements\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Backlog","slug":"services-backlog","definition":"Contracted services not yet delivered.","formulas":["Backlog = Services booked - Services delivered (revenue recognized)"],"benchmarks":null,"insight":"Future services revenue and delivery workload.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Revenue Metrics","aliases":[],"rawMarkdown":"### Services Backlog\n\n**Definition:** Contracted services not yet delivered.\n\n**Formula:**\n```\nBacklog = Services booked - Services delivered (revenue recognized)\n```\n\n**What it tells you:** Future services revenue and delivery workload.\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Gross Margin","slug":"services-gross-margin","definition":"Services revenue minus direct delivery costs.","formulas":["Services Gross Margin = (Services revenue - Direct delivery cost) / Services revenue × 100"],"benchmarks":"- Below 20%: Unprofitable, review pricing\n- 20-30%: Low margin\n- 30-40%: Average\n- 40-50%: Good\n- Above 50%: Excellent","insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Services Gross Margin\n\n**Definition:** Services revenue minus direct delivery costs.\n\n**Formula:**\n```\nServices Gross Margin = (Services revenue - Direct delivery cost) / Services revenue × 100\n```\n\n**Direct costs:** Consultant salaries, travel, contractor costs.\n\n**Benchmarks:**\n- Below 20%: Unprofitable, review pricing\n- 20-30%: Low margin\n- 30-40%: Average\n- 40-50%: Good\n- Above 50%: Excellent\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Project Margin","slug":"project-margin","definition":"Gross margin on individual projects.","formulas":["Project Margin = (Project revenue - Project costs) / Project revenue × 100"],"benchmarks":null,"insight":"Profitability by engagement. Identify losers.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Project Margin\n\n**Definition:** Gross margin on individual projects.\n\n**Formula:**\n```\nProject Margin = (Project revenue - Project costs) / Project revenue × 100\n```\n\n**What it tells you:** Profitability by engagement. Identify losers.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Realization Rate","slug":"realization-rate","definition":"Actual revenue realized vs potential revenue at standard rates.","formulas":["Realization Rate = Actual revenue / (Hours worked × Standard rate) × 100"],"benchmarks":"- Below 80%: Significant discounting or write-offs\n- 80-90%: Average\n- 90-100%: Good pricing discipline\n- Above 100%: Premium pricing achieved","insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Realization Rate\n\n**Definition:** Actual revenue realized vs potential revenue at standard rates.\n\n**Formula:**\n```\nRealization Rate = Actual revenue / (Hours worked × Standard rate) × 100\n```\n\n**Benchmarks:**\n- Below 80%: Significant discounting or write-offs\n- 80-90%: Average\n- 90-100%: Good pricing discipline\n- Above 100%: Premium pricing achieved\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Write-off Rate","slug":"write-off-rate","definition":"Percentage of billable hours written off (not billed to client).","formulas":["Write-off Rate = Written-off hours / Total billable hours × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Profitability Metrics","aliases":[],"rawMarkdown":"### Write-off Rate\n\n**Definition:** Percentage of billable hours written off (not billed to client).\n\n**Formula:**\n```\nWrite-off Rate = Written-off hours / Total billable hours × 100\n```\n\n**Target:** <10%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Billable Utilization","slug":"billable-utilization","definition":"Percentage of available time spent on billable work.","formulas":["Billable Utilization = Billable hours / Available hours × 100"],"benchmarks":"- Below 60%: Underutilized\n- 60-70%: Average\n- 70-80%: Good\n- Above 80%: Maxed out (burnout risk)","insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Utilization Metrics","aliases":[],"rawMarkdown":"### Billable Utilization\n\n**Definition:** Percentage of available time spent on billable work.\n\n**Formula:**\n```\nBillable Utilization = Billable hours / Available hours × 100\n```\n\n**Available hours:** Total work hours minus PTO, holidays, company meetings.\n\n**Benchmarks:**\n- Below 60%: Underutilized\n- 60-70%: Average\n- 70-80%: Good\n- Above 80%: Maxed out (burnout risk)\n\n**Target:** 70-75% sustainable.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Total Utilization","slug":"total-utilization","definition":"Percentage of time spent on all productive work (billable + non-billable).","formulas":["Total Utilization = (Billable + Non-billable productive hours) / Available hours × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Utilization Metrics","aliases":[],"rawMarkdown":"### Total Utilization\n\n**Definition:** Percentage of time spent on all productive work (billable + non-billable).\n\n**Formula:**\n```\nTotal Utilization = (Billable + Non-billable productive hours) / Available hours × 100\n```\n\n**Non-billable productive:** Training, pre-sales, internal projects.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bench Rate","slug":"bench-rate","definition":"Percentage of team without billable assignment.","formulas":["Bench Rate = Consultants without assignment / Total consultants × 100"],"benchmarks":null,"insight":"Capacity available vs excess.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Utilization Metrics","aliases":[],"rawMarkdown":"### Bench Rate\n\n**Definition:** Percentage of team without billable assignment.\n\n**Formula:**\n```\nBench Rate = Consultants without assignment / Total consultants × 100\n```\n\n**Target:** <15%\n\n**What it tells you:** Capacity available vs excess.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Capacity","slug":"capacity","definition":"Total billable hours available in period.","formulas":["Capacity = Consultants × Available hours per consultant"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Utilization Metrics","aliases":[],"rawMarkdown":"### Capacity\n\n**Definition:** Total billable hours available in period.\n\n**Formula:**\n```\nCapacity = Consultants × Available hours per consultant\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Capacity Utilization","slug":"capacity-utilization","definition":"Billable hours sold vs available.","formulas":["Capacity Utilization = Hours booked / Capacity × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Utilization Metrics","aliases":[],"rawMarkdown":"### Capacity Utilization\n\n**Definition:** Billable hours sold vs available.\n\n**Formula:**\n```\nCapacity Utilization = Hours booked / Capacity × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"On-Time Delivery","slug":"on-time-delivery","definition":"Percentage of projects delivered by committed date.","formulas":["On-Time Delivery = Projects on time / Total projects completed × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### On-Time Delivery\n\n**Definition:** Percentage of projects delivered by committed date.\n\n**Formula:**\n```\nOn-Time Delivery = Projects on time / Total projects completed × 100\n```\n\n**Target:** >85%\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"On-Budget Delivery","slug":"on-budget-delivery","definition":"Percentage of projects delivered within budget.","formulas":["On-Budget = Projects within budget / Total projects × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### On-Budget Delivery\n\n**Definition:** Percentage of projects delivered within budget.\n\n**Formula:**\n```\nOn-Budget = Projects within budget / Total projects × 100\n```\n\n**Target:** >80%\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Scope Change Rate","slug":"scope-change-rate","definition":"Percentage of projects with scope changes.","formulas":["Scope Change Rate = Projects with scope changes / Total projects × 100"],"benchmarks":null,"insight":"Scoping accuracy and change management.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Scope Change Rate\n\n**Definition:** Percentage of projects with scope changes.\n\n**Formula:**\n```\nScope Change Rate = Projects with scope changes / Total projects × 100\n```\n\n**What it tells you:** Scoping accuracy and change management.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Project Duration Accuracy","slug":"project-duration-accuracy","definition":"Actual duration vs estimated duration.","formulas":["Duration Accuracy = Estimated duration / Actual duration × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Project Duration Accuracy\n\n**Definition:** Actual duration vs estimated duration.\n\n**Formula:**\n```\nDuration Accuracy = Estimated duration / Actual duration × 100\n```\n\n**Target:** 90-110%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Milestone Completion Rate","slug":"milestone-completion-rate","definition":"Percentage of milestones completed on schedule.","formulas":["Milestone Completion = Milestones on time / Total milestones × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Delivery Metrics","aliases":[],"rawMarkdown":"### Milestone Completion Rate\n\n**Definition:** Percentage of milestones completed on schedule.\n\n**Formula:**\n```\nMilestone Completion = Milestones on time / Total milestones × 100\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Project CSAT","slug":"project-csat","definition":"Customer satisfaction with services engagement.","formulas":["Project CSAT = Positive ratings / Total ratings × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Project CSAT\n\n**Definition:** Customer satisfaction with services engagement.\n\n**Formula:**\n```\nProject CSAT = Positive ratings / Total ratings × 100\n```\n\nSurveyed at project completion.\n\n**Target:** >90%\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Project NPS","slug":"project-nps","definition":"Net Promoter Score for services experience.","formulas":["Project NPS = % Promoters - % Detractors"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Project NPS\n\n**Definition:** Net Promoter Score for services experience.\n\n**Formula:**\n```\nProject NPS = % Promoters - % Detractors\n```\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Escalation Rate","slug":"escalation-rate","definition":"Percentage of projects with escalations.","formulas":["Escalation Rate = Projects with escalations / Total projects × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Escalation Rate\n\n**Definition:** Percentage of projects with escalations.\n\n**Formula:**\n```\nEscalation Rate = Projects with escalations / Total projects × 100\n```\n\n**Target:** <10%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Rework Rate","slug":"rework-rate","definition":"Percentage of deliverables requiring rework.","formulas":["Rework Rate = Deliverables reworked / Total deliverables × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Rework Rate\n\n**Definition:** Percentage of deliverables requiring rework.\n\n**Formula:**\n```\nRework Rate = Deliverables reworked / Total deliverables × 100\n```\n\n**Target:** <5%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Reference-ability","slug":"reference-ability","definition":"Percentage of completed projects that become referenceable.","formulas":["Reference-ability = Referenceable projects / Completed projects × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Reference-ability\n\n**Definition:** Percentage of completed projects that become referenceable.\n\n**Formula:**\n```\nReference-ability = Referenceable projects / Completed projects × 100\n```\n\n**Target:** >70%\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue per Consultant","slug":"revenue-per-consultant","definition":"Services revenue per delivery resource.","formulas":["Revenue per Consultant = Services revenue / Consultant headcount"],"benchmarks":"$150K-$300K annually, depending on rate structure.","insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Revenue per Consultant\n\n**Definition:** Services revenue per delivery resource.\n\n**Formula:**\n```\nRevenue per Consultant = Services revenue / Consultant headcount\n```\n\n**Benchmarks:** $150K-$300K annually, depending on rate structure.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Projects per Consultant","slug":"projects-per-consultant","definition":"Average projects delivered per consultant per year.","formulas":["Projects per Consultant = Completed projects / Consultant headcount"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Projects per Consultant\n\n**Definition:** Average projects delivered per consultant per year.\n\n**Formula:**\n```\nProjects per Consultant = Completed projects / Consultant headcount\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Average Project Duration","slug":"average-project-duration","definition":"Typical length of engagements.","formulas":["Avg Duration = Sum of project durations / Number of projects"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Average Project Duration\n\n**Definition:** Typical length of engagements.\n\n**Formula:**\n```\nAvg Duration = Sum of project durations / Number of projects\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Pipeline","slug":"services-pipeline","definition":"Value of services opportunities in pipeline.","formulas":["Services Pipeline = Sum of services opportunity values"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Services Pipeline\n\n**Definition:** Value of services opportunities in pipeline.\n\n**Formula:**\n```\nServices Pipeline = Sum of services opportunity values\n```\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Services Win Rate","slug":"services-win-rate","definition":"Percentage of services opportunities won.","formulas":["Services Win Rate = Services deals won / (Won + Lost) × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Professional Services","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Services Win Rate\n\n**Definition:** Percentage of services opportunities won.\n\n**Formula:**\n```\nServices Win Rate = Services deals won / (Won + Lost) × 100\n```\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Time to Start","slug":"time-to-start","definition":"Time from services sold to project kickoff.","formulas":["Time to Start = Median of (Kickoff date - Close date)"],"benchmarks":null,"insight":"Resource availability and scheduling efficiency.","commonMistakes":null,"sources":[],"department":"Professional Services","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Time to Start\n\n**Definition:** Time from services sold to project kickoff.\n\n**Formula:**\n```\nTime to Start = Median of (Kickoff date - Close date)\n```\n\n**What it tells you:** Resource availability and scheduling efficiency.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Pipeline Hygiene Score","slug":"pipeline-hygiene-score","definition":"Quality assessment of pipeline data and process adherence.","formulas":["Hygiene Score = (Complete opps + Updated opps + Valid dates + Accurate stages) / 4"],"benchmarks":null,"insight":"Can you trust your pipeline data?","commonMistakes":null,"sources":[],"department":"RevOps","category":"Pipeline Operations","aliases":[],"rawMarkdown":"### Pipeline Hygiene Score\n\n**Definition:** Quality assessment of pipeline data and process adherence.\n\n**Components:**\n- Opportunities with required fields complete\n- Opportunities updated within SLA\n- Opportunities with valid close dates\n- Opportunities with accurate stage assignment\n\n**Formula:**\n```\nHygiene Score = (Complete opps + Updated opps + Valid dates + Accurate stages) / 4\n```\n\nEach component scored as percentage meeting criteria.\n\n**Target:** >90%\n\n**What it tells you:** Can you trust your pipeline data?\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Forecast Accuracy","slug":"forecast-accuracy","definition":"How closely forecasted revenue matched actual revenue.","formulas":["Forecast Accuracy = 1 - |Forecasted - Actual| / Actual"],"benchmarks":"- Below 70%: Poor forecasting\n- 70-85%: Average\n- 85-95%: Good\n- Above 95%: Excellent","insight":"Predictability of revenue. Critical for planning.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Pipeline Operations","aliases":[],"rawMarkdown":"### Forecast Accuracy\n\n**Definition:** How closely forecasted revenue matched actual revenue.\n\n**Formula:**\n```\nForecast Accuracy = 1 - |Forecasted - Actual| / Actual\n```\n\n**Benchmarks:**\n- Below 70%: Poor forecasting\n- 70-85%: Average\n- 85-95%: Good\n- Above 95%: Excellent\n\n**What it tells you:** Predictability of revenue. Critical for planning.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Commit Accuracy","slug":"commit-accuracy","definition":"Percentage of committed deals that close.","formulas":["Commit Accuracy = Deals closed from commit / Deals in commit × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Pipeline Operations","aliases":[],"rawMarkdown":"### Commit Accuracy\n\n**Definition:** Percentage of committed deals that close.\n\n**Formula:**\n```\nCommit Accuracy = Deals closed from commit / Deals in commit × 100\n```\n\n**Target:** >80%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Stage Conversion Rates","slug":"stage-conversion-rates","definition":"Conversion rate between each pipeline stage.","formulas":["Stage Conversion = Opportunities advancing to next stage / Opportunities in stage × 100"],"benchmarks":null,"insight":"Where deals get stuck or leak.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Pipeline Operations","aliases":[],"rawMarkdown":"### Stage Conversion Rates\n\n**Definition:** Conversion rate between each pipeline stage.\n\n**Formula:**\n```\nStage Conversion = Opportunities advancing to next stage / Opportunities in stage × 100\n```\n\nTrack for each stage transition.\n\n**What it tells you:** Where deals get stuck or leak.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quote Volume","slug":"quote-volume","definition":"Number of quotes generated in a period.","formulas":["Quote Volume = Count of quotes created"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Quote-to-Order","aliases":[],"rawMarkdown":"### Quote Volume\n\n**Definition:** Number of quotes generated in a period.\n\n**Formula:**\n```\nQuote Volume = Count of quotes created\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quote-to-Order Rate","slug":"quote-to-order-rate","definition":"Percentage of quotes that convert to orders.","formulas":["Quote-to-Order = Orders / Quotes × 100"],"benchmarks":"- Below 20%: Low conversion\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong","insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Quote-to-Order","aliases":[],"rawMarkdown":"### Quote-to-Order Rate\n\n**Definition:** Percentage of quotes that convert to orders.\n\n**Formula:**\n```\nQuote-to-Order = Orders / Quotes × 100\n```\n\n**Benchmarks:**\n- Below 20%: Low conversion\n- 20-40%: Average\n- 40-60%: Good\n- Above 60%: Strong\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quote Cycle Time","slug":"quote-cycle-time","definition":"Time from quote request to quote delivery.","formulas":["Quote Cycle Time = Median of (Quote sent date - Quote requested date)"],"benchmarks":null,"insight":"Speed of quote generation process.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Quote-to-Order","aliases":[],"rawMarkdown":"### Quote Cycle Time\n\n**Definition:** Time from quote request to quote delivery.\n\n**Formula:**\n```\nQuote Cycle Time = Median of (Quote sent date - Quote requested date)\n```\n\n**Target:** <24 hours for standard quotes\n\n**What it tells you:** Speed of quote generation process.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quote Accuracy","slug":"quote-accuracy","definition":"Percentage of quotes requiring no revision.","formulas":["Quote Accuracy = Quotes with no revision / Total quotes × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Quote-to-Order","aliases":[],"rawMarkdown":"### Quote Accuracy\n\n**Definition:** Percentage of quotes requiring no revision.\n\n**Formula:**\n```\nQuote Accuracy = Quotes with no revision / Total quotes × 100\n```\n\n**Target:** >90%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Discount Rate","slug":"discount-rate","definition":"Average discount applied to deals.","formulas":["Discount Rate = (List price - Sold price) / List price × 100"],"benchmarks":null,"insight":"Pricing discipline and competitive pressure.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Quote-to-Order","aliases":[],"rawMarkdown":"### Discount Rate\n\n**Definition:** Average discount applied to deals.\n\n**Formula:**\n```\nDiscount Rate = (List price - Sold price) / List price × 100\n```\n\n**What it tells you:** Pricing discipline and competitive pressure.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Order-to-Activation Time","slug":"order-to-activation-time","definition":"Time from signed order to customer activation/provisioning.","formulas":["Order-to-Activation = Median of (Activation date - Order signed date)"],"benchmarks":null,"insight":"How quickly customers get access after buying.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Order Processing","aliases":[],"rawMarkdown":"### Order-to-Activation Time\n\n**Definition:** Time from signed order to customer activation/provisioning.\n\n**Formula:**\n```\nOrder-to-Activation = Median of (Activation date - Order signed date)\n```\n\n**What it tells you:** How quickly customers get access after buying.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Order Processing Time","slug":"order-processing-time","definition":"Time to process an order through internal systems.","formulas":["Processing Time = Median of (Order complete in system - Order received)"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Order Processing","aliases":[],"rawMarkdown":"### Order Processing Time\n\n**Definition:** Time to process an order through internal systems.\n\n**Formula:**\n```\nProcessing Time = Median of (Order complete in system - Order received)\n```\n\n**Target:** Same day for standard orders.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Order Error Rate","slug":"order-error-rate","definition":"Percentage of orders with processing errors.","formulas":["Order Error Rate = Orders with errors / Total orders × 100"],"benchmarks":null,"insight":"Process quality and system reliability.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Order Processing","aliases":[],"rawMarkdown":"### Order Error Rate\n\n**Definition:** Percentage of orders with processing errors.\n\n**Formula:**\n```\nOrder Error Rate = Orders with errors / Total orders × 100\n```\n\n**Target:** <2%\n\n**What it tells you:** Process quality and system reliability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Billing Accuracy","slug":"billing-accuracy","definition":"Percentage of invoices generated correctly on first attempt.","formulas":["Billing Accuracy = Invoices without correction / Total invoices × 100"],"benchmarks":null,"insight":"Billing process reliability.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Billing Operations","aliases":[],"rawMarkdown":"### Billing Accuracy\n\n**Definition:** Percentage of invoices generated correctly on first attempt.\n\n**Formula:**\n```\nBilling Accuracy = Invoices without correction / Total invoices × 100\n```\n\n**Target:** >98%\n\n**What it tells you:** Billing process reliability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Invoice Cycle Time","slug":"invoice-cycle-time","definition":"Time from billing event to invoice delivery.","formulas":["Invoice Cycle Time = Median of (Invoice sent - Billing trigger date)"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Billing Operations","aliases":[],"rawMarkdown":"### Invoice Cycle Time\n\n**Definition:** Time from billing event to invoice delivery.\n\n**Formula:**\n```\nInvoice Cycle Time = Median of (Invoice sent - Billing trigger date)\n```\n\n**Target:** <5 business days\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Billing Disputes","slug":"billing-disputes","definition":"Percentage of invoices disputed by customers.","formulas":["Dispute Rate = Invoices disputed / Total invoices × 100"],"benchmarks":null,"insight":"Invoice accuracy and customer alignment.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Billing Operations","aliases":[],"rawMarkdown":"### Billing Disputes\n\n**Definition:** Percentage of invoices disputed by customers.\n\n**Formula:**\n```\nDispute Rate = Invoices disputed / Total invoices × 100\n```\n\n**Target:** <1%\n\n**What it tells you:** Invoice accuracy and customer alignment.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Credit Memo Rate","slug":"credit-memo-rate","definition":"Percentage of invoices requiring credit memos.","formulas":["Credit Memo Rate = Credit memos issued / Total invoices × 100"],"benchmarks":null,"insight":"Billing errors and adjustments.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Billing Operations","aliases":[],"rawMarkdown":"### Credit Memo Rate\n\n**Definition:** Percentage of invoices requiring credit memos.\n\n**Formula:**\n```\nCredit Memo Rate = Credit memos issued / Total invoices × 100\n```\n\n**Target:** <2%\n\n**What it tells you:** Billing errors and adjustments.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Days Sales Outstanding (DSO)","slug":"days-sales-outstanding-dso","definition":"Average days to collect payment after invoicing.","formulas":["DSO = (Accounts Receivable / Revenue) × Days in period"],"benchmarks":"- Below 30 days: Excellent\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Collection issues","insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Collections","aliases":["DSO"],"rawMarkdown":"### Days Sales Outstanding (DSO)\n\n**Definition:** Average days to collect payment after invoicing.\n\n**Formula:**\n```\nDSO = (Accounts Receivable / Revenue) × Days in period\n```\n\n**Benchmarks:**\n- Below 30 days: Excellent\n- 30-45 days: Good\n- 45-60 days: Average\n- Above 60 days: Collection issues\n\n**Note:** Also defined in [Finance metrics](finance.md). Same definition.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Collection Effectiveness Index (CEI)","slug":"collection-effectiveness-index-cei","definition":"How effective collections are at collecting receivables.","formulas":["CEI = (Beginning AR + Credit sales - Ending AR) / (Beginning AR + Credit sales - Ending current AR) × 100"],"benchmarks":"- Below 70%: Poor\n- 70-80%: Average\n- Above 80%: Good","insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Collections","aliases":["CEI"],"rawMarkdown":"### Collection Effectiveness Index (CEI)\n\n**Definition:** How effective collections are at collecting receivables.\n\n**Formula:**\n```\nCEI = (Beginning AR + Credit sales - Ending AR) / (Beginning AR + Credit sales - Ending current AR) × 100\n```\n\n**Benchmarks:**\n- Below 70%: Poor\n- 70-80%: Average\n- Above 80%: Good\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Aging Buckets","slug":"aging-buckets","definition":"Distribution of receivables by age.","formulas":["Bucket % = AR in bucket / Total AR × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Collections","aliases":[],"rawMarkdown":"### Aging Buckets\n\n**Definition:** Distribution of receivables by age.\n\n**Buckets:**\n- Current (0-30 days)\n- 31-60 days\n- 61-90 days\n- 90+ days\n\n**Formula:**\n```\nBucket % = AR in bucket / Total AR × 100\n```\n\n**Targets:**\n- Current: >80%\n- 31-60: <15%\n- 61-90: <4%\n- 90+: <1%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Bad Debt Rate","slug":"bad-debt-rate","definition":"Percentage of revenue written off as uncollectable.","formulas":["Bad Debt Rate = Write-offs / Revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Collections","aliases":[],"rawMarkdown":"### Bad Debt Rate\n\n**Definition:** Percentage of revenue written off as uncollectable.\n\n**Formula:**\n```\nBad Debt Rate = Write-offs / Revenue × 100\n```\n\n**Target:** <1%\n\n**Note:** Also defined in [Finance metrics](finance.md). Same definition.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Payment Method Distribution","slug":"payment-method-distribution","definition":"Breakdown of payments by method.","formulas":[],"benchmarks":null,"insight":"Collection risk and processing costs by method.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Collections","aliases":[],"rawMarkdown":"### Payment Method Distribution\n\n**Definition:** Breakdown of payments by method.\n\n**Methods:**\n- Credit card\n- ACH/Direct debit\n- Wire transfer\n- Check\n\n**What it tells you:** Collection risk and processing costs by method.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Recognized vs Billed","slug":"recognized-vs-billed","definition":"Ratio of recognized revenue to billed revenue.","formulas":["Recognized/Billed = Recognized revenue / Billed revenue"],"benchmarks":null,"insight":"Revenue recognition timing vs cash collection.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Revenue Recognition","aliases":[],"rawMarkdown":"### Recognized vs Billed\n\n**Definition:** Ratio of recognized revenue to billed revenue.\n\n**Formula:**\n```\nRecognized/Billed = Recognized revenue / Billed revenue\n```\n\n**What it tells you:** Revenue recognition timing vs cash collection.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Deferred Revenue Balance","slug":"deferred-revenue-balance","definition":"Total revenue collected but not yet recognized.","formulas":["Deferred Revenue = Cumulative billings - Cumulative recognized revenue"],"benchmarks":null,"insight":"Future revenue already paid for.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Revenue Recognition","aliases":[],"rawMarkdown":"### Deferred Revenue Balance\n\n**Definition:** Total revenue collected but not yet recognized.\n\n**Formula:**\n```\nDeferred Revenue = Cumulative billings - Cumulative recognized revenue\n```\n\n**What it tells you:** Future revenue already paid for.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Unbilled Revenue","slug":"unbilled-revenue","definition":"Revenue recognized but not yet invoiced.","formulas":["Unbilled Revenue = Recognized revenue - Billed revenue (where recognition > billing)"],"benchmarks":null,"insight":"Revenue owed but not yet invoiced.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Revenue Recognition","aliases":[],"rawMarkdown":"### Unbilled Revenue\n\n**Definition:** Revenue recognized but not yet invoiced.\n\n**Formula:**\n```\nUnbilled Revenue = Recognized revenue - Billed revenue (where recognition > billing)\n```\n\n**What it tells you:** Revenue owed but not yet invoiced.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Revenue Recognition Accuracy","slug":"revenue-recognition-accuracy","definition":"Percentage of revenue correctly recognized per ASC 606.","formulas":["Recognition Accuracy = Revenue recognized correctly / Total revenue × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Revenue Recognition","aliases":[],"rawMarkdown":"### Revenue Recognition Accuracy\n\n**Definition:** Percentage of revenue correctly recognized per ASC 606.\n\n**Formula:**\n```\nRecognition Accuracy = Revenue recognized correctly / Total revenue × 100\n```\n\n**Target:** 100%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Renewal Notification Rate","slug":"renewal-notification-rate","definition":"Percentage of renewals where customer was notified on time.","formulas":["Notification Rate = Renewals notified on time / Total renewals × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Renewal Operations","aliases":[],"rawMarkdown":"### Renewal Notification Rate\n\n**Definition:** Percentage of renewals where customer was notified on time.\n\n**Formula:**\n```\nNotification Rate = Renewals notified on time / Total renewals × 100\n```\n\n**Target:** 100%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Auto-Renewal Rate","slug":"auto-renewal-rate","definition":"Percentage of renewals processed automatically.","formulas":["Auto-Renewal Rate = Auto-renewed contracts / Total renewals × 100"],"benchmarks":null,"insight":"Renewal process efficiency.","commonMistakes":null,"sources":[],"department":"RevOps","category":"Renewal Operations","aliases":[],"rawMarkdown":"### Auto-Renewal Rate\n\n**Definition:** Percentage of renewals processed automatically.\n\n**Formula:**\n```\nAuto-Renewal Rate = Auto-renewed contracts / Total renewals × 100\n```\n\n**What it tells you:** Renewal process efficiency.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Renewal Processing Time","slug":"renewal-processing-time","definition":"Time to process a renewal from trigger to completion.","formulas":["Processing Time = Median of (Renewal complete - Renewal trigger)"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Renewal Operations","aliases":[],"rawMarkdown":"### Renewal Processing Time\n\n**Definition:** Time to process a renewal from trigger to completion.\n\n**Formula:**\n```\nProcessing Time = Median of (Renewal complete - Renewal trigger)\n```\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"System Sync Accuracy","slug":"system-sync-accuracy","definition":"Data consistency across RevOps systems (CRM, billing, ERP).","formulas":["Sync Accuracy = Records matching across systems / Total records × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Systems & Data Quality","aliases":[],"rawMarkdown":"### System Sync Accuracy\n\n**Definition:** Data consistency across RevOps systems (CRM, billing, ERP).\n\n**Formula:**\n```\nSync Accuracy = Records matching across systems / Total records × 100\n```\n\n**Target:** >99%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Data Completeness","slug":"data-completeness","definition":"Percentage of required fields populated in RevOps systems.","formulas":["Completeness = Fields populated / Required fields × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"RevOps","category":"Systems & Data Quality","aliases":[],"rawMarkdown":"### Data Completeness\n\n**Definition:** Percentage of required fields populated in RevOps systems.\n\n**Formula:**\n```\nCompleteness = Fields populated / Required fields × 100\n```\n\n**Target:** >95%\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Pipeline Value","slug":"pipeline-value","definition":"Total value of all active sales opportunities.","formulas":["Pipeline Value = Sum of (Deal value × Stage probability) for all open opportunities","Pipeline Value = Sum of (Deal value) for all open opportunities"],"benchmarks":null,"insight":"The potential revenue if deals close at expected rates.","commonMistakes":null,"sources":[],"department":"Sales","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Pipeline Value\n\n**Definition:** Total value of all active sales opportunities.\n\n**Formula (weighted):**\n```\nPipeline Value = Sum of (Deal value × Stage probability) for all open opportunities\n```\n\n**Formula (unweighted):**\n```\nPipeline Value = Sum of (Deal value) for all open opportunities\n```\n\nAlways specify whether weighted or unweighted.\n\n**Weighted vs unweighted:**\n- **Weighted:** More realistic, accounts for deal stage. A $100K deal at 50% stage = $50K weighted value.\n- **Unweighted:** Simpler, shows total potential. Useful for capacity planning.\n\n**What it tells you:** The potential revenue if deals close at expected rates.\n\n**Sources:** [Clari](https://www.clari.com/blog/pipeline-coverage-best-practices/), [Salesforce](https://www.salesforce.com/blog/sales-velocity/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Pipeline Coverage Ratio","slug":"pipeline-coverage-ratio","definition":"The ratio of pipeline value to quota for the period.","formulas":["Pipeline Coverage = Total Pipeline Value / Quota for Period"],"benchmarks":"- Below 2x: Insufficient pipeline, high risk of missing quota\n- 2-3x: Light, acceptable for high win rate teams\n- 3-4x: Healthy for typical 25-33% win rates\n- Above 4x: Strong, but may indicate pipeline hygiene issues or low win rates","insight":"Whether there's enough pipeline to hit targets given historical conversion rates.","commonMistakes":null,"sources":["Clari: Pipeline Coverage Best Practices: https://www.clari.com/blog/pipeline-coverage-best-practices/","Outreach: Sales Pipeline Coverage Ratio: https://www.outreach.io/resources/blog/sales-pipeline-coverage-ratio","Mosaic: Pipeline Coverage Ratio: https://www.mosaic.tech/financial-metrics/pipeline-coverage-ratio"],"department":"Sales","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Pipeline Coverage Ratio\n\n**Definition:** The ratio of pipeline value to quota for the period.\n\n**Formula:**\n```\nPipeline Coverage = Total Pipeline Value / Quota for Period\n```\n\nExpress as multiple (e.g., \"3x\" or \"3:1\").\n\n**Why 3x-4x works:** The math is 1 / Win Rate. If you win 25% of deals, you need 4x coverage (1 ÷ 0.25 = 4). If you win 33%, you need 3x.\n\n**Benchmarks:**\n- Below 2x: Insufficient pipeline, high risk of missing quota\n- 2-3x: Light, acceptable for high win rate teams\n- 3-4x: Healthy for typical 25-33% win rates\n- Above 4x: Strong, but may indicate pipeline hygiene issues or low win rates\n\n**By segment:**\n- SMB/high-velocity: 2-3x may suffice\n- Mid-market: 2.5-4x typical\n- Enterprise: 3-5x (longer cycles, more stakeholders)\n\n**What it tells you:** Whether there's enough pipeline to hit targets given historical conversion rates.\n\n**Calculate your ideal:** Use your actual win rate, not generic benchmarks.\n\n**Sources:**\n- [Clari: Pipeline Coverage Best Practices](https://www.clari.com/blog/pipeline-coverage-best-practices/)\n- [Outreach: Sales Pipeline Coverage Ratio](https://www.outreach.io/resources/blog/sales-pipeline-coverage-ratio)\n- [Mosaic: Pipeline Coverage Ratio](https://www.mosaic.tech/financial-metrics/pipeline-coverage-ratio)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Pipeline Velocity","slug":"pipeline-velocity","definition":"The speed at which pipeline converts to revenue. Also called Sales Velocity or Deal Velocity.","formulas":["Pipeline Velocity = (# Opportunities × Win Rate × Average Deal Size) / Sales Cycle Length"],"benchmarks":null,"insight":"The theoretical throughput of your sales engine. Improving any component improves velocity.","commonMistakes":null,"sources":["HubSpot: Sales Velocity: https://blog.hubspot.com/sales/sales-velocity","Salesforce: Sales Velocity: https://www.salesforce.com/blog/sales-velocity/","Drivetrain: Sales Velocity in SaaS: https://www.drivetrain.ai/strategic-finance-glossary/sales-velocity-in-saas-what-it-is-why-its-important-and-how-to-calculate-it"],"department":"Sales","category":"Pipeline Metrics","aliases":[],"rawMarkdown":"### Pipeline Velocity\n\n**Definition:** The speed at which pipeline converts to revenue. Also called Sales Velocity or Deal Velocity.\n\n**Formula:**\n```\nPipeline Velocity = (# Opportunities × Win Rate × Average Deal Size) / Sales Cycle Length\n```\n\nResult is revenue per day (or per period).\n\n**The four levers:**\n1. **Opportunities** - Number of qualified opportunities in pipeline\n2. **Win Rate** - Conversion rate from opportunity to close\n3. **Deal Size** - Average deal value (ACV)\n4. **Cycle Length** - Days from opportunity to close\n\n**Example:** 50 opportunities × 35% win rate × $2,500 deal size ÷ 28 days = **$1,562/day**\n\n**What it tells you:** The theoretical throughput of your sales engine. Improving any component improves velocity.\n\n**How to use:** Identify which lever is the bottleneck. Not enough leads? Improve opportunities. Deals stuck in negotiation? Reduce cycle length.\n\n**Sources:**\n- [HubSpot: Sales Velocity](https://blog.hubspot.com/sales/sales-velocity)\n- [Salesforce: Sales Velocity](https://www.salesforce.com/blog/sales-velocity/)\n- [Drivetrain: Sales Velocity in SaaS](https://www.drivetrain.ai/strategic-finance-glossary/sales-velocity-in-saas-what-it-is-why-its-important-and-how-to-calculate-it)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Win Rate","slug":"win-rate","definition":"The percentage of qualified opportunities that close as won.","formulas":["Win Rate = Deals Won / (Deals Won + Deals Lost) × 100"],"benchmarks":null,"insight":"How effective the sales team is at closing qualified opportunities.","commonMistakes":["Including unqualified leads (inflates denominator, deflates rate)","Not specifying stage (win rate from MQL vs SQL vs Qualified Opp will differ dramatically)","Comparing across deal sizes without adjusting expectations"],"sources":["Walnut: B2B Benchmarks for SaaS Sales: https://www.walnut.io/blog/sales-tips/saas-and-b2b-sales-benchmarks-what-to-measure-and-how/","Outreach: Win Rate vs Close Rate: https://www.outreach.io/resources/blog/win-rate-vs-close-rate","Kixie: SaaS Win Rate Benchmark: https://www.kixie.com/sales-blog/saas-win-rate-benchmark-proven-sales-strategies/"],"department":"Sales","category":"Conversion Metrics","aliases":[],"rawMarkdown":"### Win Rate\n\n**Definition:** The percentage of qualified opportunities that close as won.\n\n**Formula:**\n```\nWin Rate = Deals Won / (Deals Won + Deals Lost) × 100\n```\n\nExclude open deals and deals disqualified before reaching qualified stage.\n\n**Overall Benchmarks:**\n- Below 15%: Low, investigate qualification or competitive issues\n- 15-25%: Average (industry average ~22-25%)\n- 25-35%: Good\n- 35-50%: Strong/top performer\n\n**By deal size:**\n- <$10K ACV: 28-35%\n- $10K-$50K: 20-28%\n- $50K-$100K: 15-22%\n- >$100K: 12-18%\n\n**By segment:**\n- SMB: 30-40%\n- Mid-market: 25-35%\n- Enterprise: 20-25%\n\n**What it tells you:** How effective the sales team is at closing qualified opportunities.\n\n**Common mistakes:**\n- Including unqualified leads (inflates denominator, deflates rate)\n- Not specifying stage (win rate from MQL vs SQL vs Qualified Opp will differ dramatically)\n- Comparing across deal sizes without adjusting expectations\n\n**Key insight:** Focus on improvement over time, not hitting arbitrary targets.\n\n**Sources:**\n- [Walnut: B2B Benchmarks for SaaS Sales](https://www.walnut.io/blog/sales-tips/saas-and-b2b-sales-benchmarks-what-to-measure-and-how/)\n- [Outreach: Win Rate vs Close Rate](https://www.outreach.io/resources/blog/win-rate-vs-close-rate)\n- [Kixie: SaaS Win Rate Benchmark](https://www.kixie.com/sales-blog/saas-win-rate-benchmark-proven-sales-strategies/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Lead-to-Opportunity Rate","slug":"lead-to-opportunity-rate","definition":"The percentage of leads that become qualified opportunities.","formulas":["Lead-to-Opportunity = Opportunities created / Leads received × 100"],"benchmarks":"- 5-15%: Typical for inbound leads\n- 1-5%: Typical for outbound/cold leads\n- Varies significantly by lead source and ICP fit","insight":"Lead quality and SDR/qualification effectiveness.","commonMistakes":null,"sources":[],"department":"Sales","category":"Conversion Metrics","aliases":[],"rawMarkdown":"### Lead-to-Opportunity Rate\n\n**Definition:** The percentage of leads that become qualified opportunities.\n\n**Formula:**\n```\nLead-to-Opportunity = Opportunities created / Leads received × 100\n```\n\n**Benchmarks:**\n- 5-15%: Typical for inbound leads\n- 1-5%: Typical for outbound/cold leads\n- Varies significantly by lead source and ICP fit\n\n**What it tells you:** Lead quality and SDR/qualification effectiveness.\n\n**Sources:** [HubSpot](https://blog.hubspot.com/sales/sales-velocity), [Databox](https://databox.com/b2b-sales-cycle-length)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Opportunity-to-Close Rate","slug":"opportunity-to-close-rate","definition":"The percentage of qualified opportunities that close as won. Also called Close Rate.","formulas":["Opportunity-to-Close = Closed Won / (Closed Won + Closed Lost) × 100"],"benchmarks":null,"insight":"AE effectiveness at converting qualified pipeline.","commonMistakes":null,"sources":[],"department":"Sales","category":"Conversion Metrics","aliases":[],"rawMarkdown":"### Opportunity-to-Close Rate\n\n**Definition:** The percentage of qualified opportunities that close as won. Also called Close Rate.\n\n**Formula:**\n```\nOpportunity-to-Close = Closed Won / (Closed Won + Closed Lost) × 100\n```\n\n**Note:** This is essentially Win Rate measured from the opportunity stage.\n\n**What it tells you:** AE effectiveness at converting qualified pipeline.\n\n**Sources:** [Outreach](https://www.outreach.io/resources/blog/win-rate-vs-close-rate)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"ACV (Annual Contract Value)","slug":"acv-annual-contract-value","definition":"The annualized value of a contract, normalizing multi-year deals to a single year. Also used to describe average deal size when aggregated.","formulas":["ACV = (Total Contract Value - One-time fees) / Contract term in years","Average ACV = Sum of ACV for all deals / Number of deals"],"benchmarks":null,"insight":"Deal size and customer segment. Important for CAC analysis and go-to-market strategy.","commonMistakes":null,"sources":["Paddle: Annual Contract Value: https://www.paddle.com/resources/annual-contract-value","ChurnZero: Annual Contract Value: https://churnzero.com/churnopedia/annual-contract-value-acv/","Chargebee: ACV vs ARR: https://www.chargebee.com/resources/glossaries/acv-vs-arr/"],"department":"Sales","category":"Deal Metrics","aliases":["ACV"],"rawMarkdown":"### ACV (Annual Contract Value)\n\n**Definition:** The annualized value of a contract, normalizing multi-year deals to a single year. Also used to describe average deal size when aggregated.\n\n**Formula (single contract):**\n```\nACV = (Total Contract Value - One-time fees) / Contract term in years\n```\n\n**Formula (average across deals):**\n```\nAverage ACV = Sum of ACV for all deals / Number of deals\n```\n\n**Example:** A 3-year contract worth $150K (excluding setup fees) = $50K ACV.\n\nFor monthly contracts, annualize: Monthly value × 12\n\n**Excludes:** One-time fees (setup, implementation, training)\n\n**ACV vs ARR:**\n- **ACV** = Value of a single contract, annualized\n- **ARR** = Total recurring revenue across all customers at a point in time\n\n**Typical ranges:**\n- SMB: <$5K\n- Mid-market: $25K-$100K\n- Enterprise: $100K+\n\n**What it tells you:** Deal size and customer segment. Important for CAC analysis and go-to-market strategy.\n\n**Sources:**\n- [Paddle: Annual Contract Value](https://www.paddle.com/resources/annual-contract-value)\n- [ChurnZero: Annual Contract Value](https://churnzero.com/churnopedia/annual-contract-value-acv/)\n- [Chargebee: ACV vs ARR](https://www.chargebee.com/resources/glossaries/acv-vs-arr/)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Average Deal Size","slug":"average-deal-size","definition":"The average total value of closed deals (total contract value, not annualized).","formulas":["Average Deal Size = Total contract value of closed deals / Number of deals"],"benchmarks":null,"insight":"Raw deal size. Useful when contract lengths vary significantly.","commonMistakes":null,"sources":[],"department":"Sales","category":"Deal Metrics","aliases":[],"rawMarkdown":"### Average Deal Size\n\n**Definition:** The average total value of closed deals (total contract value, not annualized).\n\n**Formula:**\n```\nAverage Deal Size = Total contract value of closed deals / Number of deals\n```\n\n**Difference from ACV:** Average Deal Size uses total contract value (TCV). ACV annualizes multi-year deals.\n\n**Example:** A 3-year, $150K deal = $150K deal size, but $50K ACV.\n\n**What it tells you:** Raw deal size. Useful when contract lengths vary significantly.\n\n**Sources:** [Paddle](https://www.paddle.com/resources/annual-contract-value), [ChurnZero](https://churnzero.com/churnopedia/annual-contract-value-acv/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Sales Cycle Length","slug":"sales-cycle-length","definition":"The average time from opportunity creation to close.","formulas":["Sales Cycle = Average of (Close date - Opportunity created date) for won deals"],"benchmarks":"- SMB: 14-40 days\n- Mid-market: 60-90 days\n- Enterprise: 90-180+ days","insight":"How long deals take to close. Longer cycles require more pipeline coverage.","commonMistakes":null,"sources":["SaaStr: B2B Sales Cycle Benchmarks: https://www.saastr.com/dear-saastr-whats-a-good-benchmark-for-b2b-sales-cycles/","Databox: B2B Sales Cycle Length: https://databox.com/b2b-sales-cycle-length","Drivetrain: Sales Cycle Length: https://www.drivetrain.ai/strategic-finance-glossary/sales-cycle-length-scl"],"department":"Sales","category":"Deal Metrics","aliases":[],"rawMarkdown":"### Sales Cycle Length\n\n**Definition:** The average time from opportunity creation to close.\n\n**Formula:**\n```\nSales Cycle = Average of (Close date - Opportunity created date) for won deals\n```\n\nMeasured in days. Use median rather than average to reduce outlier skew.\n\n**Benchmarks by segment:**\n- SMB: 14-40 days\n- Mid-market: 60-90 days\n- Enterprise: 90-180+ days\n\n**Benchmarks by ACV:**\n- <$2K ACV: ~14 days (1-2 call close)\n- <$5K ACV: ~30-40 days\n- $5K-$25K ACV: ~60-90 days\n- $25K-$100K ACV: 90-180 days\n- >$100K ACV: 170+ days (often 6-12 months)\n- >$500K ACV: 6-18+ months (annual budget cycles)\n\n**Overall median:** ~84 days across B2B SaaS\n\n**What it tells you:** How long deals take to close. Longer cycles require more pipeline coverage.\n\n**Recent trends (2024-2025):**\n- Cycles 22% longer since 2022 due to budget scrutiny\n- Average B2B deal involves 6.8 stakeholders (up from 5.4 in 2020)\n- CFO involvement in software purchases up 40%\n- Negotiation → Close accounts for 35-40% of enterprise cycle time\n\n**Sources:**\n- [SaaStr: B2B Sales Cycle Benchmarks](https://www.saastr.com/dear-saastr-whats-a-good-benchmark-for-b2b-sales-cycles/)\n- [Databox: B2B Sales Cycle Length](https://databox.com/b2b-sales-cycle-length)\n- [Drivetrain: Sales Cycle Length](https://www.drivetrain.ai/strategic-finance-glossary/sales-cycle-length-scl)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Quota Attainment","slug":"quota-attainment","definition":"The percentage of quota achieved by a rep or team.","formulas":["Quota Attainment = Revenue Closed / Quota × 100","Team Attainment = Total Team Revenue / Total Team Quota × 100"],"benchmarks":"- Below 50%: Below average\n- 50-80%: Average range\n- 80-100%: Strong performer\n- 100%+: Top performer / exceeding","insight":"Sales rep and team performance against targets.","commonMistakes":null,"sources":["Forrester: Quota Attainment: https://www.forrester.com/blogs/your-companys-quota-attainment-is-probably-around-50-and-thats-not-a-bad-thing/","Wall Street Prep: Quota Attainment: https://www.wallstreetprep.com/knowledge/quota-attainment/","QuotaPath: Quota Attainment Rate: https://www.quotapath.com/blog/quota-attainment-rate/"],"department":"Sales","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Quota Attainment\n\n**Definition:** The percentage of quota achieved by a rep or team.\n\n**Formula (individual):**\n```\nQuota Attainment = Revenue Closed / Quota × 100\n```\n\n**Formula (team):**\n```\nTeam Attainment = Total Team Revenue / Total Team Quota × 100\n```\n\nOr: Average of individual rep attainment rates.\n\n**Reality check:** Industry data shows most reps don't hit quota:\n- Average individual attainment: 43-50%\n- Only 24% of reps exceed annual quota\n- 69% of B2B reps fall short of quota\n\n**Benchmarks (individual rep):**\n- Below 50%: Below average\n- 50-80%: Average range\n- 80-100%: Strong performer\n- 100%+: Top performer / exceeding\n\n**Benchmarks (team/company):**\n- 50%: Average (median rep at quota)\n- 60-70%: Good\n- 80-90%: Strong\n- 90%+: Exceptional (or quotas may be too low)\n\n**What it tells you:** Sales rep and team performance against targets.\n\n**Quota setting rule of thumb:** Quota = 5x rep OTE (ranges from 3x to 8x depending on company stage).\n\n**Sources:**\n- [Forrester: Quota Attainment](https://www.forrester.com/blogs/your-companys-quota-attainment-is-probably-around-50-and-thats-not-a-bad-thing/)\n- [Wall Street Prep: Quota Attainment](https://www.wallstreetprep.com/knowledge/quota-attainment/)\n- [QuotaPath: Quota Attainment Rate](https://www.quotapath.com/blog/quota-attainment-rate/)\n\n---","signalType":"outcome","signalTypeSecondary":"operational","dualLens":null,"dualLensNote":null},{"name":"Revenue per Rep","slug":"revenue-per-rep","definition":"Total revenue generated divided by number of quota-carrying reps.","formulas":["Revenue per Rep = Total New Revenue / Number of Quota-Carrying Reps"],"benchmarks":"By company stage:\n- Seed: $250K-$400K\n- Series A: $400K-$600K\n- Series B+: $600K-$1M+\n\nBy segment:\n- SMB: $400K-$600K\n- Mid-market: $600K-$800K\n- Enterprise: $800K-$1.5M+","insight":"Sales team productivity and efficiency.","commonMistakes":null,"sources":["Optifai: Revenue Per Sales Rep Benchmark 2025: https://optif.ai/learn/questions/revenue-per-sales-rep-benchmark/","Revenue.io: Revenue per Rep: https://www.revenue.io/inside-sales-glossary/what-is-revenue-per-rep"],"department":"Sales","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Revenue per Rep\n\n**Definition:** Total revenue generated divided by number of quota-carrying reps.\n\n**Formula:**\n```\nRevenue per Rep = Total New Revenue / Number of Quota-Carrying Reps\n```\n\n**Benchmarks (Annual, New Business):**\n\nBy company stage:\n- Seed: $250K-$400K\n- Series A: $400K-$600K\n- Series B+: $600K-$1M+\n\nBy segment:\n- SMB: $400K-$600K\n- Mid-market: $600K-$800K\n- Enterprise: $800K-$1.5M+\n\n**Median B2B SaaS:** $500K-$700K quota capacity\n\n**Top performers:** $1M+ annually\n\n**What it tells you:** Sales team productivity and efficiency.\n\n**Factors affecting output:**\n- ACV (higher = more per rep possible)\n- Sales cycle length (longer = less per rep)\n- Market maturity and brand recognition\n- Sales support infrastructure (SDRs, tools)\n\n**Sources:**\n- [Optifai: Revenue Per Sales Rep Benchmark 2025](https://optif.ai/learn/questions/revenue-per-sales-rep-benchmark/)\n- [Revenue.io: Revenue per Rep](https://www.revenue.io/inside-sales-glossary/what-is-revenue-per-rep)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Ramp Time","slug":"ramp-time","definition":"Time for a new sales rep to reach full productivity (carrying full quota).","formulas":["Ramp Time = Time from start date to consistently achieving quota"],"benchmarks":"- SDR: 2-3 months\n- Inside Sales/SMB AE: 3-4 months\n- Mid-market AE: 4-6 months\n- Enterprise AE: 6-9 months","insight":"How quickly new hires become productive. Impacts hiring planning and capacity forecasting.","commonMistakes":null,"sources":["Mosaic: Sales Rep Ramp: https://www.mosaic.tech/financial-metrics/sales-rep-ramp","Revenue.io: Sales Ramp Time: https://www.revenue.io/blog/heres-how-long-it-should-take-for-your-sales-reps-to-be-at-fully-ramped-quota","Everstage: Sales Ramp Time: https://www.everstage.com/blog/how-to-determine-the-right-sales-ramp-up-time-for-reps"],"department":"Sales","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Ramp Time\n\n**Definition:** Time for a new sales rep to reach full productivity (carrying full quota).\n\n**Formula:**\n```\nRamp Time = Time from start date to consistently achieving quota\n```\n\n**Common calculation:** Average sales cycle + 90 days (for onboarding/training)\n\nMeasured in months.\n\n**Benchmarks by role:**\n- SDR: 2-3 months\n- Inside Sales/SMB AE: 3-4 months\n- Mid-market AE: 4-6 months\n- Enterprise AE: 6-9 months\n\n**Industry averages:**\n- Average SaaS ramp: 3.2-5 months\n- 41% of companies report 5+ months\n- Top performers target 3-4 months\n\n**Ramp quota structure (typical):**\n- Month 1: 25% quota\n- Month 2: 50% quota\n- Month 3: 75% quota\n- Month 4+: 100% quota\n\n**What it tells you:** How quickly new hires become productive. Impacts hiring planning and capacity forecasting.\n\n**Sources:**\n- [Mosaic: Sales Rep Ramp](https://www.mosaic.tech/financial-metrics/sales-rep-ramp)\n- [Revenue.io: Sales Ramp Time](https://www.revenue.io/blog/heres-how-long-it-should-take-for-your-sales-reps-to-be-at-fully-ramped-quota)\n- [Everstage: Sales Ramp Time](https://www.everstage.com/blog/how-to-determine-the-right-sales-ramp-up-time-for-reps)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Activity Metrics (Diagnostic)","slug":"activity-metrics-diagnostic","definition":"","formulas":[],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Sales","category":"Productivity Metrics","aliases":[],"rawMarkdown":"### Activity Metrics (Diagnostic)\n\nThese are inputs, not outcomes. Track for diagnostics, not reporting.\n\n| Metric | Definition |\n|--------|------------|\n| Calls per day | Outbound calls made |\n| Emails per day | Outbound emails sent |\n| Meetings booked | Discovery/demo meetings scheduled |\n| Demos delivered | Product demonstrations completed |\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Ticket Volume","slug":"ticket-volume","definition":"Total number of support tickets received in a period.","formulas":["Ticket Volume = Count of tickets created in period"],"benchmarks":null,"insight":"Support demand. Trend matters more than absolute number.","commonMistakes":null,"sources":[],"department":"Support","category":"Volume Metrics","aliases":[],"rawMarkdown":"### Ticket Volume\n\n**Definition:** Total number of support tickets received in a period.\n\n**Formula:**\n```\nTicket Volume = Count of tickets created in period\n```\n\nTrack by channel: email, chat, phone, self-service.\n\n**What it tells you:** Support demand. Trend matters more than absolute number.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Tickets per Customer","slug":"tickets-per-customer","definition":"Average tickets created per active customer.","formulas":["Tickets per Customer = Total tickets / Active customers"],"benchmarks":"- Below 0.5/month: Low touch, efficient product\n- 0.5-1.0/month: Typical\n- Above 1.0/month: High touch, may indicate product issues","insight":"Support burden relative to customer base. Rising ratio signals product or onboarding issues.","commonMistakes":null,"sources":[],"department":"Support","category":"Volume Metrics","aliases":[],"rawMarkdown":"### Tickets per Customer\n\n**Definition:** Average tickets created per active customer.\n\n**Formula:**\n```\nTickets per Customer = Total tickets / Active customers\n```\n\n**Benchmarks:**\n- Below 0.5/month: Low touch, efficient product\n- 0.5-1.0/month: Typical\n- Above 1.0/month: High touch, may indicate product issues\n\n**What it tells you:** Support burden relative to customer base. Rising ratio signals product or onboarding issues.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Ticket Backlog","slug":"ticket-backlog","definition":"Number of open tickets awaiting resolution.","formulas":["Backlog = Count of open tickets"],"benchmarks":null,"insight":"Current support debt. Should be stable or declining.","commonMistakes":null,"sources":[],"department":"Support","category":"Volume Metrics","aliases":[],"rawMarkdown":"### Ticket Backlog\n\n**Definition:** Number of open tickets awaiting resolution.\n\n**Formula:**\n```\nBacklog = Count of open tickets\n```\n\n**What it tells you:** Current support debt. Should be stable or declining.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Ticket Distribution by Type","slug":"ticket-distribution-by-type","definition":"Breakdown of tickets by category.","formulas":[],"benchmarks":null,"insight":"What's driving support volume. High \"how-to\" suggests onboarding or documentation gaps.","commonMistakes":null,"sources":[],"department":"Support","category":"Volume Metrics","aliases":[],"rawMarkdown":"### Ticket Distribution by Type\n\n**Definition:** Breakdown of tickets by category.\n\n**Categories (typical):**\n- How-to / Usage questions\n- Bug reports\n- Feature requests\n- Billing inquiries\n- Account issues\n- Outage/incident related\n\n**What it tells you:** What's driving support volume. High \"how-to\" suggests onboarding or documentation gaps.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"First Response Time (FRT)","slug":"first-response-time-frt","definition":"Time from ticket creation to first human response.","formulas":["FRT = Median of (First response timestamp - Ticket created timestamp)"],"benchmarks":"| Channel | Target | Reality |\n|---------|--------|---------|\n| Chat | < 1 minute | Best channel for speed |\n| Email (B2B) | 4-6 hours | Industry average is 12+ hours |\n| Email (Enterprise) | < 1 hour | Premium SLA expected |\n| Phone | < 30 seconds (80% within 20 sec) | \"80/20 rule\" standard |","insight":"How quickly customers get acknowledged. Impacts satisfaction.","commonMistakes":null,"sources":["Zendesk: Customer Service Benchmark: https://www.zendesk.com/blog/first-contact-resolution-friend-foe-frenemy/","Freshworks: Customer Service Benchmark 2024: https://www.freshworks.com/resources/customer-service-benchmark-report-2024/"],"department":"Support","category":"Response Metrics","aliases":["FRT"],"rawMarkdown":"### First Response Time (FRT)\n\n**Definition:** Time from ticket creation to first human response.\n\n**Formula:**\n```\nFRT = Median of (First response timestamp - Ticket created timestamp)\n```\n\nUse median, not average (outliers skew averages).\n\n**Benchmarks:**\n| Channel | Target | Reality |\n|---------|--------|---------|\n| Chat | < 1 minute | Best channel for speed |\n| Email (B2B) | 4-6 hours | Industry average is 12+ hours |\n| Email (Enterprise) | < 1 hour | Premium SLA expected |\n| Phone | < 30 seconds (80% within 20 sec) | \"80/20 rule\" standard |\n\n**Customer expectations:** 52% expect email responses within 1 hour, 32% within 30 minutes.\n\n**What it tells you:** How quickly customers get acknowledged. Impacts satisfaction.\n\n**Sources:**\n- [Zendesk: Customer Service Benchmark](https://www.zendesk.com/blog/first-contact-resolution-friend-foe-frenemy/)\n- [Freshworks: Customer Service Benchmark 2024](https://www.freshworks.com/resources/customer-service-benchmark-report-2024/)\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"First Response SLA Adherence","slug":"first-response-sla-adherence","definition":"Percentage of tickets meeting FRT SLA target.","formulas":["FRT SLA Adherence = Tickets meeting FRT target / Total tickets × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Support","category":"Response Metrics","aliases":[],"rawMarkdown":"### First Response SLA Adherence\n\n**Definition:** Percentage of tickets meeting FRT SLA target.\n\n**Formula:**\n```\nFRT SLA Adherence = Tickets meeting FRT target / Total tickets × 100\n```\n\n**Target:** >95%\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Resolution Time (Time to Resolution)","slug":"resolution-time-time-to-resolution","definition":"Time from ticket creation to final resolution.","formulas":["Resolution Time = Median of (Resolution timestamp - Ticket created timestamp)"],"benchmarks":"- Simple issues: < 4 hours\n- Moderate issues: < 24 hours\n- Complex issues: < 72 hours","insight":"How quickly problems are actually solved.","commonMistakes":null,"sources":[],"department":"Support","category":"Resolution Metrics","aliases":[],"rawMarkdown":"### Resolution Time (Time to Resolution)\n\n**Definition:** Time from ticket creation to final resolution.\n\n**Formula:**\n```\nResolution Time = Median of (Resolution timestamp - Ticket created timestamp)\n```\n\n**Benchmarks:**\n- Simple issues: < 4 hours\n- Moderate issues: < 24 hours\n- Complex issues: < 72 hours\n\n**What it tells you:** How quickly problems are actually solved.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"First Contact Resolution (FCR)","slug":"first-contact-resolution-fcr","definition":"Percentage of tickets resolved in a single interaction.","formulas":["FCR = Tickets resolved without reopening or follow-up / Total tickets × 100"],"benchmarks":"- Below 60%: Low, investigate agent training or issue complexity\n- 60-70%: Below average\n- 70%: Industry average (SQM Group 2024 data)\n- 70-80%: Good, competitive for SaaS\n- 80%+: World-class","insight":"Support efficiency and agent capability.","commonMistakes":null,"sources":["SQM Group: FCR Benchmark 2024: https://www.sqmgroup.com/resources/library/blog/call-center-fcr-benchmark-2024-results-by-industry","Geckoboard: FCR Rate: https://www.geckoboard.com/best-practice/kpi-examples/first-contact-resolution-rate/"],"department":"Support","category":"Resolution Metrics","aliases":["FCR"],"rawMarkdown":"### First Contact Resolution (FCR)\n\n**Definition:** Percentage of tickets resolved in a single interaction.\n\n**Formula:**\n```\nFCR = Tickets resolved without reopening or follow-up / Total tickets × 100\n```\n\n**Benchmarks:**\n- Below 60%: Low, investigate agent training or issue complexity\n- 60-70%: Below average\n- 70%: Industry average (SQM Group 2024 data)\n- 70-80%: Good, competitive for SaaS\n- 80%+: World-class\n\n**Industry variation:** Retail/simple products achieve 73-75%. Complex tech support often 50-65%.\n\n**Impact:** FCR improvements reduce churn by up to 67% (research shows it's the #1 support driver of retention).\n\n**What it tells you:** Support efficiency and agent capability.\n\n**Sources:**\n- [SQM Group: FCR Benchmark 2024](https://www.sqmgroup.com/resources/library/blog/call-center-fcr-benchmark-2024-results-by-industry)\n- [Geckoboard: FCR Rate](https://www.geckoboard.com/best-practice/kpi-examples/first-contact-resolution-rate/)\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Resolution SLA Adherence","slug":"resolution-sla-adherence","definition":"Percentage of tickets resolved within SLA timeframe.","formulas":["Resolution SLA Adherence = Tickets meeting resolution target / Total tickets × 100"],"benchmarks":null,"insight":null,"commonMistakes":null,"sources":[],"department":"Support","category":"Resolution Metrics","aliases":[],"rawMarkdown":"### Resolution SLA Adherence\n\n**Definition:** Percentage of tickets resolved within SLA timeframe.\n\n**Formula:**\n```\nResolution SLA Adherence = Tickets meeting resolution target / Total tickets × 100\n```\n\n**Target:** >90%\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Reopen Rate","slug":"reopen-rate","definition":"Percentage of resolved tickets that are reopened.","formulas":["Reopen Rate = Tickets reopened / Tickets resolved × 100"],"benchmarks":"- Below 5%: Good\n- 5-10%: Acceptable\n- Above 10%: Investigate resolution quality","insight":"Resolution quality. High reopen rate means problems aren't actually being solved.","commonMistakes":null,"sources":[],"department":"Support","category":"Resolution Metrics","aliases":[],"rawMarkdown":"### Reopen Rate\n\n**Definition:** Percentage of resolved tickets that are reopened.\n\n**Formula:**\n```\nReopen Rate = Tickets reopened / Tickets resolved × 100\n```\n\n**Benchmarks:**\n- Below 5%: Good\n- 5-10%: Acceptable\n- Above 10%: Investigate resolution quality\n\n**What it tells you:** Resolution quality. High reopen rate means problems aren't actually being solved.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Customer Satisfaction Score (CSAT)","slug":"customer-satisfaction-score-csat","definition":"Customer rating of support interaction.","formulas":["CSAT = Positive responses / Total responses × 100"],"benchmarks":"- Below 70%: Poor, requires immediate attention\n- 70-80%: Below average (B2B SaaS average is ~68-78%)\n- 80-90%: Good\n- 90%+: Excellent\n- 95%+: World-class","insight":"Customer perception of support quality.","commonMistakes":["Low response rates (<10% makes data unreliable)","Survey fatigue","Not following up on negative feedback"],"sources":["Retently: CSAT Benchmarks 2025: https://www.retently.com/blog/customer-satisfaction-score-csat/","Fullview: CSAT Benchmarks by Industry: https://www.fullview.io/blog/csat-benchmarks-by-industry"],"department":"Support","category":"Quality Metrics","aliases":["CSAT"],"rawMarkdown":"### Customer Satisfaction Score (CSAT)\n\n**Definition:** Customer rating of support interaction.\n\n**Formula:**\n```\nCSAT = Positive responses / Total responses × 100\n```\n\nTypically 5-point or 3-point scale. \"Positive\" = top 1-2 ratings.\n\n**Benchmarks:**\n- Below 70%: Poor, requires immediate attention\n- 70-80%: Below average (B2B SaaS average is ~68-78%)\n- 80-90%: Good\n- 90%+: Excellent\n- 95%+: World-class\n\n**By channel:**\n- Live chat: 87% average (highest)\n- Email: 61% average\n- Phone: 44% average\n\n**Segment variation:** Enterprise customers typically rate 72-75% (dedicated support), SMB customers 60-65%.\n\n**What it tells you:** Customer perception of support quality.\n\n**Common mistakes:**\n- Low response rates (<10% makes data unreliable)\n- Survey fatigue\n- Not following up on negative feedback\n\n**Sources:**\n- [Retently: CSAT Benchmarks 2025](https://www.retently.com/blog/customer-satisfaction-score-csat/)\n- [Fullview: CSAT Benchmarks by Industry](https://www.fullview.io/blog/csat-benchmarks-by-industry)\n\n---","signalType":"outcome","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Customer Effort Score (CES)","slug":"customer-effort-score-ces","definition":"How easy it was for the customer to get help.","formulas":["CES = Average rating on \"How easy was it to resolve your issue?\" (1-7 scale)","CES % = Respondents who agree it was easy / Total respondents × 100"],"benchmarks":"- Below 4: High effort, frustrating\n- 4-5: Moderate\n- 5-6: Good\n- Above 6: Easy, effortless","insight":"Support friction. Lower effort correlates with retention.","commonMistakes":null,"sources":["Gartner: Customer Effort Score: https://www.gartner.com/en/customer-service-support/insights/customer-effort-score","Userpilot: Customer Satisfaction Benchmarking: https://userpilot.com/blog/customer-satisfaction-benchmarking/"],"department":"Support","category":"Quality Metrics","aliases":["CES"],"rawMarkdown":"### Customer Effort Score (CES)\n\n**Definition:** How easy it was for the customer to get help.\n\n**Formula:**\n```\nCES = Average rating on \"How easy was it to resolve your issue?\" (1-7 scale)\n```\n\nOr as percentage (when using agree/disagree scale):\n```\nCES % = Respondents who agree it was easy / Total respondents × 100\n```\n\n**Benchmarks (1-7 scale):**\n- Below 4: High effort, frustrating\n- 4-5: Moderate\n- 5-6: Good\n- Above 6: Easy, effortless\n\n**Benchmarks (percentage):**\n- Below 70%: Needs improvement (per Gartner)\n- 70-90%: Good\n- Above 90%: Excellent, strong position\n\n**Why CES matters:** CES is 1.8x more effective than CSAT at predicting customer loyalty. Reducing friction drives repeat business more than satisfaction.\n\n**What it tells you:** Support friction. Lower effort correlates with retention.\n\n**Sources:**\n- [Gartner: Customer Effort Score](https://www.gartner.com/en/customer-service-support/insights/customer-effort-score)\n- [Userpilot: Customer Satisfaction Benchmarking](https://userpilot.com/blog/customer-satisfaction-benchmarking/)\n\n---","signalType":"leading","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Escalation Rate","slug":"escalation-rate","definition":"Percentage of tickets escalated to higher tier or engineering.","formulas":["Escalation Rate = Escalated tickets / Total tickets × 100"],"benchmarks":"- Below 5%: Well-handled at Tier 1\n- 5-15%: Normal\n- Above 15%: May indicate training gaps or product issues","insight":"Issue complexity and Tier 1 capability.","commonMistakes":null,"sources":[],"department":"Support","category":"Quality Metrics","aliases":[],"rawMarkdown":"### Escalation Rate\n\n**Definition:** Percentage of tickets escalated to higher tier or engineering.\n\n**Formula:**\n```\nEscalation Rate = Escalated tickets / Total tickets × 100\n```\n\n**Benchmarks:**\n- Below 5%: Well-handled at Tier 1\n- 5-15%: Normal\n- Above 15%: May indicate training gaps or product issues\n\n**What it tells you:** Issue complexity and Tier 1 capability.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Tickets per Agent","slug":"tickets-per-agent","definition":"Average tickets handled per support agent.","formulas":["Tickets per Agent = Total tickets handled / Number of agents"],"benchmarks":"- Chat: 300-500/month\n- Email: 400-600/month\n- Phone: 200-400/month","insight":"Agent productivity and capacity planning.","commonMistakes":null,"sources":[],"department":"Support","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Tickets per Agent\n\n**Definition:** Average tickets handled per support agent.\n\n**Formula:**\n```\nTickets per Agent = Total tickets handled / Number of agents\n```\n\n**Benchmarks:**\n- Chat: 300-500/month\n- Email: 400-600/month\n- Phone: 200-400/month\n\n**What it tells you:** Agent productivity and capacity planning.\n\n---","signalType":"operational","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Cost per Ticket","slug":"cost-per-ticket","definition":"Total support cost divided by tickets handled.","formulas":["Cost per Ticket = Total support team cost / Total tickets resolved"],"benchmarks":"- Chat: $3-8\n- Email: $5-15\n- Phone: $10-25","insight":"Support efficiency. Target: decrease over time.","commonMistakes":null,"sources":[],"department":"Support","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Cost per Ticket\n\n**Definition:** Total support cost divided by tickets handled.\n\n**Formula:**\n```\nCost per Ticket = Total support team cost / Total tickets resolved\n```\n\n**Benchmarks:**\n- Chat: $3-8\n- Email: $5-15\n- Phone: $10-25\n\n**What it tells you:** Support efficiency. Target: decrease over time.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null},{"name":"Self-Service Rate (Ticket Deflection)","slug":"self-service-rate-ticket-deflection","definition":"Percentage of support needs resolved through self-service.","formulas":["Self-Service Rate = Self-service resolutions / (Self-service + Tickets) × 100"],"benchmarks":"- Below 20%: Low self-service adoption\n- 20-40%: Moderate\n- 40-60%: Good\n- Above 60%: Excellent","insight":"Documentation and tooling effectiveness.","commonMistakes":null,"sources":[],"department":"Support","category":"Efficiency Metrics","aliases":[],"rawMarkdown":"### Self-Service Rate (Ticket Deflection)\n\n**Definition:** Percentage of support needs resolved through self-service.\n\n**Formula:**\n```\nSelf-Service Rate = Self-service resolutions / (Self-service + Tickets) × 100\n```\n\nRequires tracking help center views, chatbot resolutions, etc.\n\n**Benchmarks:**\n- Below 20%: Low self-service adoption\n- 20-40%: Moderate\n- 40-60%: Good\n- Above 60%: Excellent\n\n**What it tells you:** Documentation and tooling effectiveness.\n\n---","signalType":"efficiency","signalTypeSecondary":null,"dualLens":null,"dualLensNote":null}],"definitions":[{"term":"Customer (Account, Organization)","slug":"customer-account-organization","definition":"A distinct billing entity with one or more subscriptions. The \"who\" of your business relationship.","section":"Foundational Entities","canonicalLink":null,"usedIn":[]},{"term":"Subscription (Contract, Agreement)","slug":"subscription-contract-agreement","definition":"A billable agreement between a customer and your product, with defined terms, pricing and status. The \"what and when\" of the relationship.","section":"Foundational Entities","canonicalLink":null,"usedIn":[]},{"term":"License (Entitlement, Access, Quota)","slug":"license-entitlement-access-quota","definition":"A specific capability, quantity or configuration granted by a subscription. The \"how much\" of the relationship.","section":"Foundational Entities","canonicalLink":null,"usedIn":[]},{"term":"Hierarchy Principles","slug":"hierarchy-principles","definition":"1. **Customers own subscriptions, not the reverse.** A customer churns when *all* their subscriptions end.","section":"Foundational Entities","canonicalLink":null,"usedIn":[]},{"term":"MRR (Monthly Recurring Revenue)","slug":"mrr-monthly-recurring-revenue","definition":"The total predictable revenue from active subscriptions, normalized to a monthly value.","section":"Revenue Terms","canonicalLink":"metrics/core.md#mrr-monthly-recurring-revenue","usedIn":["Core","Finance","Customer Success"]},{"term":"ARR (Annual Recurring Revenue)","slug":"arr-annual-recurring-revenue","definition":"MRR × 12. The annualized value of recurring revenue.","section":"Revenue Terms","canonicalLink":"metrics/core.md#arr-annual-recurring-revenue","usedIn":["Core","Finance","Sales","Customer Success","People"]},{"term":"New MRR","slug":"new-mrr","definition":"MRR added from newly acquired customers in the period.","section":"Revenue Terms","canonicalLink":"metrics/core.md#new-mrr","usedIn":["Core","Sales"]},{"term":"Expansion MRR","slug":"expansion-mrr","definition":"Additional MRR from existing customers (upgrades, add-ons, seat increases).","section":"Revenue Terms","canonicalLink":"metrics/core.md#expansion-mrr","usedIn":["Core","Customer Success"]},{"term":"Churned MRR","slug":"churned-mrr","definition":"MRR lost from customers who cancelled.","section":"Revenue Terms","canonicalLink":"metrics/core.md#churned-mrr","usedIn":["Core","Customer Success"]},{"term":"Contraction MRR","slug":"contraction-mrr","definition":"MRR reduction from existing customers who downgraded (but didn't churn).","section":"Revenue Terms","canonicalLink":"metrics/core.md#contraction-mrr","usedIn":["Core","Customer Success"]},{"term":"Carry MRR","slug":"carry-mrr","definition":"MRR from existing customers that renewed unchanged. No expansion, contraction or churn.","section":"Revenue Terms","canonicalLink":"metrics/core.md#carry-mrr","usedIn":["Core"]},{"term":"Net New MRR","slug":"net-new-mrr","definition":"The net change in MRR after all movements.","section":"Revenue Terms","canonicalLink":"metrics/core.md#net-new-mrr","usedIn":["Core"]},{"term":"Revenue (GAAP)","slug":"revenue-gaap","definition":"Recognized revenue according to ASC 606 accounting standards.","section":"Revenue Terms","canonicalLink":"metrics/finance.md#revenue-gaap","usedIn":["Finance","RevOps"]},{"term":"Bookings","slug":"bookings","definition":"Total contract value signed in a period.","section":"Revenue Terms","canonicalLink":"metrics/finance.md#bookings","usedIn":["Finance","Sales"]},{"term":"ACV (Annual Contract Value)","slug":"acv-annual-contract-value","definition":"The annualized value of a contract, normalizing multi-year deals to a single year. When aggregated, represents average deal size on an annual basis.","section":"Revenue Terms","canonicalLink":"metrics/sales.md#acv-annual-contract-value","usedIn":["Sales","Finance"]},{"term":"ARPA (Average Revenue Per Account)","slug":"arpa-average-revenue-per-account","definition":"Average monthly recurring revenue per customer account.","section":"Revenue Terms","canonicalLink":"metrics/core.md#arpa-average-revenue-per-account","usedIn":["Core (LTV","CAC Payback)","Finance"]},{"term":"NRR (Net Revenue Retention)","slug":"nrr-net-revenue-retention","definition":"Percentage of revenue retained from existing customers over a period, including expansion, contraction and churn. Two methods are widely used: cohort method (preferred) and formula method. Recommended: trailing 12 months, annualized if using shorter periods.","section":"Retention Terms","canonicalLink":"metrics/core.md#net-revenue-retention-nrr","usedIn":["Core","Customer Success"]},{"term":"GRR (Gross Revenue Retention)","slug":"grr-gross-revenue-retention","definition":"Percentage of revenue retained from existing customers, excluding expansion. Cannot exceed 100%. Two methods are widely used: cohort method (preferred) and formula method.","section":"Retention Terms","canonicalLink":"metrics/core.md#gross-revenue-retention-grr","usedIn":["Core","Customer Success"]},{"term":"Logo Churn Rate","slug":"logo-churn-rate","definition":"Percentage of customers lost in a period.","section":"Retention Terms","canonicalLink":"metrics/core.md#logo-churn-rate-customer-churn","usedIn":["Core","Customer Success"]},{"term":"Revenue Churn Rate","slug":"revenue-churn-rate","definition":"Percentage of MRR lost to churn and contraction in a period. Gross (losses only, not netted against expansion).","section":"Retention Terms","canonicalLink":"metrics/core.md#revenue-churn-rate","usedIn":["Core"]},{"term":"Renewal Rate","slug":"renewal-rate","definition":"Percentage of contracts renewed at term.","section":"Retention Terms","canonicalLink":"metrics/customer-success.md#renewal-rate","usedIn":["Customer Success","RevOps"]},{"term":"CAC (Customer Acquisition Cost)","slug":"cac-customer-acquisition-cost","definition":"Total cost to acquire a new customer.","section":"Efficiency Terms","canonicalLink":"metrics/core.md#cac-customer-acquisition-cost","usedIn":["Core","Marketing","Finance"]},{"term":"Marketing CAC","slug":"marketing-cac","definition":"Marketing-only portion of CAC (excludes sales costs).","section":"Efficiency Terms","canonicalLink":"metrics/marketing.md#marketing-cac","usedIn":["Marketing"]},{"term":"LTV (Customer Lifetime Value)","slug":"ltv-customer-lifetime-value","definition":"Total profit expected from a customer over their lifetime. Calculated with gross margin.","section":"Efficiency Terms","canonicalLink":"metrics/core.md#ltv-customer-lifetime-value","usedIn":["Core","Finance"]},{"term":"LTV:CAC Ratio","slug":"ltvcac-ratio","definition":"Ratio of customer lifetime value to acquisition cost.","section":"Efficiency Terms","canonicalLink":"metrics/core.md#ltvcac-ratio","usedIn":["Core","Finance"]},{"term":"CAC Payback Period","slug":"cac-payback-period","definition":"Time required to recover customer acquisition cost.","section":"Efficiency Terms","canonicalLink":"metrics/core.md#cac-payback-period","usedIn":["Core","Finance"]},{"term":"Gross Margin","slug":"gross-margin","definition":"Revenue minus cost of goods sold, as percentage of revenue.","section":"Efficiency Terms","canonicalLink":"metrics/core.md#gross-margin","usedIn":["Core","Finance"]},{"term":"Rule of 40","slug":"rule-of-40","definition":"ARR Growth Rate (YoY %) + EBITDA Margin (%).","section":"Efficiency Terms","canonicalLink":"metrics/core.md#rule-of-40","usedIn":["Core","Finance"]},{"term":"Magic Number","slug":"magic-number","definition":"Sales efficiency metric: QoQ ARR growth divided by prior quarter S&M spend.","section":"Efficiency Terms","canonicalLink":"metrics/finance.md#magic-number","usedIn":["Finance"]},{"term":"Burn Multiple","slug":"burn-multiple","definition":"Capital efficiency metric: Net burn divided by net new ARR. Popularized by David Sacks.","section":"Efficiency Terms","canonicalLink":"metrics/finance.md#burn-multiple","usedIn":["Finance"]},{"term":"Customer","slug":"customer","definition":"An entity (company/account) with a paid subscription.","section":"Customer Terms","canonicalLink":null,"usedIn":[]},{"term":"Active Customer","slug":"active-customer","definition":"A customer in good standing at a point in time.","section":"Customer Terms","canonicalLink":null,"usedIn":[]},{"term":"User","slug":"user","definition":"An individual person using the product within a customer account.","section":"Customer Terms","canonicalLink":null,"usedIn":[]},{"term":"Active User","slug":"active-user","definition":"A user who performed a qualifying action in the defined period.","section":"Customer Terms","canonicalLink":"metrics/product.md#daily-active-users-dau","usedIn":[]},{"term":"Lead","slug":"lead","definition":"A contact who has expressed interest (form fill, signup, etc.).","section":"Customer Terms","canonicalLink":"metrics/marketing.md#leads","usedIn":[]},{"term":"MQL (Marketing Qualified Lead)","slug":"mql-marketing-qualified-lead","definition":"A lead meeting criteria indicating sales-readiness.","section":"Customer Terms","canonicalLink":"metrics/marketing.md#marketing-qualified-leads-mqls","usedIn":[]},{"term":"SQL (Sales Qualified Lead)","slug":"sql-sales-qualified-lead","definition":"An MQL accepted by sales as worth pursuing.","section":"Customer Terms","canonicalLink":"metrics/marketing.md#sales-qualified-leads-sqls","usedIn":[]},{"term":"Opportunity","slug":"opportunity","definition":"A qualified sales prospect in the pipeline.","section":"Customer Terms","canonicalLink":null,"usedIn":[]},{"term":"NPS (Net Promoter Score)","slug":"nps-net-promoter-score","definition":"% Promoters (9-10 rating) minus % Detractors (0-6 rating).","section":"Satisfaction Terms","canonicalLink":"metrics/core.md#nps-net-promoter-score","usedIn":["Core","Onboarding","Partnerships","Professional Services"]},{"term":"CSAT (Customer Satisfaction Score)","slug":"csat-customer-satisfaction-score","definition":"Percentage of positive ratings on satisfaction survey.","section":"Satisfaction Terms","canonicalLink":"metrics/support.md#customer-satisfaction-score-csat","usedIn":["Support","Customer Success","Onboarding","Professional Services"]},{"term":"CES (Customer Effort Score)","slug":"ces-customer-effort-score","definition":"Average rating on ease of experience (typically 1-7 scale).","section":"Satisfaction Terms","canonicalLink":"metrics/support.md#customer-effort-score-ces","usedIn":["Support"]},{"term":"Health Score","slug":"health-score","definition":"Composite score predicting likelihood of retention or churn.","section":"Satisfaction Terms","canonicalLink":"metrics/customer-success.md#customer-health-score","usedIn":["Customer Success","Product"]},{"term":"Period","slug":"period","definition":"A defined time interval for measurement. Always specify:","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"Cohort","slug":"cohort","definition":"A group of customers/users defined by a shared characteristic, typically signup date.","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"Trailing / Rolling","slug":"trailing-rolling","definition":"A period ending at the current date.","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"YoY (Year over Year)","slug":"yoy-year-over-year","definition":"Comparison to same period in prior year.","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"MoM (Month over Month)","slug":"mom-month-over-month","definition":"Comparison to prior month.","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"QoQ (Quarter over Quarter)","slug":"qoq-quarter-over-quarter","definition":"Comparison to prior quarter.","section":"Time Terms","canonicalLink":null,"usedIn":[]},{"term":"COGS (Cost of Goods Sold)","slug":"cogs-cost-of-goods-sold","definition":"Direct costs to deliver the product/service.","section":"Financial Terms","canonicalLink":null,"usedIn":[]},{"term":"Operating Expenses (Opex)","slug":"operating-expenses-opex","definition":"Costs of running the business (excluding COGS).","section":"Financial Terms","canonicalLink":null,"usedIn":[]},{"term":"EBITDA","slug":"ebitda","definition":"Earnings before interest, taxes, depreciation and amortization.","section":"Financial Terms","canonicalLink":null,"usedIn":[]},{"term":"Burn Rate","slug":"burn-rate","definition":"Net cash consumed per month.","section":"Financial Terms","canonicalLink":"metrics/finance.md#cash-burn-rate","usedIn":[]},{"term":"Runway","slug":"runway","definition":"Months until cash runs out at current burn rate.","section":"Financial Terms","canonicalLink":"metrics/finance.md#cash-runway","usedIn":[]},{"term":"DSO (Days Sales Outstanding)","slug":"dso-days-sales-outstanding","definition":"Average days to collect payment after invoicing.","section":"Financial Terms","canonicalLink":"metrics/finance.md#days-sales-outstanding-dso","usedIn":["Finance","RevOps (same definition)"]},{"term":"Bad Debt Rate","slug":"bad-debt-rate","definition":"Percentage of revenue written off as uncollectable.","section":"Financial Terms","canonicalLink":"metrics/finance.md#bad-debt-rate","usedIn":["Finance","RevOps (same definition)"]},{"term":"Uptime / Availability","slug":"uptime-availability","definition":"Percentage of time service is operational.","section":"Reliability Terms","canonicalLink":"metrics/engineering.md#uptime-availability","usedIn":[]},{"term":"SLA (Service Level Agreement)","slug":"sla-service-level-agreement","definition":"Contractual commitment for service levels (uptime, response time, etc.).","section":"Reliability Terms","canonicalLink":null,"usedIn":[]},{"term":"Incident","slug":"incident","definition":"An unplanned interruption or degradation of service.","section":"Reliability Terms","canonicalLink":null,"usedIn":[]},{"term":"MTTR (Mean Time to Resolve/Recover)","slug":"mttr-mean-time-to-resolverecover","definition":"Average time from incident start to resolution.","section":"Reliability Terms","canonicalLink":"metrics/engineering.md#mean-time-to-resolve-mttr","usedIn":[]},{"term":"Error Rate","slug":"error-rate","definition":"Percentage of requests resulting in errors.","section":"Reliability Terms","canonicalLink":"metrics/engineering.md#error-rate","usedIn":[]},{"term":"Pipeline","slug":"pipeline","definition":"Total value of active sales opportunities.","section":"Pipeline Terms","canonicalLink":"metrics/sales.md#pipeline-value","usedIn":[]},{"term":"Pipeline Coverage","slug":"pipeline-coverage","definition":"Ratio of pipeline value to quota.","section":"Pipeline Terms","canonicalLink":"metrics/sales.md#pipeline-coverage-ratio","usedIn":[]},{"term":"Win Rate","slug":"win-rate","definition":"Percentage of opportunities closed as won.","section":"Pipeline Terms","canonicalLink":"metrics/sales.md#win-rate","usedIn":["Sales","Partnerships (partner win rate)"]},{"term":"Sales Cycle","slug":"sales-cycle","definition":"Time from opportunity creation to close.","section":"Pipeline Terms","canonicalLink":"metrics/sales.md#sales-cycle-length","usedIn":[]},{"term":"Session","slug":"session","definition":"A period of continuous user activity in the product.","section":"Engagement Terms","canonicalLink":null,"usedIn":[]},{"term":"DAU / WAU / MAU","slug":"dau-wau-mau","definition":"Daily / Weekly / Monthly Active Users.","section":"Engagement Terms","canonicalLink":"metrics/product.md","usedIn":[]},{"term":"Stickiness","slug":"stickiness","definition":"DAU/MAU ratio - how often users return.","section":"Engagement Terms","canonicalLink":"metrics/product.md#daumau-ratio-stickiness","usedIn":[]},{"term":"Feature Adoption","slug":"feature-adoption","definition":"Percentage of users using a specific feature.","section":"Engagement Terms","canonicalLink":"metrics/product.md#feature-adoption-rate","usedIn":[]},{"term":"Activation","slug":"activation","definition":"Moment when new user experiences core product value.","section":"Engagement Terms","canonicalLink":null,"usedIn":[]},{"term":"TTFV (Time to First Value)","slug":"ttfv-time-to-first-value","definition":"Time from signup to achieving first meaningful value.","section":"Time-Based Metrics","canonicalLink":"metrics/onboarding.md#time-to-first-value-ttfv","usedIn":[]},{"term":"FRT (First Response Time)","slug":"frt-first-response-time","definition":"Time from ticket/request to first human response.","section":"Time-Based Metrics","canonicalLink":"metrics/support.md#first-response-time-frt","usedIn":[]},{"term":"Resolution Time","slug":"resolution-time","definition":"Time from request to final resolution.","section":"Time-Based Metrics","canonicalLink":"metrics/support.md#resolution-time-time-to-resolution","usedIn":[]},{"term":"Lead Time for Changes","slug":"lead-time-for-changes","definition":"Time from code commit to production deployment.","section":"Time-Based Metrics","canonicalLink":"metrics/engineering.md#lead-time-for-changes","usedIn":[]},{"term":"Point-in-Time vs Period","slug":"point-in-time-vs-period","definition":"- **Point-in-time:** Value at a specific moment (e.g., \"Customers as of Dec 31\")","section":"Counting Conventions","canonicalLink":null,"usedIn":[]},{"term":"Beginning vs Ending","slug":"beginning-vs-ending","definition":"- **Beginning of period:** Value at start (for retention calculations)","section":"Counting Conventions","canonicalLink":null,"usedIn":[]},{"term":"Unique vs Total","slug":"unique-vs-total","definition":"- **Unique:** Deduplicated count (e.g., unique users)","section":"Counting Conventions","canonicalLink":null,"usedIn":[]},{"term":"Revenue Metrics","slug":"revenue-metrics","definition":"| Metric | Typical Period | Notes |","section":"Measurement Period Conventions","canonicalLink":null,"usedIn":[]},{"term":"Retention Metrics","slug":"retention-metrics","definition":"| Metric | Typical Period | Notes |","section":"Measurement Period Conventions","canonicalLink":null,"usedIn":[]},{"term":"Efficiency Metrics","slug":"efficiency-metrics","definition":"| Metric | Typical Period | Notes |","section":"Measurement Period Conventions","canonicalLink":null,"usedIn":[]},{"term":"Engagement Metrics","slug":"engagement-metrics","definition":"| Metric | Typical Period | Notes |","section":"Measurement Period Conventions","canonicalLink":null,"usedIn":[]},{"term":"CEL (Commercial Event Ledger)","slug":"cel-commercial-event-ledger","definition":"The atomic, immutable event layer from which all GASP metrics derive. Every metric in the standard traces back to CEL events. If an event is not in the CEL, it does not exist for metric purposes.","section":"GASP Framework Terms","canonicalLink":"cel.md#commercial-event-ledger-cel","usedIn":["All revenue","retention and cost metrics"]},{"term":"ATL (Attribution Taxonomy Layer)","slug":"atl-attribution-taxonomy-layer","definition":"The tagging layer that classifies CEL events by lifecycle stage, expansion type and cost function. ATL is what enables dual-lens metrics (Operating form vs Market form).","section":"GASP Framework Terms","canonicalLink":"atl.md#attribution-taxonomy-layer-atl","usedIn":["Core metrics with dual-lens forms (ARR","NRR","CAC","LTV","Gross Margin","Churn)"]},{"term":"Adapter","slug":"adapter","definition":"The JSON mapping file that connects GASP's canonical field names to your warehouse columns. Each field declares its `schema.table.column` reference plus optional owners for the definition and the pipeline. The adapter is the only file a consuming organization writes.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Digital Twin","slug":"digital-twin","definition":"The combination of the GASP standard (metrics, relationships, ontology), your adapter (warehouse mapping) and an MCP server (agent access layer). Together they form a read-only semantic model of how a SaaS business operates. Agents read from the twin, not from source systems directly.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Ontology","slug":"ontology","definition":"The structured representation of GASP's entities, concepts, fields, source categories, temporal semantics and validation rules. The ontology sits below the metric layer and provides the canonical vocabulary that adapters, queries and agents reference.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Signal Type","slug":"signal-type","definition":"A classification that describes what kind of signal a metric provides. Every GASP metric has exactly one primary signal type; some carry a secondary.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Sensitivity Tier","slug":"sensitivity-tier","definition":"GASP's recommended data sensitivity classification for each metric. Aligns with ISO 27001 and OSSA `data_classification` conventions.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Access Scope","slug":"access-scope","definition":"GASP's recommended filtering pattern for each metric. Describes whether the metric is naturally filterable by user context.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Change Nature","slug":"change-nature","definition":"Optional CEL field that captures the intent behind a revenue movement. Does not alter metric calculations. Enables downstream analysis of revenue quality (e.g. Adjusted NRR).","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Structured Formula","slug":"structured-formula","definition":"A decomposed representation of a metric's formula: explicit references to other metric nodes (with roles like numerator, denominator, addend) and the raw fields required. Enables agents to walk the dependency tree without parsing formula text.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Metric Owner","slug":"metric-owner","definition":"The named team or person responsible for a metric definition in an organization's adapter. Ownership is a required adapter field. When a metric value is disputed, the owner resolves the dispute. GASP provides the canonical definition; the owner decides whether their organization follows it or deviates, and documents the deviation.","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]},{"term":"Temporal Semantics","slug":"temporal-semantics","definition":"GASP's structured description of a metric's time grain, aggregation method and reporting frequency. Each metric has a mapping (e.g. MRR = End-of-month snapshot, Daily sync).","section":"GASP Framework Terms","canonicalLink":null,"usedIn":[]}],"nodes":[{"id":"arr","label":"ARR","department":"Core","signalType":"outcome","level":1,"category":"Core","description":"The annualized value of recurring revenue. ARR represents the yearly run rate of subscription revenue."},{"id":"rule_of_40","label":"Rule of 40","department":"Core","signalType":"outcome","level":1,"category":"Core","description":"A heuristic that balances growth and profitability. A healthy SaaS company's growth rate plus profit margin should equal 40% or more."},{"id":"mrr","label":"MRR","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"net_new_mrr","label":"Net New MRR","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"nrr","label":"NRR","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The percentage of revenue retained from existing customers over a period, including expansion, contraction and churn. Also known as Net Dollar Retention (NDR)."},{"id":"grr","label":"GRR","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention."},{"id":"gross_margin","label":"Gross Margin","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention."},{"id":"arpa","label":"ARPA","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"Average monthly recurring revenue per customer."},{"id":"mrr_growth_rate","label":"MRR Growth Rate","department":"Core","signalType":"outcome","level":2,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"operating_margin","label":"Operating Margin","department":"Finance","signalType":"outcome","level":2,"category":"Finance","description":"The percentage of customers flagged as at-risk."},{"id":"fcf","label":"Free Cash Flow","department":"Finance","signalType":"outcome","level":2,"category":"Finance","description":"Cash generated from operations minus capital expenditures."},{"id":"new_mrr","label":"New MRR","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"expansion_mrr","label":"Expansion MRR","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"churned_mrr","label":"Churned MRR","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"contraction_mrr","label":"Contraction MRR","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The total predictable revenue from active subscriptions, normalized to a monthly value."},{"id":"cac","label":"CAC","department":"Core","signalType":"efficiency","level":3,"category":"Core","description":"The total cost to acquire a new customer."},{"id":"ltv","label":"LTV","department":"Core","signalType":"efficiency","level":3,"category":"Core","description":"The total revenue (or profit) expected from a customer over their lifetime. Also known as CLV (Customer Lifetime Value) or CLTV."},{"id":"ltv_cac_ratio","label":"LTV:CAC Ratio","department":"Core","signalType":"efficiency","level":3,"category":"Core","description":"The total cost to acquire a new customer."},{"id":"cac_payback","label":"CAC Payback Period","department":"Core","signalType":"efficiency","level":3,"category":"Core","description":"The total cost to acquire a new customer."},{"id":"logo_churn_rate","label":"Logo Churn Rate","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The percentage of customers lost in a period. Also called customer churn or logo churn."},{"id":"revenue_churn_rate","label":"Revenue Churn Rate","department":"Core","signalType":"outcome","level":3,"category":"Core","description":"The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate."},{"id":"nps","label":"NPS","department":"Core","signalType":"leading","level":3,"category":"Core","description":"A measure of customer loyalty based on likelihood to recommend."},{"id":"pipeline_value","label":"Pipeline Value","department":"Sales","signalType":"leading","level":3,"category":"Sales","description":"Quality assessment of pipeline data and process adherence."},{"id":"pipeline_coverage","label":"Pipeline Coverage","department":"Sales","signalType":"leading","level":3,"category":"Sales","description":"Quality assessment of pipeline data and process adherence."},{"id":"win_rate","label":"Win Rate","department":"Sales","signalType":"efficiency","level":3,"category":"Sales","description":"The percentage of customers flagged as at-risk."},{"id":"acv","label":"ACV","department":"Sales","signalType":"outcome","level":3,"category":"Sales","description":"The annualized value of a contract, normalizing multi-year deals to a single year. Also used to describe average deal size when aggregated."},{"id":"quota_attainment","label":"Quota Attainment","department":"Sales","signalType":"outcome","level":3,"category":"Sales","description":"The percentage of customers flagged as at-risk."},{"id":"health_score","label":"Customer Health Score","department":"Customer Success","signalType":"leading","level":3,"category":"Customer Success","description":"A composite score predicting likelihood of retention or churn."},{"id":"expansion_rate","label":"Expansion Revenue Rate","department":"Customer Success","signalType":"outcome","level":3,"category":"Customer Success","description":"Additional MRR from existing customers through upgrades, add-ons, seat increases or price increases."},{"id":"renewal_rate","label":"Renewal Rate","department":"Customer Success","signalType":"outcome","level":3,"category":"Customer Success","description":"MRR generated from brand new customers acquired in the period."},{"id":"at_risk_rate","label":"At-Risk Customer Rate","department":"Customer Success","signalType":"leading","level":3,"category":"Customer Success","description":"The percentage of customers flagged as at-risk."},{"id":"magic_number","label":"Magic Number","department":"Finance","signalType":"efficiency","level":3,"category":"Finance","description":"Sales efficiency metric measuring revenue generated per dollar of sales and marketing spend."},{"id":"burn_rate","label":"Cash Burn Rate","department":"Finance","signalType":"operational","level":3,"category":"Finance","description":"The percentage of customers flagged as at-risk."},{"id":"revenue_per_employee","label":"Revenue per Employee","department":"Finance","signalType":"outcome","level":3,"category":"Finance","description":"The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate."},{"id":"partner_sourced_revenue","label":"Partner-Sourced Revenue","department":"Partnerships","signalType":"outcome","level":3,"category":"Partnerships","description":"The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate."},{"id":"sales_cycle","label":"Sales Cycle Length","department":"Sales","signalType":"operational","level":4,"category":"Sales","description":"MQLs accepted by sales as worth pursuing."},{"id":"mqls","label":"MQLs","department":"Marketing","signalType":"operational","level":4,"category":"Marketing","description":"Leads that have demonstrated sufficient engagement and intent to warrant sales attention, based on criteria established between marketing and sales."},{"id":"sqls","label":"SQLs","department":"Marketing","signalType":"operational","level":4,"category":"Marketing","description":"MQLs accepted by sales as worth pursuing."},{"id":"lvr","label":"Lead Velocity Rate","department":"Marketing","signalType":"leading","level":4,"category":"Marketing","description":"Month-over-month growth in qualified leads. Considered by many to be the most important leading indicator in SaaS."},{"id":"marketing_cac","label":"Marketing CAC","department":"Marketing","signalType":"efficiency","level":4,"category":"Marketing","description":"The total cost to acquire a new customer."},{"id":"cpl","label":"Cost per Lead","department":"Marketing","signalType":"efficiency","level":4,"category":"Marketing","description":"Cost to acquire a lead."},{"id":"marketing_sourced_pipeline","label":"Marketing Sourced Pipeline","department":"Marketing","signalType":"leading","level":4,"category":"Marketing","description":"Leads that have demonstrated sufficient engagement and intent to warrant sales attention, based on criteria established between marketing and sales."},{"id":"qbr_completion","label":"QBR Completion Rate","department":"Customer Success","signalType":"operational","level":4,"category":"Customer Success","description":"The percentage of eligible accounts that completed a QBR."},{"id":"csat","label":"CSAT","department":"Support","signalType":"outcome","level":4,"category":"Support","description":"The percentage of customers flagged as at-risk."},{"id":"ttfv","label":"Time to First Value","department":"Onboarding","signalType":"operational","level":4,"category":"Onboarding","description":"Time from customer signup/contract to achieving first meaningful value."},{"id":"onboarding_completion","label":"Onboarding Completion Rate","department":"Onboarding","signalType":"outcome","level":4,"category":"Onboarding","description":"Research and development spend as percentage of revenue."},{"id":"activation_rate","label":"Activation Rate","department":"Onboarding","signalType":"outcome","level":4,"category":"Onboarding","description":"The percentage of customers flagged as at-risk."},{"id":"dau_mau","label":"DAU/MAU Ratio","department":"Product","signalType":"leading","level":4,"category":"Product","description":"Daily / Weekly / Monthly Active Users."},{"id":"feature_adoption","label":"Feature Adoption Rate","department":"Product","signalType":"leading","level":4,"category":"Product","description":"The percentage of customers flagged as at-risk."},{"id":"pqas","label":"Product Qualified Accounts","department":"Product","signalType":"leading","level":4,"category":"Product","description":"Accounts that have demonstrated product engagement indicating sales-readiness."},{"id":"forecast_accuracy","label":"Forecast Accuracy","department":"RevOps","signalType":"operational","level":4,"category":"RevOps","description":"How accurately renewals were predicted."},{"id":"dso","label":"Days Sales Outstanding","department":"RevOps","signalType":"operational","level":4,"category":"RevOps","description":"Average days to collect payment after invoicing."},{"id":"employee_turnover","label":"Employee Turnover Rate","department":"People","signalType":"outcome","level":4,"category":"People","description":"Percentage of employees who left in a period."},{"id":"frt","label":"First Response Time","department":"Support","signalType":"operational","level":5,"category":"Support","description":"Time from ticket creation to first human response."},{"id":"ticket_volume","label":"Ticket Volume","department":"Support","signalType":"operational","level":5,"category":"Support","description":"Total number of support tickets received in a period."},{"id":"self_service_rate","label":"Self-Service Rate","department":"Support","signalType":"efficiency","level":5,"category":"Support","description":"The percentage of customers flagged as at-risk."},{"id":"uptime","label":"Uptime","department":"Engineering","signalType":"outcome","level":5,"category":"Engineering","description":"The percentage of time the service is operational."},{"id":"deployment_frequency","label":"Deployment Frequency","department":"Engineering","signalType":"operational","level":5,"category":"Engineering","description":"How often code is deployed to production."},{"id":"mttr","label":"MTTR","department":"Engineering","signalType":"operational","level":5,"category":"Engineering","description":"Time from incident start to resolution."},{"id":"enps","label":"Employee NPS","department":"People","signalType":"leading","level":5,"category":"People","description":"A measure of customer loyalty based on likelihood to recommend."},{"id":"entity_customer","label":"Customer","nodeType":"entity","level":0,"description":"A distinct billing entity with one or more subscriptions. The \"who\" of your business relationship.","category":"entity"},{"id":"entity_subscription","label":"Subscription","nodeType":"entity","level":0,"description":"A billable agreement between a customer and your product, with defined terms, pricing, and status. The \"what and when\" of the relationship.","category":"entity"},{"id":"entity_license","label":"License","nodeType":"entity","level":0,"description":"A specific capability, quantity, or configuration granted by a subscription. The \"how much\" of the relationship.","category":"entity"},{"id":"entity_lead","label":"Lead","nodeType":"entity","level":0,"description":"A person or company that has shown interest but has not been qualified as a sales opportunity.","category":"entity"},{"id":"entity_opportunity","label":"Opportunity","nodeType":"entity","level":0,"description":"A qualified sales prospect with an estimated value, stage, and expected close date.","category":"entity"},{"id":"entity_user","label":"User","nodeType":"entity","level":0,"description":"An individual who uses the product. In B2B, one Customer may have many Users. Usage metrics are measured at this level.","category":"entity"},{"id":"entity_ticket","label":"Ticket","nodeType":"entity","level":0,"description":"A discrete support interaction initiated by a customer or user, tracked to resolution.","category":"entity"},{"id":"entity_employee","label":"Employee","nodeType":"entity","level":0,"description":"An internal team member. People metrics and efficiency ratios (revenue per employee) are measured at this level.","category":"entity"},{"id":"entity_invoice","label":"Invoice","nodeType":"entity","level":0,"description":"A billing document representing money owed or collected. Cash flow and collections metrics are measured at this level.","category":"entity"},{"id":"entity_partner","label":"Partner","nodeType":"entity","level":0,"description":"An external organization that sources, influences, or resells deals. Partner metrics are measured at this level.","category":"entity"},{"id":"entity_project","label":"Project","nodeType":"entity","level":0,"description":"A professional services engagement with defined scope, timeline, and deliverables.","category":"entity"},{"id":"entity_plan","label":"Plan","nodeType":"entity","level":0,"description":"A pricing tier offered to customers (e.g. Starter, Pro, Enterprise). Each plan defines a price point and a set of included products and quotas.","category":"entity"},{"id":"entity_product","label":"Product","nodeType":"entity","level":0,"description":"A distinct purchasable unit within the company's offering (e.g. Analytics Module, Automation Module). A subscription may include multiple products.","category":"entity"},{"id":"entity_campaign","label":"Campaign","nodeType":"entity","level":0,"description":"A marketing initiative with defined objectives, channels, budget and dates. Campaigns source leads and influence opportunities.","category":"entity"},{"id":"entity_contact","label":"Contact","nodeType":"entity","level":0,"description":"A named individual at a customer account involved in the buying or expansion process. Distinct from User (product user) and Lead (pre-qualification).","category":"entity"},{"id":"concept_revenue","label":"Revenue (GAAP)","nodeType":"concept","level":0,"description":"Recognized revenue under accrual accounting. The financial outcome of delivering on subscription obligations.","category":"concept"},{"id":"concept_bookings","label":"Bookings","nodeType":"concept","level":0,"description":"The total value of new contracts signed in a period. A forward-looking commitment that converts to revenue over the contract term.","category":"concept"},{"id":"concept_cogs","label":"COGS","nodeType":"concept","level":0,"description":"Cost of Goods Sold — direct costs attributable to delivering the product (hosting, support, onboarding). The denominator of Gross Margin.","category":"concept"},{"id":"concept_cohort","label":"Cohort","nodeType":"concept","level":0,"description":"A time-bound grouping of customers by acquisition period. Used for retention and expansion analysis to isolate vintage effects.","category":"concept"},{"id":"concept_pipeline","label":"Pipeline","nodeType":"concept","level":0,"description":"The aggregate weighted value of active opportunities. Represents potential future bookings at various probability stages.","category":"concept"},{"id":"concept_segment","label":"Segment","nodeType":"concept","level":0,"description":"A classification of customers by size, vertical or fit (e.g. SMB, Mid-Market, Enterprise). Used for cohort analysis and benchmark comparison.","category":"concept"},{"id":"concept_tcv","label":"TCV","nodeType":"concept","level":0,"description":"The total value of a contract over its full term, including one-time fees and multi-year commitments. Distinct from Bookings (period-attributable) and ACV (annualized).","category":"concept"}],"edges":[{"source":"mrr","target":"arr","type":"component"},{"source":"new_mrr","target":"net_new_mrr","type":"component"},{"source":"expansion_mrr","target":"net_new_mrr","type":"component"},{"source":"churned_mrr","target":"net_new_mrr","type":"reduces"},{"source":"contraction_mrr","target":"net_new_mrr","type":"reduces"},{"source":"net_new_mrr","target":"mrr","type":"drives"},{"source":"mrr","target":"mrr_growth_rate","type":"component"},{"source":"expansion_mrr","target":"nrr","type":"component"},{"source":"churned_mrr","target":"nrr","type":"reduces"},{"source":"contraction_mrr","target":"nrr","type":"reduces"},{"source":"churned_mrr","target":"grr","type":"reduces"},{"source":"contraction_mrr","target":"grr","type":"reduces"},{"source":"mqls","target":"sqls","type":"drives"},{"source":"sqls","target":"pipeline_value","type":"drives"},{"source":"pipeline_value","target":"new_mrr","type":"drives"},{"source":"win_rate","target":"new_mrr","type":"drives"},{"source":"acv","target":"new_mrr","type":"drives"},{"source":"pipeline_value","target":"pipeline_coverage","type":"component"},{"source":"lvr","target":"mqls","type":"predicts"},{"source":"marketing_sourced_pipeline","target":"pipeline_value","type":"component"},{"source":"quota_attainment","target":"new_mrr","type":"drives"},{"source":"sales_cycle","target":"win_rate","type":"reduces"},{"source":"partner_sourced_revenue","target":"pipeline_value","type":"drives"},{"source":"partner_sourced_revenue","target":"new_mrr","type":"drives"},{"source":"pqas","target":"pipeline_value","type":"drives"},{"source":"mrr","target":"arpa","type":"component"},{"source":"arr","target":"magic_number","type":"component"},{"source":"churned_mrr","target":"revenue_churn_rate","type":"component"},{"source":"contraction_mrr","target":"revenue_churn_rate","type":"component"},{"source":"expansion_mrr","target":"expansion_rate","type":"component"},{"source":"feature_adoption","target":"pqas","type":"drives"},{"source":"mqls","target":"lvr","type":"component"},{"source":"ticket_volume","target":"self_service_rate","type":"component"},{"source":"arpa","target":"ltv","type":"component"},{"source":"gross_margin","target":"ltv","type":"component"},{"source":"revenue_churn_rate","target":"ltv","type":"reduces"},{"source":"ltv","target":"ltv_cac_ratio","type":"component"},{"source":"cac","target":"ltv_cac_ratio","type":"component"},{"source":"cac","target":"cac_payback","type":"component"},{"source":"arpa","target":"cac_payback","type":"component"},{"source":"gross_margin","target":"cac_payback","type":"component"},{"source":"marketing_cac","target":"cac","type":"component"},{"source":"cpl","target":"marketing_cac","type":"component"},{"source":"new_mrr","target":"magic_number","type":"component"},{"source":"mrr_growth_rate","target":"rule_of_40","type":"component"},{"source":"operating_margin","target":"rule_of_40","type":"component"},{"source":"gross_margin","target":"operating_margin","type":"drives"},{"source":"acv","target":"arpa","type":"drives"},{"source":"ttfv","target":"onboarding_completion","type":"drives"},{"source":"onboarding_completion","target":"activation_rate","type":"drives"},{"source":"activation_rate","target":"feature_adoption","type":"drives"},{"source":"feature_adoption","target":"dau_mau","type":"drives"},{"source":"feature_adoption","target":"health_score","type":"drives"},{"source":"dau_mau","target":"health_score","type":"drives"},{"source":"health_score","target":"renewal_rate","type":"drives"},{"source":"health_score","target":"logo_churn_rate","type":"reduces"},{"source":"health_score","target":"at_risk_rate","type":"reduces"},{"source":"health_score","target":"expansion_rate","type":"drives"},{"source":"nps","target":"logo_churn_rate","type":"predicts","inverse":true},{"source":"nps","target":"churned_mrr","type":"predicts","inverse":true},{"source":"csat","target":"nps","type":"drives"},{"source":"ticket_volume","target":"csat","type":"reduces"},{"source":"frt","target":"csat","type":"drives"},{"source":"self_service_rate","target":"ticket_volume","type":"reduces"},{"source":"qbr_completion","target":"health_score","type":"drives"},{"source":"qbr_completion","target":"expansion_rate","type":"drives"},{"source":"expansion_rate","target":"expansion_mrr","type":"drives"},{"source":"renewal_rate","target":"grr","type":"drives"},{"source":"logo_churn_rate","target":"churned_mrr","type":"drives"},{"source":"revenue_churn_rate","target":"churned_mrr","type":"drives"},{"source":"at_risk_rate","target":"logo_churn_rate","type":"predicts"},{"source":"pqas","target":"expansion_rate","type":"drives"},{"source":"uptime","target":"csat","type":"drives"},{"source":"uptime","target":"nps","type":"drives"},{"source":"mttr","target":"uptime","type":"drives"},{"source":"deployment_frequency","target":"feature_adoption","type":"drives"},{"source":"arr","target":"revenue_per_employee","type":"component"},{"source":"gross_margin","target":"fcf","type":"drives"},{"source":"operating_margin","target":"fcf","type":"drives"},{"source":"burn_rate","target":"fcf","type":"reduces"},{"source":"dso","target":"fcf","type":"reduces"},{"source":"forecast_accuracy","target":"pipeline_coverage","type":"drives"},{"source":"enps","target":"employee_turnover","type":"reduces"},{"source":"employee_turnover","target":"revenue_per_employee","type":"reduces"},{"source":"employee_turnover","target":"quota_attainment","type":"reduces"},{"source":"nps","target":"entity_customer","type":"measures"},{"source":"ltv","target":"entity_customer","type":"measures"},{"source":"ltv_cac_ratio","target":"entity_customer","type":"measures"},{"source":"cac","target":"entity_customer","type":"measures"},{"source":"cac_payback","target":"entity_customer","type":"measures"},{"source":"marketing_cac","target":"entity_customer","type":"measures"},{"source":"health_score","target":"entity_customer","type":"measures"},{"source":"at_risk_rate","target":"entity_customer","type":"measures"},{"source":"renewal_rate","target":"entity_customer","type":"measures"},{"source":"logo_churn_rate","target":"entity_customer","type":"measures"},{"source":"expansion_rate","target":"entity_customer","type":"measures"},{"source":"qbr_completion","target":"entity_customer","type":"measures"},{"source":"mrr","target":"entity_subscription","type":"measures"},{"source":"arr","target":"entity_subscription","type":"measures"},{"source":"arpa","target":"entity_subscription","type":"measures"},{"source":"new_mrr","target":"entity_subscription","type":"measures"},{"source":"expansion_mrr","target":"entity_subscription","type":"measures"},{"source":"churned_mrr","target":"entity_subscription","type":"measures"},{"source":"contraction_mrr","target":"entity_subscription","type":"measures"},{"source":"net_new_mrr","target":"entity_subscription","type":"measures"},{"source":"nrr","target":"entity_subscription","type":"measures"},{"source":"grr","target":"entity_subscription","type":"measures"},{"source":"revenue_churn_rate","target":"entity_subscription","type":"measures"},{"source":"mrr_growth_rate","target":"entity_subscription","type":"measures"},{"source":"gross_margin","target":"entity_subscription","type":"measures"},{"source":"rule_of_40","target":"entity_subscription","type":"measures"},{"source":"operating_margin","target":"entity_subscription","type":"measures"},{"source":"fcf","target":"entity_subscription","type":"measures"},{"source":"magic_number","target":"entity_subscription","type":"measures"},{"source":"mqls","target":"entity_lead","type":"measures"},{"source":"sqls","target":"entity_lead","type":"measures"},{"source":"lvr","target":"entity_lead","type":"measures"},{"source":"cpl","target":"entity_lead","type":"measures"},{"source":"pipeline_value","target":"entity_opportunity","type":"measures"},{"source":"pipeline_coverage","target":"entity_opportunity","type":"measures"},{"source":"win_rate","target":"entity_opportunity","type":"measures"},{"source":"acv","target":"entity_opportunity","type":"measures"},{"source":"sales_cycle","target":"entity_opportunity","type":"measures"},{"source":"quota_attainment","target":"entity_opportunity","type":"measures"},{"source":"marketing_sourced_pipeline","target":"entity_opportunity","type":"measures"},{"source":"forecast_accuracy","target":"entity_opportunity","type":"measures"},{"source":"dau_mau","target":"entity_user","type":"measures"},{"source":"feature_adoption","target":"entity_user","type":"measures"},{"source":"activation_rate","target":"entity_user","type":"measures"},{"source":"pqas","target":"entity_user","type":"measures"},{"source":"ttfv","target":"entity_user","type":"measures"},{"source":"onboarding_completion","target":"entity_user","type":"measures"},{"source":"ticket_volume","target":"entity_ticket","type":"measures"},{"source":"frt","target":"entity_ticket","type":"measures"},{"source":"self_service_rate","target":"entity_ticket","type":"measures"},{"source":"csat","target":"entity_ticket","type":"measures"},{"source":"employee_turnover","target":"entity_employee","type":"measures"},{"source":"enps","target":"entity_employee","type":"measures"},{"source":"revenue_per_employee","target":"entity_employee","type":"measures"},{"source":"dso","target":"entity_invoice","type":"measures"},{"source":"burn_rate","target":"entity_invoice","type":"measures"},{"source":"partner_sourced_revenue","target":"entity_partner","type":"measures"},{"source":"entity_customer","target":"entity_subscription","type":"owns"},{"source":"entity_subscription","target":"entity_license","type":"grants"},{"source":"entity_customer","target":"entity_user","type":"engages_via"},{"source":"entity_customer","target":"entity_ticket","type":"submits"},{"source":"entity_lead","target":"entity_opportunity","type":"converts_to"},{"source":"entity_opportunity","target":"entity_customer","type":"converts_to"},{"source":"entity_partner","target":"entity_opportunity","type":"sources"},{"source":"entity_employee","target":"entity_customer","type":"manages"},{"source":"entity_project","target":"entity_customer","type":"serves"},{"source":"entity_subscription","target":"concept_revenue","type":"generates"},{"source":"entity_subscription","target":"entity_invoice","type":"generates"},{"source":"entity_opportunity","target":"concept_bookings","type":"produces"},{"source":"entity_opportunity","target":"concept_pipeline","type":"contributes_to"},{"source":"entity_subscription","target":"concept_cogs","type":"incurs"},{"source":"entity_customer","target":"concept_cohort","type":"belongs_to"},{"source":"entity_customer","target":"entity_customer","type":"parent_of"},{"source":"entity_subscription","target":"entity_plan","type":"priced_by"},{"source":"entity_license","target":"entity_product","type":"grants"},{"source":"entity_customer","target":"entity_contact","type":"represented_by"},{"source":"entity_campaign","target":"entity_lead","type":"sources"},{"source":"entity_customer","target":"concept_segment","type":"belongs_to"},{"source":"entity_opportunity","target":"concept_tcv","type":"produces"}],"dataRequirements":[{"metric":"ARR / MRR","fields":["subscription_id","mrr","arr","start_date","status"],"fieldTypes":{"subscription_id":"string","mrr":"decimal","arr":"decimal","start_date":"date","status":"string"},"source":"Billing","frequency":"Daily sync","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', start_date) AS period,\n  SUM(mrr) AS mrr,\n  SUM(mrr) * 12 AS arr\nFROM subscriptions\nWHERE status = 'active'\nGROUP BY 1","description":"Core revenue. Sync daily for accurate recurring revenue tracking","department":"Executive"},{"metric":"Revenue Components (New, Expansion, Contraction, Churn)","fields":["subscription_id","mrr_change","change_type","effective_date"],"fieldTypes":{"subscription_id":"string","mrr_change":"decimal","change_type":"string","effective_date":"date"},"source":"Billing","frequency":"Daily sync","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', effective_date) AS period,\n  change_type,\n  SUM(mrr_change) AS total_change\nFROM subscription_changes\nGROUP BY 1, 2","description":"MRR movements. Sync daily to track revenue waterfall","department":"Executive"},{"metric":"NRR / GRR","fields":["account_id","beginning_mrr","ending_mrr","cohort_period"],"fieldTypes":{"account_id":"string","beginning_mrr":"decimal","ending_mrr":"decimal","cohort_period":"date"},"source":"Billing + CRM","frequency":"Monthly","grain":"Monthly cohort","exampleQuery":"SELECT\n  cohort_period,\n  SUM(ending_mrr) / SUM(beginning_mrr) AS nrr,\n  SUM(LEAST(ending_mrr, beginning_mrr)) / SUM(beginning_mrr) AS grr\nFROM account_cohorts\nGROUP BY 1","description":"Cohort-matched beginning and ending MRR per account","department":"Executive"},{"metric":"Rule of 40","fields":["arr_growth_rate","ebitda_margin","period"],"fieldTypes":{"arr_growth_rate":"decimal","ebitda_margin":"decimal","period":"date"},"source":"Finance + Billing","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  period,\n  arr_growth_rate + ebitda_margin AS rule_of_40\nFROM monthly_financials","description":"Compute monthly from ARR growth rate and EBITDA margin","department":"Executive"},{"metric":"CAC","fields":["sales_marketing_spend","new_customers","period"],"fieldTypes":{"sales_marketing_spend":"decimal","new_customers":"integer","period":"date"},"source":"Finance + CRM","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  period,\n  SUM(sales_marketing_spend) / NULLIF(SUM(new_customers), 0) AS cac\nFROM acquisition_costs\nGROUP BY 1","description":"Fully-loaded S&M spend ÷ new customers. Lag 1 month for accrual","department":"Executive"},{"metric":"LTV","fields":["arpa","gross_margin","churn_rate"],"fieldTypes":{"arpa":"decimal","gross_margin":"decimal","churn_rate":"decimal"},"source":"Billing + Finance","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  arpa * gross_margin / NULLIF(churn_rate, 0) AS ltv\nFROM monthly_unit_economics","description":"Requires accurate gross margin and churn rate inputs","department":"Executive"},{"metric":"Burn Rate","fields":["cash_balance","operating_expenses","period"],"fieldTypes":{"cash_balance":"decimal","operating_expenses":"decimal","period":"date"},"source":"Finance","frequency":"Monthly","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  period,\n  cash_balance,\n  operating_expenses AS burn_rate,\n  cash_balance / NULLIF(operating_expenses, 0) AS runway_months\nFROM monthly_financials","description":"Net cash consumed. Reconcile monthly from bank statements","department":"Executive"},{"metric":"Logo Churn","fields":["account_id","status","churn_date","churn_reason"],"fieldTypes":{"account_id":"string","status":"string","churn_date":"date","churn_reason":"string"},"source":"CRM + Billing","frequency":"Daily sync","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', churn_date) AS period,\n  COUNT(*) AS churned_accounts,\n  COUNT(*) * 1.0 / total_accounts AS logo_churn_rate\nFROM accounts\nWHERE status = 'churned'\nGROUP BY 1","description":"Track customer status changes daily for early detection","department":"Executive"},{"metric":"Revenue Churn","fields":["account_id","mrr_lost","churn_date","churn_type"],"fieldTypes":{"account_id":"string","mrr_lost":"decimal","churn_date":"date","churn_type":"string"},"source":"Billing","frequency":"Daily sync","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', churn_date) AS period,\n  SUM(mrr_lost) AS revenue_churn,\n  SUM(mrr_lost) / beginning_mrr AS revenue_churn_rate\nFROM churn_events\nGROUP BY 1","description":"MRR lost to cancellations and downgrades","department":"Executive"},{"metric":"Health Score","fields":["account_id","usage_score","engagement_score","support_score","composite_score"],"fieldTypes":{"account_id":"string","usage_score":"decimal","engagement_score":"decimal","support_score":"decimal","composite_score":"decimal"},"source":"CS Platform","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  account_id,\n  (usage_score * 0.4 + engagement_score * 0.35 + support_score * 0.25) AS composite_score\nFROM health_score_inputs\nWHERE snapshot_date = CURRENT_DATE","description":"Composite score from multiple inputs. Refresh weekly","department":"Executive"},{"metric":"LTV:CAC & CAC Payback","fields":["ltv","cac","payback_months"],"fieldTypes":{"ltv":"decimal","cac":"decimal","payback_months":"integer"},"source":"Derived","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  ltv / NULLIF(cac, 0) AS ltv_cac_ratio,\n  cac / NULLIF(arpa * gross_margin, 0) AS payback_months\nFROM monthly_unit_economics","description":"Derived from LTV and CAC — ensure upstream metrics current","department":"Executive"},{"metric":"Gross Margin","fields":["revenue","cogs","gross_profit","period"],"fieldTypes":{"revenue":"decimal","cogs":"decimal","gross_profit":"decimal","period":"date"},"source":"Finance","frequency":"Monthly","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  period,\n  revenue,\n  cogs,\n  (revenue - cogs) / NULLIF(revenue, 0) AS gross_margin\nFROM monthly_financials","description":"Revenue minus COGS. Align with monthly financial close","department":"Executive"},{"metric":"Pipeline Value","fields":["opportunity_id","amount","stage","expected_close","owner"],"fieldTypes":{"opportunity_id":"string","amount":"decimal","stage":"string","expected_close":"date","owner":"string"},"source":"CRM","frequency":"Daily sync","grain":"Daily snapshot","exampleQuery":"SELECT\n  stage,\n  COUNT(*) AS deal_count,\n  SUM(amount) AS pipeline_value\nFROM opportunities\nWHERE stage NOT IN ('Closed Won', 'Closed Lost')\nGROUP BY 1","description":"Weighted pipeline total. Sync daily to catch stage changes and new opportunities","department":"Sales"},{"metric":"Win Rate","fields":["opportunity_id","stage","close_date","is_won"],"fieldTypes":{"opportunity_id":"string","stage":"string","close_date":"date","is_won":"boolean"},"source":"CRM","frequency":"Daily sync","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', close_date) AS period,\n  COUNT(CASE WHEN is_won THEN 1 END) * 1.0 / COUNT(*) AS win_rate\nFROM opportunities\nWHERE stage IN ('Closed Won', 'Closed Lost')\nGROUP BY 1","description":"Closed-won ÷ total opportunities. Requires accurate stage tracking on every deal","department":"Sales"},{"metric":"ACV","fields":["opportunity_id","annual_value","close_date"],"fieldTypes":{"opportunity_id":"string","annual_value":"decimal","close_date":"date"},"source":"CRM","frequency":"Daily sync","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', close_date) AS period,\n  AVG(annual_value) AS avg_acv\nFROM opportunities\nWHERE is_won = true\nGROUP BY 1","description":"Average contract value. Pull from CRM on close to track deal size trends","department":"Sales"},{"metric":"Quota Attainment","fields":["rep_id","quota","closed_revenue","period"],"fieldTypes":{"rep_id":"string","quota":"decimal","closed_revenue":"decimal","period":"date"},"source":"CRM + Comp","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  rep_id,\n  period,\n  closed_revenue / NULLIF(quota, 0) AS attainment\nFROM sales_quotas\nJOIN rep_bookings USING (rep_id, period)","description":"Rep bookings vs. quota. Reconcile monthly after commission calculations","department":"Sales"},{"metric":"Pipeline Velocity","fields":["opportunity_id","stage_history","amount","close_date"],"fieldTypes":{"opportunity_id":"string","stage_history":"json","amount":"decimal","close_date":"date"},"source":"CRM","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  COUNT(*) * win_rate * avg_deal_size\n    / NULLIF(avg_cycle_days, 0) AS pipeline_velocity\nFROM (\n  SELECT\n    AVG(CASE WHEN is_won THEN 1.0 ELSE 0 END) AS win_rate,\n    AVG(amount) AS avg_deal_size,\n    AVG(days_in_pipeline) AS avg_cycle_days\n  FROM opportunities\n)","description":"Deals × win rate × ACV ÷ cycle length. Depends on accurate stage durations","department":"Sales"},{"metric":"Sales Cycle","fields":["opportunity_id","created_date","close_date"],"fieldTypes":{"opportunity_id":"string","created_date":"date","close_date":"date"},"source":"CRM","frequency":"Per deal","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', close_date) AS period,\n  AVG(close_date - created_date) AS avg_cycle_days\nFROM opportunities\nWHERE stage IN ('Closed Won', 'Closed Lost')\nGROUP BY 1","description":"Average days from opportunity creation to close. Track per deal for accuracy","department":"Sales"},{"metric":"Activity Metrics","fields":["rep_id","activity_type","count","date"],"fieldTypes":{"rep_id":"string","activity_type":"string","count":"integer","date":"date"},"source":"CRM / Dialer","frequency":"Daily","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  rep_id,\n  DATE_TRUNC('month', date) AS period,\n  activity_type,\n  SUM(count) AS total_activities\nFROM sales_activities\nGROUP BY 1, 2, 3","description":"Calls, emails, meetings per rep. Sync from dialer and CRM daily","department":"Sales"},{"metric":"MQLs","fields":["lead_id","lead_source","mql_date","lead_score"],"fieldTypes":{"lead_id":"string","lead_source":"string","mql_date":"date","lead_score":"integer"},"source":"Marketing Automation","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', mql_date) AS period,\n  lead_source,\n  COUNT(*) AS mql_count\nFROM leads\nWHERE lead_score >= 80\nGROUP BY 1, 2","description":"Marketing-qualified leads. Sync daily from automation platform with scoring criteria","department":"Marketing"},{"metric":"Marketing CAC","fields":["marketing_spend","new_customers"],"fieldTypes":{"marketing_spend":"decimal","new_customers":"integer"},"source":"Finance + CRM","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  period,\n  SUM(marketing_spend) / NULLIF(SUM(new_customers), 0) AS marketing_cac\nFROM marketing_costs\nGROUP BY 1","description":"Marketing spend ÷ marketing-sourced customers. Lag 1 month for spend accrual","department":"Marketing"},{"metric":"Sourced Pipeline","fields":["opportunity_id","marketing_source","amount"],"fieldTypes":{"opportunity_id":"string","marketing_source":"string","amount":"decimal"},"source":"CRM + MA","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  marketing_source,\n  COUNT(*) AS opps,\n  SUM(amount) AS pipeline_value\nFROM opportunities\nWHERE marketing_source IS NOT NULL\nGROUP BY 1","description":"Pipeline created from marketing touches. Requires CRM attribution model","department":"Marketing"},{"metric":"LVR","fields":["mql_count_current","mql_count_prior"],"fieldTypes":{"mql_count_current":"integer","mql_count_prior":"integer"},"source":"Marketing Automation","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  (mql_count_current - mql_count_prior) * 1.0\n    / NULLIF(mql_count_prior, 0) AS lead_velocity_rate\nFROM monthly_mql_counts","description":"Lead velocity rate — month-over-month MQL growth. Calculate monthly from qualified counts","department":"Marketing"},{"metric":"Visitors","fields":["page_views","unique_visitors","source"],"fieldTypes":{"page_views":"integer","unique_visitors":"integer","source":"string"},"source":"Web Analytics","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', event_date) AS period,\n  source,\n  SUM(page_views) AS page_views,\n  COUNT(DISTINCT visitor_id) AS unique_visitors\nFROM web_analytics\nGROUP BY 1, 2","description":"Website traffic by source and channel. Pull from analytics daily","department":"Marketing"},{"metric":"Channel Spend","fields":["channel","spend","leads","conversions"],"fieldTypes":{"channel":"string","spend":"decimal","leads":"integer","conversions":"integer"},"source":"Ad Platforms","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  channel,\n  SUM(spend) AS total_spend,\n  SUM(leads) AS total_leads,\n  SUM(spend) / NULLIF(SUM(leads), 0) AS cost_per_lead\nFROM ad_spend\nGROUP BY 1","description":"Ad spend by channel. Sync daily from ad platforms for real-time ROAS tracking","department":"Marketing"},{"metric":"NRR","fields":["account_id","mrr_start","mrr_end","expansion","contraction","churn"],"fieldTypes":{"account_id":"string","mrr_start":"decimal","mrr_end":"decimal","expansion":"decimal","contraction":"decimal","churn":"decimal"},"source":"Billing + CRM","frequency":"Monthly","grain":"Monthly cohort","exampleQuery":"SELECT\n  cohort_month,\n  SUM(mrr_end) / SUM(mrr_start) AS nrr\nFROM account_cohorts\nGROUP BY 1","description":"Net revenue retention per cohort. Requires beginning and ending MRR per account monthly","department":"Customer Success"},{"metric":"Health Score","fields":["account_id","usage_score","engagement_score","support_score","adoption_score"],"fieldTypes":{"account_id":"string","usage_score":"decimal","engagement_score":"decimal","support_score":"decimal","adoption_score":"decimal"},"source":"CS Platform","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  account_id,\n  (usage_score * 0.3 + engagement_score * 0.3\n    + support_score * 0.2 + adoption_score * 0.2) AS health_score\nFROM health_inputs\nWHERE snapshot_week = DATE_TRUNC('week', CURRENT_DATE)","description":"Composite customer health. Refresh weekly from usage, engagement, and support signals","department":"Customer Success"},{"metric":"Renewal Rate","fields":["account_id","contract_end_date","renewed","renewal_amount"],"fieldTypes":{"account_id":"string","contract_end_date":"date","renewed":"boolean","renewal_amount":"decimal"},"source":"CRM","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  DATE_TRUNC('month', contract_end_date) AS period,\n  SUM(CASE WHEN renewed THEN renewal_amount END)\n    / SUM(renewal_amount) AS renewal_rate\nFROM renewals\nGROUP BY 1","description":"Percentage of ARR renewed on time. Track monthly against upcoming renewal dates","department":"Customer Success"},{"metric":"Expansion Revenue","fields":["account_id","expansion_mrr","upsell_type","effective_date"],"fieldTypes":{"account_id":"string","expansion_mrr":"decimal","upsell_type":"string","effective_date":"date"},"source":"Billing","frequency":"Monthly","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', effective_date) AS period,\n  upsell_type,\n  SUM(expansion_mrr) AS expansion_revenue\nFROM expansions\nGROUP BY 1, 2","description":"Upsell and cross-sell MRR from existing accounts. Sync monthly from billing","department":"Customer Success"},{"metric":"QBR Completion","fields":["account_id","qbr_date","attendees","completed"],"fieldTypes":{"account_id":"string","qbr_date":"date","attendees":"integer","completed":"boolean"},"source":"CS Platform","frequency":"Quarterly","grain":"Quarterly snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('quarter', qbr_date) AS quarter,\n  COUNT(CASE WHEN completed THEN 1 END) * 1.0\n    / COUNT(*) AS qbr_completion_rate\nFROM qbr_schedule\nGROUP BY 1","description":"Quarterly business review completion rate. Track per account quarterly","department":"Customer Success"},{"metric":"NRR / GRR","fields":["account_id","period_start","mrr_start","mrr_end","expansion_mrr","contraction_mrr","churned_mrr"],"fieldTypes":{"account_id":"string","period_start":"date","mrr_start":"decimal","mrr_end":"decimal","expansion_mrr":"decimal","contraction_mrr":"decimal","churned_mrr":"decimal"},"source":"Billing + CRM","frequency":"Monthly","grain":"Account-month","exampleQuery":"SELECT\n  DATE_TRUNC('month', period_start) AS period,\n  SUM(mrr_end) / NULLIF(SUM(mrr_start), 0) AS nrr,\n  (SUM(mrr_start) - SUM(contraction_mrr) - SUM(churned_mrr))\n    / NULLIF(SUM(mrr_start), 0) AS grr\nFROM account_mrr\nGROUP BY 1","description":"Net and gross revenue retention from account-level MRR movements. Requires beginning and ending MRR plus expansion, contraction, and churn components per account monthly","department":"Revenue Retention"},{"metric":"Cohort Revenue Retention","fields":["account_id","cohort_month","months_since_start","mrr"],"fieldTypes":{"account_id":"string","cohort_month":"date","months_since_start":"integer","mrr":"decimal"},"source":"Billing","frequency":"Monthly","grain":"Monthly cohort","exampleQuery":"WITH cohort_mrr AS (\n  SELECT\n    cohort_month,\n    months_since_start,\n    SUM(mrr) AS total_mrr\n  FROM account_cohorts\n  GROUP BY 1, 2\n)\nSELECT\n  cohort_month,\n  months_since_start,\n  total_mrr / FIRST_VALUE(total_mrr) OVER (\n    PARTITION BY cohort_month ORDER BY months_since_start\n  ) AS retention_pct\nFROM cohort_mrr\nWHERE months_since_start IN (3, 6, 9, 12)","description":"Revenue retention by signup cohort at M3/M6/M9/M12 milestones. Track monthly MRR per account from first billing month","department":"Revenue Retention"},{"metric":"Customer Health Score","fields":["account_id","snapshot_date","usage_score","engagement_score","support_score","adoption_score"],"fieldTypes":{"account_id":"string","snapshot_date":"date","usage_score":"decimal","engagement_score":"decimal","support_score":"decimal","adoption_score":"decimal"},"source":"CS Platform","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  account_id,\n  (usage_score * 0.3 + engagement_score * 0.3\n    + support_score * 0.2 + adoption_score * 0.2) AS health_score,\n  CASE WHEN (usage_score * 0.3 + engagement_score * 0.3\n    + support_score * 0.2 + adoption_score * 0.2) < 0.5\n    THEN true ELSE false END AS at_risk\nFROM health_inputs\nWHERE snapshot_date = DATE_TRUNC('week', CURRENT_DATE)","description":"Composite customer health score and at-risk flag. Refresh weekly from usage, engagement, support, and adoption signals","department":"Revenue Retention"},{"metric":"DAU/MAU","fields":["user_id","session_date","session_duration"],"fieldTypes":{"user_id":"string","session_date":"date","session_duration":"integer"},"source":"Product Analytics","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  session_date,\n  COUNT(DISTINCT user_id) AS dau,\n  COUNT(DISTINCT user_id) OVER (PARTITION BY DATE_TRUNC('month', session_date)) AS mau\nFROM sessions","description":"Daily and monthly active users. Instrument product analytics for daily event capture","department":"Product"},{"metric":"Activation","fields":["user_id","signup_date","activation_date","criteria_met"],"fieldTypes":{"user_id":"string","signup_date":"date","activation_date":"date","criteria_met":"boolean"},"source":"Product Analytics","frequency":"Daily","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', signup_date) AS cohort,\n  COUNT(CASE WHEN criteria_met THEN 1 END) * 1.0\n    / COUNT(*) AS activation_rate\nFROM user_activations\nGROUP BY 1","description":"Percentage of new users completing activation milestones within target window","department":"Product"},{"metric":"Feature Adoption","fields":["user_id","feature_id","first_use_date","usage_count"],"fieldTypes":{"user_id":"string","feature_id":"string","first_use_date":"date","usage_count":"integer"},"source":"Product Analytics","frequency":"Daily","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  feature_id,\n  COUNT(DISTINCT user_id) * 1.0\n    / (SELECT COUNT(DISTINCT user_id) FROM active_users) AS adoption_rate\nFROM feature_usage\nGROUP BY 1","description":"Feature usage rates across tiers. Track daily to inform roadmap prioritization","department":"Product"},{"metric":"PQAs","fields":["account_id","pqa_score","qualifying_events"],"fieldTypes":{"account_id":"string","pqa_score":"decimal","qualifying_events":"json"},"source":"Product Analytics","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  account_id,\n  pqa_score,\n  CASE WHEN pqa_score >= 80 THEN true ELSE false END AS is_pqa\nFROM product_scores\nWHERE score_date = CURRENT_DATE","description":"Product-qualified accounts based on usage thresholds. Evaluate daily","department":"Product"},{"metric":"Cohort Retention","fields":["user_id","cohort_date","last_active_date"],"fieldTypes":{"user_id":"string","cohort_date":"date","last_active_date":"date"},"source":"Product Analytics","frequency":"Daily","grain":"Monthly cohort","exampleQuery":"SELECT\n  DATE_TRUNC('month', cohort_date) AS cohort,\n  DATE_TRUNC('month', last_active_date) AS active_month,\n  COUNT(DISTINCT user_id) AS retained_users\nFROM users\nGROUP BY 1, 2","description":"User retention by signup cohort. Requires daily login or usage event tracking","department":"Product"},{"metric":"Uptime","fields":["service_id","status","check_timestamp","downtime_minutes"],"fieldTypes":{"service_id":"string","status":"string","check_timestamp":"timestamp","downtime_minutes":"integer"},"source":"Monitoring","frequency":"Real-time","grain":"Real-time","exampleQuery":"SELECT\n  service_id,\n  1 - SUM(downtime_minutes) / (30.0 * 24 * 60) AS uptime_pct\nFROM availability_checks\nWHERE check_timestamp >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1","description":"Service availability percentage. Monitor in real-time with synthetic checks","department":"Engineering"},{"metric":"DORA Metrics","fields":["deployment_id","commit_id","deploy_date","rollback","recovery_time"],"fieldTypes":{"deployment_id":"string","commit_id":"string","deploy_date":"timestamp","rollback":"boolean","recovery_time":"integer"},"source":"CI/CD + VCS","frequency":"Per deploy","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('week', deploy_date) AS week,\n  COUNT(*) AS deploy_frequency,\n  AVG(deploy_date - commit_date) AS lead_time,\n  AVG(CASE WHEN rollback THEN 1.0 ELSE 0 END) AS change_fail_rate,\n  AVG(CASE WHEN rollback THEN recovery_time END) AS mttr\nFROM deployments\nGROUP BY 1","description":"Deploy frequency, lead time, change failure rate, MTTR. Pull per deploy from CI/CD","department":"Engineering"},{"metric":"Incidents","fields":["incident_id","severity","detected_at","resolved_at","root_cause"],"fieldTypes":{"incident_id":"string","severity":"string","detected_at":"timestamp","resolved_at":"timestamp","root_cause":"string"},"source":"Incident Management","frequency":"Per incident","grain":"Per event","exampleQuery":"SELECT\n  severity,\n  COUNT(*) AS incident_count,\n  AVG(EXTRACT(EPOCH FROM resolved_at - detected_at) / 60) AS avg_mttr_minutes\nFROM incidents\nWHERE detected_at >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1","description":"Incident count, severity, and MTTR. Log per incident as they occur","department":"Engineering"},{"metric":"Infrastructure","fields":["resource_id","utilization","cost","customer_count"],"fieldTypes":{"resource_id":"string","utilization":"decimal","cost":"decimal","customer_count":"integer"},"source":"Cloud Provider","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', usage_date) AS period,\n  SUM(cost) AS infra_cost,\n  SUM(cost) / NULLIF(SUM(customer_count), 0) AS cost_per_customer\nFROM infrastructure\nGROUP BY 1","description":"Infrastructure cost per unit. Pull daily from cloud provider billing APIs","department":"Engineering"},{"metric":"Security","fields":["vulnerability_id","severity","discovered_at","patched_at"],"fieldTypes":{"vulnerability_id":"string","severity":"string","discovered_at":"timestamp","patched_at":"timestamp"},"source":"Security Scanner","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  severity,\n  COUNT(*) AS open_vulns,\n  AVG(CASE WHEN patched_at IS NOT NULL\n    THEN EXTRACT(EPOCH FROM patched_at - discovered_at) / 86400 END) AS avg_patch_days\nFROM vulnerabilities\nWHERE patched_at IS NULL OR patched_at >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1","description":"Vulnerability counts and remediation times. Scan daily with automated tooling","department":"Engineering"},{"metric":"CSAT","fields":["ticket_id","satisfaction_score","response_date"],"fieldTypes":{"ticket_id":"string","satisfaction_score":"integer","response_date":"date"},"source":"Help Desk","frequency":"Per ticket","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', response_date) AS period,\n  AVG(satisfaction_score) AS avg_csat,\n  COUNT(CASE WHEN satisfaction_score >= 4 THEN 1 END) * 1.0\n    / COUNT(*) AS csat_pct\nFROM ticket_surveys\nGROUP BY 1","description":"Customer satisfaction score per ticket. Collect via post-resolution survey","department":"Support"},{"metric":"FRT","fields":["ticket_id","created_at","first_response_at"],"fieldTypes":{"ticket_id":"string","created_at":"timestamp","first_response_at":"timestamp"},"source":"Help Desk","frequency":"Per ticket","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', created_at) AS period,\n  PERCENTILE_CONT(0.5) WITHIN GROUP (\n    ORDER BY EXTRACT(EPOCH FROM first_response_at - created_at) / 60\n  ) AS median_frt_minutes\nFROM tickets\nGROUP BY 1","description":"First response time. Measure per ticket from creation to first agent reply","department":"Support"},{"metric":"Resolution","fields":["ticket_id","created_at","resolved_at","priority"],"fieldTypes":{"ticket_id":"string","created_at":"timestamp","resolved_at":"timestamp","priority":"string"},"source":"Help Desk","frequency":"Per ticket","grain":"Per event","exampleQuery":"SELECT\n  priority,\n  AVG(EXTRACT(EPOCH FROM resolved_at - created_at) / 3600) AS avg_resolution_hours\nFROM tickets\nWHERE resolved_at IS NOT NULL\nGROUP BY 1","description":"Time to resolution. Measure per ticket from creation to resolved status","department":"Support"},{"metric":"FCR","fields":["ticket_id","contact_count","resolved_first_contact"],"fieldTypes":{"ticket_id":"string","contact_count":"integer","resolved_first_contact":"boolean"},"source":"Help Desk","frequency":"Per ticket","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', created_at) AS period,\n  COUNT(CASE WHEN resolved_first_contact THEN 1 END) * 1.0\n    / COUNT(*) AS fcr_rate\nFROM tickets\nGROUP BY 1","description":"First-contact resolution rate. Tag per ticket whether resolved without escalation","department":"Support"},{"metric":"Self-Service","fields":["article_id","views","deflections","date"],"fieldTypes":{"article_id":"string","views":"integer","deflections":"integer","date":"date"},"source":"Knowledge Base","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', date) AS period,\n  SUM(deflections) * 1.0 / NULLIF(SUM(views), 0) AS deflection_rate\nFROM kb_analytics\nGROUP BY 1","description":"Self-service deflection rate. Track daily from knowledge base analytics","department":"Support"},{"metric":"ARR","fields":["account_id","mrr","contract_start","contract_end"],"fieldTypes":{"account_id":"string","mrr":"decimal","contract_start":"date","contract_end":"date"},"source":"Billing","frequency":"Monthly","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('month', CURRENT_DATE) AS period,\n  SUM(mrr) * 12 AS arr\nFROM subscriptions\nWHERE contract_start <= CURRENT_DATE\n  AND contract_end > CURRENT_DATE","description":"Annual recurring revenue. Reconcile monthly from billing system subscriptions","department":"Finance"},{"metric":"Gross Margin","fields":["revenue","cogs","period"],"fieldTypes":{"revenue":"decimal","cogs":"decimal","period":"date"},"source":"ERP / Accounting","frequency":"Monthly","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  period,\n  (revenue - cogs) / NULLIF(revenue, 0) AS gross_margin\nFROM monthly_pnl","description":"Revenue minus COGS. Calculate monthly during financial close process","department":"Finance"},{"metric":"Burn & Runway","fields":["cash_balance","monthly_revenue","monthly_expenses"],"fieldTypes":{"cash_balance":"decimal","monthly_revenue":"decimal","monthly_expenses":"decimal"},"source":"ERP / Accounting","frequency":"Monthly","grain":"End-of-month snapshot","exampleQuery":"SELECT\n  period,\n  monthly_expenses - monthly_revenue AS net_burn,\n  cash_balance / NULLIF(monthly_expenses - monthly_revenue, 0) AS runway_months\nFROM monthly_financials","description":"Net cash burn and months of runway. Reconcile monthly from bank statements","department":"Finance"},{"metric":"Collections","fields":["invoice_id","invoice_date","payment_date","amount"],"fieldTypes":{"invoice_id":"string","invoice_date":"date","payment_date":"date","amount":"decimal"},"source":"ERP / Accounting","frequency":"Per invoice","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', invoice_date) AS period,\n  AVG(payment_date - invoice_date) AS dso,\n  SUM(CASE WHEN payment_date IS NOT NULL THEN amount END)\n    / SUM(amount) AS collection_rate\nFROM invoices\nGROUP BY 1","description":"Days sales outstanding and collection rates. Track per invoice through payment","department":"Finance"},{"metric":"Margins","fields":["department","expense_type","amount","period"],"fieldTypes":{"department":"string","expense_type":"string","amount":"decimal","period":"date"},"source":"ERP","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  period,\n  SUM(CASE WHEN expense_type = 'cogs' THEN amount END) / revenue AS cogs_pct,\n  SUM(CASE WHEN expense_type = 'opex' THEN amount END) / revenue AS opex_pct\nFROM expenses\nJOIN monthly_revenue USING (period)\nGROUP BY 1","description":"Operating, contribution, and net margins. Calculate monthly from P&L","department":"Finance"},{"metric":"eNPS","fields":["employee_id","score","survey_date"],"fieldTypes":{"employee_id":"string","score":"integer","survey_date":"date"},"source":"HR / Survey Tool","frequency":"Quarterly","grain":"Quarterly snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('quarter', survey_date) AS quarter,\n  (COUNT(CASE WHEN score >= 9 THEN 1 END)\n    - COUNT(CASE WHEN score <= 6 THEN 1 END)) * 100.0\n    / COUNT(*) AS enps\nFROM employee_surveys\nGROUP BY 1","description":"Employee Net Promoter Score. Survey quarterly for trending sentiment data","department":"People"},{"metric":"Retention","fields":["employee_id","hire_date","termination_date","department"],"fieldTypes":{"employee_id":"string","hire_date":"date","termination_date":"date","department":"string"},"source":"HRIS","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  DATE_TRUNC('month', termination_date) AS period,\n  COUNT(*) AS departures,\n  COUNT(*) * 12.0 / avg_headcount AS annualized_turnover\nFROM employees\nWHERE termination_date IS NOT NULL\nGROUP BY 1","description":"Voluntary and involuntary turnover. Track monthly from HRIS status changes","department":"People"},{"metric":"Recruiting","fields":["requisition_id","posted_date","filled_date","cost","source"],"fieldTypes":{"requisition_id":"string","posted_date":"date","filled_date":"date","cost":"decimal","source":"string"},"source":"ATS","frequency":"Per hire","grain":"Per event","exampleQuery":"SELECT\n  source,\n  COUNT(*) AS hires,\n  AVG(filled_date - posted_date) AS avg_time_to_fill,\n  AVG(cost) AS avg_cost_per_hire\nFROM requisitions\nWHERE filled_date IS NOT NULL\nGROUP BY 1","description":"Time-to-hire and cost-per-hire. Track per requisition through offer acceptance","department":"People"},{"metric":"Engagement","fields":["employee_id","engagement_score","survey_date","department"],"fieldTypes":{"employee_id":"string","engagement_score":"decimal","survey_date":"date","department":"string"},"source":"Survey Tool","frequency":"Quarterly","grain":"Quarterly snapshot","exampleQuery":"SELECT\n  department,\n  DATE_TRUNC('quarter', survey_date) AS quarter,\n  AVG(engagement_score) AS avg_engagement\nFROM engagement_surveys\nGROUP BY 1, 2","description":"Employee engagement index from pulse surveys. Survey quarterly minimum","department":"People"},{"metric":"Compensation","fields":["employee_id","salary","market_midpoint","department","demographics"],"fieldTypes":{"employee_id":"string","salary":"decimal","market_midpoint":"decimal","department":"string","demographics":"json"},"source":"HRIS + Comp","frequency":"Annual","grain":"Annual snapshot","exampleQuery":"SELECT\n  department,\n  AVG(salary / NULLIF(market_midpoint, 0)) AS compa_ratio,\n  STDDEV(salary / NULLIF(market_midpoint, 0)) AS pay_equity_spread\nFROM compensation\nGROUP BY 1","description":"Compensation ratio and equity analysis. Review annually against market benchmarks","department":"People"},{"metric":"TTFV","fields":["account_id","signup_date","first_value_date","value_event"],"fieldTypes":{"account_id":"string","signup_date":"date","first_value_date":"date","value_event":"string"},"source":"Product Analytics + CS","frequency":"Daily","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', signup_date) AS cohort,\n  AVG(first_value_date - signup_date) AS avg_ttfv_days\nFROM customer_onboardings\nWHERE first_value_date IS NOT NULL\nGROUP BY 1","description":"Time to first value. Track daily from signup through first activation milestone","department":"Onboarding"},{"metric":"Completion","fields":["account_id","steps_total","steps_completed","completion_date"],"fieldTypes":{"account_id":"string","steps_total":"integer","steps_completed":"integer","completion_date":"date"},"source":"Product Analytics","frequency":"Daily","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', completion_date) AS period,\n  AVG(steps_completed * 1.0 / steps_total) AS avg_completion,\n  COUNT(CASE WHEN steps_completed = steps_total THEN 1 END) * 1.0\n    / COUNT(*) AS full_completion_rate\nFROM onboardings\nGROUP BY 1","description":"Onboarding checklist completion rate. Track daily for active onboarding cohorts","department":"Onboarding"},{"metric":"Milestones","fields":["account_id","milestone","milestone_date","target_date"],"fieldTypes":{"account_id":"string","milestone":"string","milestone_date":"date","target_date":"date"},"source":"CS Platform","frequency":"Per milestone","grain":"Per event","exampleQuery":"SELECT\n  milestone,\n  COUNT(CASE WHEN milestone_date <= target_date THEN 1 END) * 1.0\n    / COUNT(*) AS on_time_rate,\n  AVG(milestone_date - target_date) AS avg_delay_days\nFROM onboarding_milestones\nGROUP BY 1","description":"Milestone completion timestamps. Log per customer as milestones are reached","department":"Onboarding"},{"metric":"Quality","fields":["account_id","nps_score","quality_score","survey_date"],"fieldTypes":{"account_id":"string","nps_score":"integer","quality_score":"decimal","survey_date":"date"},"source":"Survey Tool","frequency":"Per onboarding","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', survey_date) AS period,\n  AVG(quality_score) AS avg_quality,\n  AVG(nps_score) AS avg_nps\nFROM onboarding_surveys\nGROUP BY 1","description":"Post-onboarding satisfaction score. Survey at onboarding completion","department":"Onboarding"},{"metric":"Efficiency","fields":["onboarding_id","resource_id","hours","cost","status"],"fieldTypes":{"onboarding_id":"string","resource_id":"string","hours":"decimal","cost":"decimal","status":"string"},"source":"CS Platform","frequency":"Per onboarding","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', start_date) AS period,\n  AVG(hours) AS avg_hours_per_onboarding,\n  AVG(cost) AS avg_cost_per_onboarding\nFROM onboarding_engagements\nWHERE status = 'completed'\nGROUP BY 1","description":"CSM hours per onboarding. Track per engagement for capacity planning","department":"Onboarding"},{"metric":"Partner Revenue","fields":["deal_id","partner_id","amount","close_date","partner_sourced"],"fieldTypes":{"deal_id":"string","partner_id":"string","amount":"decimal","close_date":"date","partner_sourced":"boolean"},"source":"CRM","frequency":"Monthly","grain":"Per event, aggregate monthly","exampleQuery":"SELECT\n  DATE_TRUNC('month', close_date) AS period,\n  SUM(CASE WHEN partner_sourced THEN amount END) AS sourced_revenue,\n  SUM(amount) AS influenced_revenue\nFROM partner_deals\nGROUP BY 1","description":"Partner-sourced and partner-influenced revenue. Attribute monthly from CRM deals","department":"Partnerships"},{"metric":"Active Partners","fields":["partner_id","status","last_activity_date","tier"],"fieldTypes":{"partner_id":"string","status":"string","last_activity_date":"date","tier":"string"},"source":"Partner Portal","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  tier,\n  COUNT(*) AS active_partners\nFROM partners\nWHERE status = 'active'\n  AND last_activity_date >= CURRENT_DATE - INTERVAL '90 days'\nGROUP BY 1","description":"Active partner count by tier. Reconcile monthly from partner portal activity","department":"Partnerships"},{"metric":"Deal Registrations","fields":["registration_id","partner_id","opportunity_id","status","amount"],"fieldTypes":{"registration_id":"string","partner_id":"string","opportunity_id":"string","status":"string","amount":"decimal"},"source":"PRM","frequency":"Per registration","grain":"Per event","exampleQuery":"SELECT\n  status,\n  COUNT(*) AS registrations,\n  SUM(amount) AS total_value\nFROM deal_registrations\nWHERE created_at >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1","description":"Deal registrations submitted and approved. Track per registration in PRM","department":"Partnerships"},{"metric":"Training","fields":["partner_id","course_id","completion_date","certification_status"],"fieldTypes":{"partner_id":"string","course_id":"string","completion_date":"date","certification_status":"string"},"source":"LMS","frequency":"Per completion","grain":"Per event","exampleQuery":"SELECT\n  certification_status,\n  COUNT(DISTINCT partner_id) AS partners,\n  COUNT(*) AS completions\nFROM partner_training\nGROUP BY 1","description":"Partner certification and training completion. Track per course in LMS","department":"Partnerships"},{"metric":"Partner Satisfaction","fields":["partner_id","score","survey_date"],"fieldTypes":{"partner_id":"string","score":"integer","survey_date":"date"},"source":"Survey Tool","frequency":"Quarterly","grain":"Quarterly snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('quarter', survey_date) AS quarter,\n  AVG(score) AS avg_satisfaction,\n  (COUNT(CASE WHEN score >= 9 THEN 1 END)\n    - COUNT(CASE WHEN score <= 6 THEN 1 END)) * 100.0\n    / COUNT(*) AS partner_nps\nFROM partner_surveys\nGROUP BY 1","description":"Partner NPS or satisfaction survey. Collect quarterly for relationship health","department":"Partnerships"},{"metric":"Utilization","fields":["consultant_id","billable_hours","available_hours","period"],"fieldTypes":{"consultant_id":"string","billable_hours":"decimal","available_hours":"decimal","period":"date"},"source":"PSA / Time Tracking","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  DATE_TRUNC('week', period) AS week,\n  SUM(billable_hours) / NULLIF(SUM(available_hours), 0) AS utilization_rate\nFROM time_entries\nGROUP BY 1","description":"Billable hours ÷ available hours. Track weekly for staffing and margin management","department":"Professional Services"},{"metric":"Project Margin","fields":["project_id","revenue","costs","hours_budgeted","hours_actual"],"fieldTypes":{"project_id":"string","revenue":"decimal","costs":"decimal","hours_budgeted":"decimal","hours_actual":"decimal"},"source":"PSA","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  project_id,\n  (revenue - costs) / NULLIF(revenue, 0) AS margin,\n  hours_actual / NULLIF(hours_budgeted, 0) AS budget_utilization\nFROM projects\nWHERE status = 'active'","description":"Revenue minus delivery cost per project. Calculate monthly from PSA time entries","department":"Professional Services"},{"metric":"Delivery","fields":["project_id","planned_date","actual_date","milestones_completed"],"fieldTypes":{"project_id":"string","planned_date":"date","actual_date":"date","milestones_completed":"integer"},"source":"PSA","frequency":"Per milestone","grain":"Per event","exampleQuery":"SELECT\n  COUNT(CASE WHEN actual_date <= planned_date THEN 1 END) * 1.0\n    / COUNT(*) AS on_time_rate,\n  AVG(actual_date - planned_date) AS avg_delay_days\nFROM project_milestones\nWHERE actual_date IS NOT NULL","description":"On-time and on-budget delivery rates. Track per project milestone","department":"Professional Services"},{"metric":"Team","fields":["consultant_id","project_id","hours","revenue","status"],"fieldTypes":{"consultant_id":"string","project_id":"string","hours":"decimal","revenue":"decimal","status":"string"},"source":"PSA","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  consultant_id,\n  COUNT(DISTINCT project_id) AS active_projects,\n  SUM(hours) AS total_hours,\n  SUM(revenue) AS total_revenue\nFROM assignments\nWHERE status = 'active'\nGROUP BY 1","description":"Team allocation and availability. Review weekly for resource planning","department":"Professional Services"},{"metric":"CSAT","fields":["project_id","satisfaction_score","survey_date"],"fieldTypes":{"project_id":"string","satisfaction_score":"integer","survey_date":"date"},"source":"Survey Tool","frequency":"Per project","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('quarter', survey_date) AS quarter,\n  AVG(satisfaction_score) AS avg_csat,\n  COUNT(CASE WHEN satisfaction_score >= 4 THEN 1 END) * 1.0\n    / COUNT(*) AS satisfaction_rate\nFROM project_surveys\nGROUP BY 1","description":"Post-project customer satisfaction. Survey at project completion","department":"Professional Services"},{"metric":"Forecast Accuracy","fields":["period","forecasted_revenue","actual_revenue","forecast_date"],"fieldTypes":{"period":"date","forecasted_revenue":"decimal","actual_revenue":"decimal","forecast_date":"date"},"source":"CRM + Finance","frequency":"Monthly","grain":"Monthly aggregate","exampleQuery":"SELECT\n  period,\n  1 - ABS(actual_revenue - forecasted_revenue)\n    / NULLIF(actual_revenue, 0) AS forecast_accuracy\nFROM revenue_forecasts\nWHERE forecast_date = (SELECT MAX(forecast_date) FROM revenue_forecasts f2 WHERE f2.period = revenue_forecasts.period)","description":"Forecast vs. actual revenue. Compare monthly to improve prediction accuracy","department":"RevOps"},{"metric":"Pipeline Hygiene","fields":["opportunity_id","required_fields_complete","last_updated","stage_age"],"fieldTypes":{"opportunity_id":"string","required_fields_complete":"boolean","last_updated":"timestamp","stage_age":"integer"},"source":"CRM","frequency":"Weekly","grain":"Weekly snapshot","exampleQuery":"SELECT\n  COUNT(CASE WHEN required_fields_complete THEN 1 END) * 1.0\n    / COUNT(*) AS completeness_score,\n  AVG(stage_age) AS avg_stage_age_days,\n  COUNT(CASE WHEN last_updated < CURRENT_DATE - INTERVAL '14 days' THEN 1 END) AS stale_deals\nFROM pipeline_hygiene","description":"Pipeline data quality — stage age, missing fields, stale deals. Audit weekly","department":"RevOps"},{"metric":"Quote-to-Cash","fields":["quote_id","order_id","invoice_id","dates","amounts","status"],"fieldTypes":{"quote_id":"string","order_id":"string","invoice_id":"string","dates":"json","amounts":"json","status":"string"},"source":"CPQ + Billing","frequency":"Per transaction","grain":"Per event","exampleQuery":"SELECT\n  status,\n  COUNT(*) AS transactions,\n  AVG(order_date - quote_date) AS avg_quote_to_order_days,\n  AVG(invoice_date - order_date) AS avg_order_to_invoice_days\nFROM quote_to_cash\nGROUP BY 1","description":"Quote-to-cash cycle time and conversion. Track per transaction end-to-end","department":"RevOps"},{"metric":"Collections","fields":["invoice_id","invoice_date","payment_date","amount","credit_memos"],"fieldTypes":{"invoice_id":"string","invoice_date":"date","payment_date":"date","amount":"decimal","credit_memos":"decimal"},"source":"ERP","frequency":"Per invoice","grain":"Per event","exampleQuery":"SELECT\n  DATE_TRUNC('month', invoice_date) AS period,\n  AVG(payment_date - invoice_date) AS dso,\n  SUM(amount - COALESCE(credit_memos, 0)) AS net_collected\nFROM invoices\nGROUP BY 1","description":"Invoice collection rates and DSO. Track per invoice through payment receipt","department":"RevOps"},{"metric":"Data Quality","fields":["object","field","completeness_pct","sync_status","last_sync"],"fieldTypes":{"object":"string","field":"string","completeness_pct":"decimal","sync_status":"string","last_sync":"timestamp"},"source":"CRM + Integrations","frequency":"Daily","grain":"Daily snapshot","exampleQuery":"SELECT\n  object,\n  AVG(completeness_pct) AS avg_completeness,\n  COUNT(CASE WHEN sync_status = 'error' THEN 1 END) AS sync_errors\nFROM data_quality_checks\nWHERE last_sync >= CURRENT_DATE - INTERVAL '1 day'\nGROUP BY 1","description":"CRM field completeness and integration sync accuracy. Monitor daily","department":"RevOps"}],"ontology":{"entities":[{"id":"customer","label":"Customer","aliases":["Account","Organization"],"definition":"A distinct billing entity with one or more subscriptions. The \"who\" of your business relationship.","level":"billing"},{"id":"subscription","label":"Subscription","aliases":["Contract","Agreement"],"definition":"A billable agreement between a customer and your product, with defined terms, pricing, and status. The \"what and when\" of the relationship.","level":"billing"},{"id":"license","label":"License","aliases":["Entitlement","Access","Quota"],"definition":"A specific capability, quantity, or configuration granted by a subscription. The \"how much\" of the relationship.","level":"billing"},{"id":"lead","label":"Lead","aliases":["Prospect","Contact"],"definition":"A person or company that has shown interest but has not been qualified as a sales opportunity.","level":"acquisition"},{"id":"opportunity","label":"Opportunity","aliases":["Deal","Pipeline Item"],"definition":"A qualified sales prospect with an estimated value, stage, and expected close date.","level":"acquisition"},{"id":"user","label":"User","aliases":["Product User","End User"],"definition":"An individual who uses the product. In B2B, one Customer may have many Users. Usage metrics are measured at this level.","level":"engagement"},{"id":"ticket","label":"Ticket","aliases":["Support Case","Issue"],"definition":"A discrete support interaction initiated by a customer or user, tracked to resolution.","level":"support"},{"id":"employee","label":"Employee","aliases":["Team Member","Headcount"],"definition":"An internal team member. People metrics and efficiency ratios (revenue per employee) are measured at this level.","level":"internal"},{"id":"invoice","label":"Invoice","aliases":["Transaction","Billing Document"],"definition":"A billing document representing money owed or collected. Cash flow and collections metrics are measured at this level.","level":"financial"},{"id":"partner","label":"Partner","aliases":["Channel Partner","Reseller"],"definition":"An external organization that sources, influences, or resells deals. Partner metrics are measured at this level.","level":"channel"},{"id":"project","label":"Project","aliases":["Engagement","SOW"],"definition":"A professional services engagement with defined scope, timeline, and deliverables.","level":"services"},{"id":"plan","label":"Plan","aliases":["Tier","Pricing Plan","Package"],"definition":"A pricing tier offered to customers (e.g. Starter, Pro, Enterprise). Each plan defines a price point and a set of included products and quotas.","level":"billing"},{"id":"product","label":"Product","aliases":["Module","SKU","Feature Bundle"],"definition":"A distinct purchasable unit within the company's offering (e.g. Analytics Module, Automation Module). A subscription may include multiple products.","level":"billing"},{"id":"campaign","label":"Campaign","aliases":["Marketing Campaign","Initiative"],"definition":"A marketing initiative with defined objectives, channels, budget and dates. Campaigns source leads and influence opportunities.","level":"acquisition"},{"id":"contact","label":"Contact","aliases":["Stakeholder","Decision Maker","Champion"],"definition":"A named individual at a customer account involved in the buying or expansion process. Distinct from User (product user) and Lead (pre-qualification).","level":"acquisition"}],"entityMappings":{"customer":["nps","ltv","ltv_cac_ratio","cac","cac_payback","marketing_cac","health_score","at_risk_rate","renewal_rate","logo_churn_rate","expansion_rate","qbr_completion"],"subscription":["mrr","arr","arpa","new_mrr","expansion_mrr","churned_mrr","contraction_mrr","net_new_mrr","nrr","grr","revenue_churn_rate","mrr_growth_rate","gross_margin","rule_of_40","operating_margin","fcf","magic_number"],"lead":["mqls","sqls","lvr","cpl"],"opportunity":["pipeline_value","pipeline_coverage","win_rate","acv","sales_cycle","quota_attainment","marketing_sourced_pipeline","forecast_accuracy"],"user":["dau_mau","feature_adoption","activation_rate","pqas","ttfv","onboarding_completion"],"ticket":["ticket_volume","frt","self_service_rate","csat"],"employee":["employee_turnover","enps","revenue_per_employee"],"invoice":["dso","burn_rate"],"partner":["partner_sourced_revenue"],"license":[],"project":[],"plan":[],"product":[],"campaign":[],"contact":[]},"concepts":[{"id":"revenue","label":"Revenue (GAAP)","definition":"Recognized revenue under accrual accounting. The financial outcome of delivering on subscription obligations.","provenance":"definitions.md — Revenue Recognition section"},{"id":"bookings","label":"Bookings","definition":"The total value of new contracts signed in a period. A forward-looking commitment that converts to revenue over the contract term.","provenance":"definitions.md — Bookings vs. Revenue distinction"},{"id":"cogs","label":"COGS","definition":"Cost of Goods Sold — direct costs attributable to delivering the product (hosting, support, onboarding). The denominator of Gross Margin.","provenance":"definitions.md — Gross Margin formula"},{"id":"cohort","label":"Cohort","definition":"A time-bound grouping of customers by acquisition period. Used for retention and expansion analysis to isolate vintage effects.","provenance":"definitions.md — Cohort-based retention methodology"},{"id":"pipeline","label":"Pipeline","definition":"The aggregate weighted value of active opportunities. Represents potential future bookings at various probability stages.","provenance":"definitions.md — Pipeline metrics"},{"id":"segment","label":"Segment","definition":"A classification of customers by size, vertical or fit (e.g. SMB, Mid-Market, Enterprise). Used for cohort analysis and benchmark comparison.","provenance":"Common GTM segmentation practice"},{"id":"tcv","label":"TCV (Total Contract Value)","definition":"The total value of a contract over its full term, including one-time fees and multi-year commitments. Distinct from Bookings (period-attributable) and ACV (annualized).","provenance":"definitions.md — Bookings vs ACV vs TCV"}],"entityRelationships":{"description":"Entity-to-entity and entity-to-concept edges that model the SaaS business structure. These complement the metric-to-entity MEASURES edges to form a complete digital twin.","edgeTypeClassification":{"structural":["OWNS","GRANTS","PARENT_OF","PRICED_BY"],"lifecycle":["CONVERTS_TO"],"behavioral":["SUBMITS","ENGAGES_VIA"],"assignment":["MANAGES","SOURCES","SERVES","REPRESENTED_BY"],"generative":["GENERATES","PRODUCES","CONTRIBUTES_TO","INCURS","BELONGS_TO"]},"edges":[{"from":"customer","to":"subscription","type":"OWNS","cardinality":"1:N","description":"A customer holds one or more subscriptions. Hierarchy Principle 1: customers own subscriptions, not the reverse.","provenance":"Schema.org owns, Zuora/Stripe Account→Subscription"},{"from":"subscription","to":"license","type":"GRANTS","cardinality":"1:N","description":"A subscription grants one or more licenses (seats, entitlements, feature access). Hierarchy Principle 3: licenses are derived from subscriptions.","provenance":"Zuora Rate Plan→Entitlement, Stripe SubscriptionItem→Price"},{"from":"customer","to":"user","type":"ENGAGES_VIA","cardinality":"1:N","description":"In B2B SaaS, one customer organization has many product users. Usage and engagement metrics are measured at the user level.","provenance":"SaaS-native concept (B2B multi-user model)"},{"from":"customer","to":"ticket","type":"SUBMITS","cardinality":"1:N","description":"Customers open support tickets. Support volume and resolution metrics are measured at the ticket level.","provenance":"Salesforce Account→Case, HubSpot Company→Ticket"},{"from":"lead","to":"opportunity","type":"CONVERTS_TO","cardinality":"1:1","description":"A qualified lead converts into a sales opportunity. This is the MQL→SQL transition in the acquisition funnel.","provenance":"Salesforce Lead Conversion process"},{"from":"opportunity","to":"customer","type":"CONVERTS_TO","cardinality":"1:1","description":"A won opportunity creates a new customer (closed-won). This is the SQL→Customer transition.","provenance":"Salesforce Opportunity→Account (closed-won)"},{"from":"partner","to":"opportunity","type":"SOURCES","cardinality":"1:N","description":"A channel partner sources or influences deal opportunities. Partner-sourced vs. direct pipeline is a key attribution metric.","provenance":"Salesforce Partner object→Opportunity"},{"from":"employee","to":"customer","type":"MANAGES","cardinality":"1:N","description":"CSMs and account managers are assigned to customer accounts. Employee efficiency and coverage ratios are measured through this relationship.","provenance":"Salesforce OwnerId pattern, CS Platform assignment"},{"from":"project","to":"customer","type":"SERVES","cardinality":"N:1","description":"Professional services projects are delivered to customers. Project margins and utilization are measured through this relationship.","provenance":"PSA (Professional Services Automation) models"},{"from":"subscription","to":"revenue","type":"GENERATES","cardinality":"N:1","description":"Subscriptions generate recognized revenue over their term as obligations are fulfilled.","provenance":"REA stockflow (Economic Event→Economic Resource)"},{"from":"subscription","to":"invoice","type":"GENERATES","cardinality":"1:N","description":"Subscriptions generate periodic invoices according to their billing schedule.","provenance":"Stripe Subscription→Invoice, Zuora Subscription→Invoice"},{"from":"opportunity","to":"bookings","type":"PRODUCES","cardinality":"N:1","description":"Closed-won opportunities produce bookings. Bookings convert to revenue over the contract term.","provenance":"CRM reporting — Opportunity Amount at close"},{"from":"opportunity","to":"pipeline","type":"CONTRIBUTES_TO","cardinality":"N:1","description":"Active opportunities contribute to pipeline value, weighted by stage probability.","provenance":"Salesforce Pipeline reporting"},{"from":"subscription","to":"cogs","type":"INCURS","cardinality":"N:1","description":"Delivering on subscriptions incurs costs (hosting, support, onboarding) that form the COGS basis for Gross Margin.","provenance":"REA duality — give-event paired with take-event"},{"from":"customer","to":"cohort","type":"BELONGS_TO","cardinality":"N:1","description":"Each customer belongs to an acquisition cohort based on their start date. Cohort analysis isolates vintage effects in retention and expansion.","provenance":"SaaS cohort analysis methodology"},{"from":"customer","to":"customer","type":"PARENT_OF","cardinality":"1:N","description":"Self-referential edge for account hierarchy. Global enterprises with subsidiaries roll up to a parent customer. Used for global account ARR and consolidated reporting.","provenance":"Salesforce Parent Account, Zuora Account hierarchy"},{"from":"subscription","to":"plan","type":"PRICED_BY","cardinality":"N:1","description":"A subscription is priced according to a plan. Many subscriptions can share the same plan. Enables tier-mix analysis, upgrade-path metrics and packaging health.","provenance":"Stripe Subscription→Price, Zuora Rate Plan, Chargebee Plan"},{"from":"license","to":"product","type":"GRANTS","cardinality":"N:M","description":"A license grants access to one or more products (modules). A subscription can include multiple products, each governed by its own license entitlement.","provenance":"Auth0 entitlements, Stripe Entitlements API, custom IAM"},{"from":"customer","to":"contact","type":"REPRESENTED_BY","cardinality":"1:N","description":"A customer account is represented by named individuals (champions, decision makers, executive sponsors). Enables buying-center coverage metrics and stakeholder mapping.","provenance":"Salesforce Account→Contact, HubSpot Company→Contact"},{"from":"campaign","to":"lead","type":"SOURCES","cardinality":"1:N","description":"A marketing campaign sources leads. Captures attribution beyond the free-text source field. Enables campaign ROI, channel-mix, and sourced-pipeline metrics.","provenance":"Salesforce Campaign→Lead, HubSpot Campaign attribution"},{"from":"customer","to":"segment","type":"BELONGS_TO","cardinality":"N:1","description":"Each customer belongs to a segment classification (SMB, Mid-Market, Enterprise) based on size, ARR or fit. Segment is the foundational lens for cohort and benchmark comparisons.","provenance":"Common GTM segmentation practice"},{"from":"opportunity","to":"tcv","type":"PRODUCES","cardinality":"N:1","description":"Closed-won opportunities produce TCV (Total Contract Value). Distinct from Bookings (period-attributable) and ACV (annualized): TCV captures the full multi-year commitment value.","provenance":"Salesforce Opportunity Amount across full term, CFO reporting"}]},"structuredFormulas":{"description":"Decomposed formula references for graph metrics. Each entry maps a metric node ID to its formula inputs (other metrics or raw fields) so an agent can walk the dependency tree.","arr":{"expression":"MRR × 12","inputs":[{"ref":"mrr","role":"base"}]},"mrr":{"expression":"Sum of monthly subscription values for all active customers","inputs":[],"fields":["mrr","subscription_id","status"]},"arpa":{"expression":"MRR / Active Customers","inputs":[{"ref":"mrr","role":"numerator"}],"fields":["account_id","mrr"]},"mrr_growth_rate":{"expression":"(MRR_current - MRR_prior) / MRR_prior × 100","inputs":[{"ref":"mrr","role":"base"}]},"new_mrr":{"expression":"Sum of first-month MRR from new customers","inputs":[],"fields":["mrr","account_id","start_date"]},"expansion_mrr":{"expression":"Sum of MRR increase from existing customers","inputs":[],"fields":["mrr","account_id","mrr_change","change_nature"]},"churned_mrr":{"expression":"Sum of MRR from churned customers","inputs":[],"fields":["mrr","account_id","churn_date"]},"contraction_mrr":{"expression":"Sum of MRR decrease from retained customers","inputs":[],"fields":["mrr","account_id","mrr_change","change_nature"]},"net_new_mrr":{"expression":"New MRR + Expansion MRR - Churned MRR - Contraction MRR","inputs":[{"ref":"new_mrr","role":"addend"},{"ref":"expansion_mrr","role":"addend"},{"ref":"churned_mrr","role":"subtrahend"},{"ref":"contraction_mrr","role":"subtrahend"}]},"nrr":{"expression":"(Beginning MRR + Expansion - Contraction - Churn) / Beginning MRR × 100","inputs":[{"ref":"expansion_mrr","role":"addend"},{"ref":"churned_mrr","role":"subtrahend"},{"ref":"contraction_mrr","role":"subtrahend"}],"fields":["account_id","mrr_start","mrr_end","change_nature"],"adjustedVariant":"Filter to change_nature = 'permanent' for Adjusted NRR (excludes temporary movements)"},"grr":{"expression":"Sum of min(Beginning MRR, Current MRR) / Beginning MRR × 100","inputs":[{"ref":"churned_mrr","role":"subtrahend"},{"ref":"contraction_mrr","role":"subtrahend"}],"fields":["account_id","mrr_start","mrr_end","change_nature"],"adjustedVariant":"Filter to change_nature = 'permanent' for Adjusted GRR (excludes temporary movements)"},"gross_margin":{"expression":"(Revenue - COGS) / Revenue × 100","inputs":[],"fields":["revenue","cogs"]},"rule_of_40":{"expression":"ARR Growth Rate (YoY) + EBITDA Margin","inputs":[{"ref":"mrr_growth_rate","role":"addend"},{"ref":"operating_margin","role":"addend"}]},"logo_churn_rate":{"expression":"Customers lost / Customers at start × 100","inputs":[],"fields":["account_id","churn_date","status"]},"revenue_churn_rate":{"expression":"(Churned MRR + Contraction MRR) / Beginning MRR × 100","inputs":[{"ref":"churned_mrr","role":"numerator"},{"ref":"contraction_mrr","role":"numerator"}],"fields":["mrr_start","change_nature"]},"nps":{"expression":"% Promoters - % Detractors","inputs":[],"fields":["nps_score","account_id"]},"cac":{"expression":"(Sales + Marketing spend) / New customers acquired","inputs":[{"ref":"marketing_cac","role":"component"}],"fields":["sales_marketing_spend","new_customers"]},"ltv":{"expression":"(ARPA × Gross Margin) / Revenue Churn Rate","inputs":[{"ref":"arpa","role":"numerator"},{"ref":"gross_margin","role":"numerator"},{"ref":"revenue_churn_rate","role":"denominator"}]},"ltv_cac_ratio":{"expression":"LTV / CAC","inputs":[{"ref":"ltv","role":"numerator"},{"ref":"cac","role":"denominator"}]},"cac_payback":{"expression":"CAC / (ARPA × Gross Margin)","inputs":[{"ref":"cac","role":"numerator"},{"ref":"arpa","role":"denominator"},{"ref":"gross_margin","role":"denominator"}]},"pipeline_value":{"expression":"Sum of (Deal value × Stage probability)","inputs":[{"ref":"marketing_sourced_pipeline","role":"component"}],"fields":["deal_value","stage","probability"]},"pipeline_coverage":{"expression":"Pipeline Value / Quota","inputs":[{"ref":"pipeline_value","role":"numerator"}],"fields":["quota"]},"win_rate":{"expression":"Deals Won / (Deals Won + Deals Lost) × 100","inputs":[],"fields":["deal_id","stage","close_date"]},"acv":{"expression":"(Total Contract Value - One-time fees) / Contract years","inputs":[],"fields":["contract_value","contract_term","one_time_fees"]},"quota_attainment":{"expression":"Revenue Closed / Quota × 100","inputs":[],"fields":["revenue_closed","quota"]},"sales_cycle":{"expression":"Median of (Close date - Opportunity created date)","inputs":[],"fields":["created_date","close_date","deal_id"]},"mqls":{"expression":"Leads meeting MQL criteria in period","inputs":[],"fields":["lead_id","mql_date","lead_score"]},"sqls":{"expression":"MQLs accepted by sales in period","inputs":[{"ref":"mqls","role":"base"}],"fields":["lead_id","sql_date"]},"lvr":{"expression":"(Qualified leads this month - last month) / last month × 100","inputs":[{"ref":"mqls","role":"base"}]},"marketing_cac":{"expression":"Marketing spend / New customers acquired","inputs":[{"ref":"cpl","role":"component"}],"fields":["marketing_spend","new_customers"]},"cpl":{"expression":"Marketing spend / Leads generated","inputs":[],"fields":["marketing_spend","leads_generated"]},"marketing_sourced_pipeline":{"expression":"Sum of opportunity value where first touch = marketing","inputs":[],"fields":["deal_value","attribution_source"]},"health_score":{"expression":"Weighted average of health indicators","inputs":[{"ref":"feature_adoption","role":"component"},{"ref":"dau_mau","role":"component"},{"ref":"qbr_completion","role":"component"}],"fields":["usage_score","engagement_score","support_score"]},"expansion_rate":{"expression":"Expansion MRR / Beginning MRR × 100","inputs":[{"ref":"expansion_mrr","role":"numerator"}],"fields":["mrr_start","change_nature"]},"renewal_rate":{"expression":"Contracts renewed / Contracts up for renewal × 100","inputs":[],"fields":["contract_id","renewal_date","renewed"]},"at_risk_rate":{"expression":"Customers with health < 40 / Total scored customers × 100","inputs":[{"ref":"health_score","role":"base"}],"fields":["account_id","health_score"]},"qbr_completion":{"expression":"QBRs completed / QBRs scheduled × 100","inputs":[],"fields":["account_id","qbr_date","qbr_status"]},"csat":{"expression":"Positive responses / Total responses × 100","inputs":[],"fields":["ticket_id","satisfaction_rating"]},"frt":{"expression":"Median of (First response - Ticket created)","inputs":[],"fields":["ticket_id","created_at","first_response_at"]},"ticket_volume":{"expression":"Count of tickets created in period","inputs":[],"fields":["ticket_id","created_at"]},"self_service_rate":{"expression":"Self-service resolutions / (Self-service + Tickets) × 100","inputs":[{"ref":"ticket_volume","role":"denominator"}],"fields":["resolution_type"]},"ttfv":{"expression":"Median of (First value milestone - Contract start)","inputs":[],"fields":["account_id","start_date","value_event"]},"onboarding_completion":{"expression":"Customers completing onboarding / Customers starting × 100","inputs":[],"fields":["account_id","onboarding_status"]},"activation_rate":{"expression":"Active customers post-onboarding / Customers completing onboarding × 100","inputs":[{"ref":"onboarding_completion","role":"base"}],"fields":["account_id","activation_event"]},"dau_mau":{"expression":"Daily Active Users / Monthly Active Users","inputs":[],"fields":["user_id","event_date"]},"feature_adoption":{"expression":"Features in use / Total features × 100","inputs":[],"fields":["user_id","feature_id","usage_count"]},"pqas":{"expression":"Accounts meeting product engagement threshold","inputs":[{"ref":"feature_adoption","role":"base"}],"fields":["account_id","engagement_score"]},"uptime":{"expression":"(Total time - Downtime) / Total time × 100","inputs":[],"fields":["downtime_minutes","period"]},"deployment_frequency":{"expression":"Deployments / Time period","inputs":[],"fields":["deploy_id","deploy_date"]},"mttr":{"expression":"Mean of (Resolution time - Incident start)","inputs":[],"fields":["incident_id","started_at","resolved_at"]},"operating_margin":{"expression":"Operating Income / Revenue × 100","inputs":[{"ref":"gross_margin","role":"upstream"}],"fields":["operating_income","revenue"]},"fcf":{"expression":"Operating cash flow - Capital expenditures","inputs":[{"ref":"operating_margin","role":"upstream"},{"ref":"gross_margin","role":"upstream"}],"fields":["operating_cash_flow","capex"]},"burn_rate":{"expression":"(Cash start - Cash end) / Months in period","inputs":[],"fields":["cash_balance","period"]},"revenue_per_employee":{"expression":"ARR / Total headcount","inputs":[{"ref":"arr","role":"numerator"}],"fields":["headcount"]},"magic_number":{"expression":"QoQ ARR growth / Prior quarter S&M spend","inputs":[{"ref":"arr","role":"base"},{"ref":"new_mrr","role":"component"}],"fields":["sales_marketing_spend"]},"dso":{"expression":"(Accounts Receivable / Revenue) × Days in period","inputs":[],"fields":["accounts_receivable","revenue","period"]},"employee_turnover":{"expression":"Employees departed / Average headcount × 100","inputs":[],"fields":["employee_id","termination_date","headcount"]},"enps":{"expression":"% Promoters (9-10) - % Detractors (0-6)","inputs":[],"fields":["employee_id","enps_score"]},"forecast_accuracy":{"expression":"1 - |Forecasted - Actual| / Actual × 100","inputs":[],"fields":["forecasted_value","actual_value","period"]},"partner_sourced_revenue":{"expression":"Sum of closed revenue where partner = source","inputs":[],"fields":["deal_id","revenue","partner_id","attribution_source"]}},"accessControl":{"description":"Recommended sensitivity and access scope per metric. These are GUIDANCE, not enforcement. Actual policies should be expressed in Cedar, OPA, or warehouse RLS. See /v1/governance for the framework.","sensitivityTiers":{"public":"Shareable externally with no restriction (rare for internal SaaS metrics)","internal":"Shareable across the organization. Default for most operational metrics","confidential":"Cross-functional but sensitive. Typically restricted to managers and above","restricted":"Highly sensitive. Executive and finance-leadership only by default"},"accessScopes":{"unscoped":"Same value for everyone with access (e.g. company-wide ARR)","department-scoped":"Filtered by the viewer's department context","owner-scoped":"Visible only for records the viewer owns or manages (individual, team, territory, book or segment — interpretation lives in the adapter)"},"classifications":{"arr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"arpa":{"sensitivityTier":"confidential","accessScope":"unscoped"},"mrr_growth_rate":{"sensitivityTier":"confidential","accessScope":"unscoped"},"new_mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"expansion_mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"churned_mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"contraction_mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"net_new_mrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"nrr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"grr":{"sensitivityTier":"confidential","accessScope":"unscoped"},"gross_margin":{"sensitivityTier":"confidential","accessScope":"unscoped"},"rule_of_40":{"sensitivityTier":"restricted","accessScope":"unscoped"},"logo_churn_rate":{"sensitivityTier":"confidential","accessScope":"unscoped"},"revenue_churn_rate":{"sensitivityTier":"confidential","accessScope":"unscoped"},"nps":{"sensitivityTier":"internal","accessScope":"unscoped"},"cac":{"sensitivityTier":"confidential","accessScope":"unscoped"},"ltv":{"sensitivityTier":"confidential","accessScope":"unscoped"},"ltv_cac_ratio":{"sensitivityTier":"confidential","accessScope":"unscoped"},"cac_payback":{"sensitivityTier":"confidential","accessScope":"unscoped"},"pipeline_value":{"sensitivityTier":"confidential","accessScope":"owner-scoped"},"pipeline_coverage":{"sensitivityTier":"confidential","accessScope":"owner-scoped"},"win_rate":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"acv":{"sensitivityTier":"confidential","accessScope":"owner-scoped"},"quota_attainment":{"sensitivityTier":"confidential","accessScope":"owner-scoped"},"sales_cycle":{"sensitivityTier":"internal","accessScope":"department-scoped"},"forecast_accuracy":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"mqls":{"sensitivityTier":"internal","accessScope":"unscoped"},"sqls":{"sensitivityTier":"internal","accessScope":"unscoped"},"lvr":{"sensitivityTier":"internal","accessScope":"unscoped"},"marketing_cac":{"sensitivityTier":"confidential","accessScope":"unscoped"},"cpl":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"marketing_sourced_pipeline":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"health_score":{"sensitivityTier":"internal","accessScope":"owner-scoped"},"expansion_rate":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"renewal_rate":{"sensitivityTier":"confidential","accessScope":"department-scoped"},"at_risk_rate":{"sensitivityTier":"internal","accessScope":"owner-scoped"},"qbr_completion":{"sensitivityTier":"internal","accessScope":"department-scoped"},"csat":{"sensitivityTier":"internal","accessScope":"department-scoped"},"frt":{"sensitivityTier":"internal","accessScope":"department-scoped"},"ticket_volume":{"sensitivityTier":"internal","accessScope":"department-scoped"},"self_service_rate":{"sensitivityTier":"internal","accessScope":"unscoped"},"ttfv":{"sensitivityTier":"internal","accessScope":"department-scoped"},"onboarding_completion":{"sensitivityTier":"internal","accessScope":"department-scoped"},"activation_rate":{"sensitivityTier":"internal","accessScope":"unscoped"},"dau_mau":{"sensitivityTier":"internal","accessScope":"unscoped"},"feature_adoption":{"sensitivityTier":"internal","accessScope":"unscoped"},"pqas":{"sensitivityTier":"internal","accessScope":"department-scoped"},"uptime":{"sensitivityTier":"internal","accessScope":"unscoped"},"deployment_frequency":{"sensitivityTier":"internal","accessScope":"department-scoped"},"mttr":{"sensitivityTier":"internal","accessScope":"department-scoped"},"operating_margin":{"sensitivityTier":"restricted","accessScope":"unscoped"},"fcf":{"sensitivityTier":"restricted","accessScope":"unscoped"},"burn_rate":{"sensitivityTier":"restricted","accessScope":"unscoped"},"revenue_per_employee":{"sensitivityTier":"restricted","accessScope":"unscoped"},"magic_number":{"sensitivityTier":"restricted","accessScope":"unscoped"},"dso":{"sensitivityTier":"confidential","accessScope":"unscoped"},"employee_turnover":{"sensitivityTier":"restricted","accessScope":"unscoped"},"enps":{"sensitivityTier":"restricted","accessScope":"unscoped"},"partner_sourced_revenue":{"sensitivityTier":"confidential","accessScope":"department-scoped"}}}},"queryTemplates":{"ARR / MRR":{"fields":["subscription_id","mrr","arr","start_date","status"],"sourceTable":"subscriptions","grain":"End-of-month snapshot","frequency":"Daily sync","source":"Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{start_date}}) AS period,\n  SUM({{mrr}}) AS {{mrr}},\n  SUM({{mrr}}) * 12 AS {{arr}}\nFROM {{_table}}\nWHERE {{status}} = 'active'\nGROUP BY 1"},"Revenue Components (New, Expansion, Contraction, Churn)":{"fields":["subscription_id","mrr_change","change_type","effective_date"],"sourceTable":"subscription_changes","grain":"Per event, aggregate monthly","frequency":"Daily sync","source":"Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{effective_date}}) AS period,\n  {{change_type}},\n  SUM({{mrr_change}}) AS total_change\nFROM {{_table}}\nGROUP BY 1, 2"},"NRR / GRR":{"fields":["account_id","period_start","mrr_start","mrr_end","expansion_mrr","contraction_mrr","churned_mrr"],"sourceTable":"account_mrr","grain":"Account-month","frequency":"Monthly","source":"Billing + CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{period_start}}) AS period,\n  SUM({{mrr_end}}) / NULLIF(SUM({{mrr_start}}), 0) AS nrr,\n  (SUM({{mrr_start}}) - SUM({{contraction_mrr}}) - SUM({{churned_mrr}}))\n    / NULLIF(SUM({{mrr_start}}), 0) AS grr\nFROM {{_table}}\nGROUP BY 1"},"Rule of 40":{"fields":["arr_growth_rate","ebitda_margin","period"],"sourceTable":"monthly_financials","grain":"Monthly aggregate","frequency":"Monthly","source":"Finance + Billing","parameterizedQuery":"SELECT\n  {{period}},\n  {{arr_growth_rate}} + {{ebitda_margin}} AS rule_of_40\nFROM {{_table}}"},"CAC":{"fields":["sales_marketing_spend","new_customers","period"],"sourceTable":"acquisition_costs","grain":"Monthly aggregate","frequency":"Monthly","source":"Finance + CRM","parameterizedQuery":"SELECT\n  {{period}},\n  SUM({{sales_marketing_spend}}) / NULLIF(SUM({{new_customers}}), 0) AS cac\nFROM {{_table}}\nGROUP BY 1"},"LTV":{"fields":["arpa","gross_margin","churn_rate"],"sourceTable":"monthly_unit_economics","grain":"Monthly aggregate","frequency":"Monthly","source":"Billing + Finance","parameterizedQuery":"SELECT\n  {{arpa}} * {{gross_margin}} / NULLIF({{churn_rate}}, 0) AS ltv\nFROM {{_table}}"},"Burn Rate":{"fields":["cash_balance","operating_expenses","period"],"sourceTable":"monthly_financials","grain":"End-of-month snapshot","frequency":"Monthly","source":"Finance","parameterizedQuery":"SELECT\n  {{period}},\n  {{cash_balance}},\n  {{operating_expenses}} AS burn_rate,\n  {{cash_balance}} / NULLIF({{operating_expenses}}, 0) AS runway_months\nFROM {{_table}}"},"Logo Churn":{"fields":["account_id","status","churn_date","churn_reason"],"sourceTable":"accounts","grain":"Per event, aggregate monthly","frequency":"Daily sync","source":"CRM + Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{churn_date}}) AS period,\n  COUNT(*) AS churned_accounts,\n  COUNT(*) * 1.0 / total_accounts AS logo_churn_rate\nFROM {{_table}}\nWHERE {{status}} = 'churned'\nGROUP BY 1"},"Revenue Churn":{"fields":["account_id","mrr_lost","churn_date","churn_type"],"sourceTable":"churn_events","grain":"Per event, aggregate monthly","frequency":"Daily sync","source":"Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{churn_date}}) AS period,\n  SUM({{mrr_lost}}) AS revenue_churn,\n  SUM({{mrr_lost}}) / beginning_mrr AS revenue_churn_rate\nFROM {{_table}}\nGROUP BY 1"},"Health Score":{"fields":["account_id","usage_score","engagement_score","support_score","adoption_score"],"sourceTable":"health_inputs","grain":"Weekly snapshot","frequency":"Weekly","source":"CS Platform","parameterizedQuery":"SELECT\n  {{account_id}},\n  ({{usage_score}} * 0.3 + {{engagement_score}} * 0.3\n    + {{support_score}} * 0.2 + {{adoption_score}} * 0.2) AS health_score\nFROM {{_table}}\nWHERE snapshot_week = DATE_TRUNC('week', CURRENT_DATE)"},"LTV:CAC & CAC Payback":{"fields":["ltv","cac","payback_months"],"sourceTable":"monthly_unit_economics","grain":"Monthly aggregate","frequency":"Monthly","source":"Derived","parameterizedQuery":"SELECT\n  {{ltv}} / NULLIF({{cac}}, 0) AS ltv_cac_ratio,\n  {{cac}} / NULLIF(arpa * gross_margin, 0) AS {{payback_months}}\nFROM {{_table}}"},"Gross Margin":{"fields":["revenue","cogs","period"],"sourceTable":"monthly_pnl","grain":"End-of-month snapshot","frequency":"Monthly","source":"ERP / Accounting","parameterizedQuery":"SELECT\n  {{period}},\n  ({{revenue}} - {{cogs}}) / NULLIF({{revenue}}, 0) AS gross_margin\nFROM {{_table}}"},"Pipeline Value":{"fields":["opportunity_id","amount","stage","expected_close","owner"],"sourceTable":"opportunities","grain":"Daily snapshot","frequency":"Daily sync","source":"CRM","parameterizedQuery":"SELECT\n  {{stage}},\n  COUNT(*) AS deal_count,\n  SUM({{amount}}) AS pipeline_value\nFROM {{_table}}\nWHERE {{stage}} NOT IN ('Closed Won', 'Closed Lost')\nGROUP BY 1"},"Win Rate":{"fields":["opportunity_id","stage","close_date","is_won"],"sourceTable":"opportunities","grain":"Per event, aggregate monthly","frequency":"Daily sync","source":"CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{close_date}}) AS period,\n  COUNT(CASE WHEN {{is_won}} THEN 1 END) * 1.0 / COUNT(*) AS win_rate\nFROM {{_table}}\nWHERE {{stage}} IN ('Closed Won', 'Closed Lost')\nGROUP BY 1"},"ACV":{"fields":["opportunity_id","annual_value","close_date"],"sourceTable":"opportunities","grain":"Per event, aggregate monthly","frequency":"Daily sync","source":"CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{close_date}}) AS period,\n  AVG({{annual_value}}) AS avg_acv\nFROM {{_table}}\nWHERE is_won = true\nGROUP BY 1"},"Quota Attainment":{"fields":["rep_id","quota","closed_revenue","period"],"sourceTable":"sales_quotas","grain":"Monthly aggregate","frequency":"Monthly","source":"CRM + Comp","parameterizedQuery":"SELECT\n  {{rep_id}},\n  {{period}},\n  {{closed_revenue}} / NULLIF({{quota}}, 0) AS attainment\nFROM {{_table}}\nJOIN rep_bookings USING ({{rep_id}}, {{period}})"},"Pipeline Velocity":{"fields":["opportunity_id","stage_history","amount","close_date"],"sourceTable":"opportunities","grain":"Daily snapshot","frequency":"Daily","source":"CRM","parameterizedQuery":"SELECT\n  COUNT(*) * win_rate * avg_deal_size\n    / NULLIF(avg_cycle_days, 0) AS pipeline_velocity\nFROM (\n  SELECT\n    AVG(CASE WHEN is_won THEN 1.0 ELSE 0 END) AS win_rate,\n    AVG({{amount}}) AS avg_deal_size,\n    AVG(days_in_pipeline) AS avg_cycle_days\n  FROM {{_table}}\n)"},"Sales Cycle":{"fields":["opportunity_id","created_date","close_date"],"sourceTable":"opportunities","grain":"Per event","frequency":"Per deal","source":"CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{close_date}}) AS period,\n  AVG({{close_date}} - {{created_date}}) AS avg_cycle_days\nFROM {{_table}}\nWHERE stage IN ('Closed Won', 'Closed Lost')\nGROUP BY 1"},"Activity Metrics":{"fields":["rep_id","activity_type","count","date"],"sourceTable":"sales_activities","grain":"Per event, aggregate monthly","frequency":"Daily","source":"CRM / Dialer","parameterizedQuery":"SELECT\n  {{rep_id}},\n  DATE_TRUNC('month', {{date}}) AS period,\n  {{activity_type}},\n  SUM({{count}}) AS total_activities\nFROM {{_table}}\nGROUP BY 1, 2, 3"},"MQLs":{"fields":["lead_id","lead_source","mql_date","lead_score"],"sourceTable":"leads","grain":"Daily snapshot","frequency":"Daily","source":"Marketing Automation","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{mql_date}}) AS period,\n  {{lead_source}},\n  COUNT(*) AS mql_count\nFROM {{_table}}\nWHERE {{lead_score}} >= 80\nGROUP BY 1, 2"},"Marketing CAC":{"fields":["marketing_spend","new_customers"],"sourceTable":"marketing_costs","grain":"Monthly aggregate","frequency":"Monthly","source":"Finance + CRM","parameterizedQuery":"SELECT\n  period,\n  SUM({{marketing_spend}}) / NULLIF(SUM({{new_customers}}), 0) AS marketing_cac\nFROM {{_table}}\nGROUP BY 1"},"Sourced Pipeline":{"fields":["opportunity_id","marketing_source","amount"],"sourceTable":"opportunities","grain":"Daily snapshot","frequency":"Daily","source":"CRM + MA","parameterizedQuery":"SELECT\n  {{marketing_source}},\n  COUNT(*) AS opps,\n  SUM({{amount}}) AS pipeline_value\nFROM {{_table}}\nWHERE {{marketing_source}} IS NOT NULL\nGROUP BY 1"},"LVR":{"fields":["mql_count_current","mql_count_prior"],"sourceTable":"monthly_mql_counts","grain":"Monthly aggregate","frequency":"Monthly","source":"Marketing Automation","parameterizedQuery":"SELECT\n  ({{mql_count_current}} - {{mql_count_prior}}) * 1.0\n    / NULLIF({{mql_count_prior}}, 0) AS lead_velocity_rate\nFROM {{_table}}"},"Visitors":{"fields":["page_views","unique_visitors","source"],"sourceTable":"web_analytics","grain":"Daily snapshot","frequency":"Daily","source":"Web Analytics","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', event_date) AS period,\n  {{source}},\n  SUM({{page_views}}) AS {{page_views}},\n  COUNT(DISTINCT visitor_id) AS {{unique_visitors}}\nFROM {{_table}}\nGROUP BY 1, 2"},"Channel Spend":{"fields":["channel","spend","leads","conversions"],"sourceTable":"ad_spend","grain":"Daily snapshot","frequency":"Daily","source":"Ad Platforms","parameterizedQuery":"SELECT\n  {{channel}},\n  SUM({{spend}}) AS total_spend,\n  SUM({{leads}}) AS total_leads,\n  SUM({{spend}}) / NULLIF(SUM({{leads}}), 0) AS cost_per_lead\nFROM {{_table}}\nGROUP BY 1"},"NRR":{"fields":["account_id","mrr_start","mrr_end","expansion","contraction","churn"],"sourceTable":"account_cohorts","grain":"Monthly cohort","frequency":"Monthly","source":"Billing + CRM","parameterizedQuery":"SELECT\n  cohort_month,\n  SUM({{mrr_end}}) / SUM({{mrr_start}}) AS nrr\nFROM {{_table}}\nGROUP BY 1"},"Renewal Rate":{"fields":["account_id","contract_end_date","renewed","renewal_amount"],"sourceTable":"renewals","grain":"Monthly aggregate","frequency":"Monthly","source":"CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{contract_end_date}}) AS period,\n  SUM(CASE WHEN {{renewed}} THEN {{renewal_amount}} END)\n    / SUM({{renewal_amount}}) AS renewal_rate\nFROM {{_table}}\nGROUP BY 1"},"Expansion Revenue":{"fields":["account_id","expansion_mrr","upsell_type","effective_date"],"sourceTable":"expansions","grain":"Per event, aggregate monthly","frequency":"Monthly","source":"Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{effective_date}}) AS period,\n  {{upsell_type}},\n  SUM({{expansion_mrr}}) AS expansion_revenue\nFROM {{_table}}\nGROUP BY 1, 2"},"QBR Completion":{"fields":["account_id","qbr_date","attendees","completed"],"sourceTable":"qbr_schedule","grain":"Quarterly snapshot","frequency":"Quarterly","source":"CS Platform","parameterizedQuery":"SELECT\n  DATE_TRUNC('quarter', {{qbr_date}}) AS quarter,\n  COUNT(CASE WHEN {{completed}} THEN 1 END) * 1.0\n    / COUNT(*) AS qbr_completion_rate\nFROM {{_table}}\nGROUP BY 1"},"Cohort Revenue Retention":{"fields":["account_id","cohort_month","months_since_start","mrr"],"sourceTable":"account_cohorts","grain":"Monthly cohort","frequency":"Monthly","source":"Billing","parameterizedQuery":"WITH cohort_mrr AS (\n  SELECT\n    {{cohort_month}},\n    {{months_since_start}},\n    SUM({{mrr}}) AS total_mrr\n  FROM {{_table}}\n  GROUP BY 1, 2\n)\nSELECT\n  {{cohort_month}},\n  {{months_since_start}},\n  total_mrr / FIRST_VALUE(total_mrr) OVER (\n    PARTITION BY {{cohort_month}} ORDER BY {{months_since_start}}\n  ) AS retention_pct\nFROM cohort_mrr\nWHERE {{months_since_start}} IN (3, 6, 9, 12)"},"Customer Health Score":{"fields":["account_id","snapshot_date","usage_score","engagement_score","support_score","adoption_score"],"sourceTable":"health_inputs","grain":"Weekly snapshot","frequency":"Weekly","source":"CS Platform","parameterizedQuery":"SELECT\n  {{account_id}},\n  ({{usage_score}} * 0.3 + {{engagement_score}} * 0.3\n    + {{support_score}} * 0.2 + {{adoption_score}} * 0.2) AS health_score,\n  CASE WHEN ({{usage_score}} * 0.3 + {{engagement_score}} * 0.3\n    + {{support_score}} * 0.2 + {{adoption_score}} * 0.2) < 0.5\n    THEN true ELSE false END AS at_risk\nFROM {{_table}}\nWHERE {{snapshot_date}} = DATE_TRUNC('week', CURRENT_DATE)"},"DAU/MAU":{"fields":["user_id","session_date","session_duration"],"sourceTable":"sessions","grain":"Daily snapshot","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  {{session_date}},\n  COUNT(DISTINCT {{user_id}}) AS dau,\n  COUNT(DISTINCT {{user_id}}) OVER (PARTITION BY DATE_TRUNC('month', {{session_date}})) AS mau\nFROM {{_table}}"},"Activation":{"fields":["user_id","signup_date","activation_date","criteria_met"],"sourceTable":"user_activations","grain":"Per event, aggregate monthly","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{signup_date}}) AS cohort,\n  COUNT(CASE WHEN {{criteria_met}} THEN 1 END) * 1.0\n    / COUNT(*) AS activation_rate\nFROM {{_table}}\nGROUP BY 1"},"Feature Adoption":{"fields":["user_id","feature_id","first_use_date","usage_count"],"sourceTable":"active_users","grain":"Per event, aggregate monthly","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  {{feature_id}},\n  COUNT(DISTINCT {{user_id}}) * 1.0\n    / (SELECT COUNT(DISTINCT {{user_id}}) FROM {{_table}}) AS adoption_rate\nFROM feature_usage\nGROUP BY 1"},"PQAs":{"fields":["account_id","pqa_score","qualifying_events"],"sourceTable":"product_scores","grain":"Daily snapshot","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  {{account_id}},\n  {{pqa_score}},\n  CASE WHEN {{pqa_score}} >= 80 THEN true ELSE false END AS is_pqa\nFROM {{_table}}\nWHERE score_date = CURRENT_DATE"},"Cohort Retention":{"fields":["user_id","cohort_date","last_active_date"],"sourceTable":"users","grain":"Monthly cohort","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{cohort_date}}) AS cohort,\n  DATE_TRUNC('month', {{last_active_date}}) AS active_month,\n  COUNT(DISTINCT {{user_id}}) AS retained_users\nFROM {{_table}}\nGROUP BY 1, 2"},"Uptime":{"fields":["service_id","status","check_timestamp","downtime_minutes"],"sourceTable":"availability_checks","grain":"Real-time","frequency":"Real-time","source":"Monitoring","parameterizedQuery":"SELECT\n  {{service_id}},\n  1 - SUM({{downtime_minutes}}) / (30.0 * 24 * 60) AS uptime_pct\nFROM {{_table}}\nWHERE {{check_timestamp}} >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1"},"DORA Metrics":{"fields":["deployment_id","commit_id","deploy_date","rollback","recovery_time"],"sourceTable":"deployments","grain":"Per event","frequency":"Per deploy","source":"CI/CD + VCS","parameterizedQuery":"SELECT\n  DATE_TRUNC('week', {{deploy_date}}) AS week,\n  COUNT(*) AS deploy_frequency,\n  AVG({{deploy_date}} - commit_date) AS lead_time,\n  AVG(CASE WHEN {{rollback}} THEN 1.0 ELSE 0 END) AS change_fail_rate,\n  AVG(CASE WHEN {{rollback}} THEN {{recovery_time}} END) AS mttr\nFROM {{_table}}\nGROUP BY 1"},"Incidents":{"fields":["incident_id","severity","detected_at","resolved_at","root_cause"],"sourceTable":"resolved_at","grain":"Per event","frequency":"Per incident","source":"Incident Management","parameterizedQuery":"SELECT\n  {{severity}},\n  COUNT(*) AS incident_count,\n  AVG(EXTRACT(EPOCH FROM {{{{_table}}}} - {{detected_at}}) / 60) AS avg_mttr_minutes\nFROM incidents\nWHERE {{detected_at}} >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1"},"Infrastructure":{"fields":["resource_id","utilization","cost","customer_count"],"sourceTable":"infrastructure","grain":"Daily snapshot","frequency":"Daily","source":"Cloud Provider","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', usage_date) AS period,\n  SUM({{cost}}) AS infra_cost,\n  SUM({{cost}}) / NULLIF(SUM({{customer_count}}), 0) AS cost_per_customer\nFROM {{_table}}\nGROUP BY 1"},"Security":{"fields":["vulnerability_id","severity","discovered_at","patched_at"],"sourceTable":"patched_at","grain":"Daily snapshot","frequency":"Daily","source":"Security Scanner","parameterizedQuery":"SELECT\n  {{severity}},\n  COUNT(*) AS open_vulns,\n  AVG(CASE WHEN {{{{_table}}}} IS NOT NULL\n    THEN EXTRACT(EPOCH FROM {{{{_table}}}} - {{discovered_at}}) / 86400 END) AS avg_patch_days\nFROM vulnerabilities\nWHERE {{{{_table}}}} IS NULL OR {{{{_table}}}} >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1"},"CSAT":{"fields":["project_id","satisfaction_score","survey_date"],"sourceTable":"project_surveys","grain":"Per event","frequency":"Per project","source":"Survey Tool","parameterizedQuery":"SELECT\n  DATE_TRUNC('quarter', {{survey_date}}) AS quarter,\n  AVG({{satisfaction_score}}) AS avg_csat,\n  COUNT(CASE WHEN {{satisfaction_score}} >= 4 THEN 1 END) * 1.0\n    / COUNT(*) AS satisfaction_rate\nFROM {{_table}}\nGROUP BY 1"},"FRT":{"fields":["ticket_id","created_at","first_response_at"],"sourceTable":"first_response_at","grain":"Per event","frequency":"Per ticket","source":"Help Desk","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{created_at}}) AS period,\n  PERCENTILE_CONT(0.5) WITHIN GROUP (\n    ORDER BY EXTRACT(EPOCH FROM {{{{_table}}}} - {{created_at}}) / 60\n  ) AS median_frt_minutes\nFROM tickets\nGROUP BY 1"},"Resolution":{"fields":["ticket_id","created_at","resolved_at","priority"],"sourceTable":"resolved_at","grain":"Per event","frequency":"Per ticket","source":"Help Desk","parameterizedQuery":"SELECT\n  {{priority}},\n  AVG(EXTRACT(EPOCH FROM {{{{_table}}}} - {{created_at}}) / 3600) AS avg_resolution_hours\nFROM tickets\nWHERE {{{{_table}}}} IS NOT NULL\nGROUP BY 1"},"FCR":{"fields":["ticket_id","contact_count","resolved_first_contact"],"sourceTable":"tickets","grain":"Per event","frequency":"Per ticket","source":"Help Desk","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', created_at) AS period,\n  COUNT(CASE WHEN {{resolved_first_contact}} THEN 1 END) * 1.0\n    / COUNT(*) AS fcr_rate\nFROM {{_table}}\nGROUP BY 1"},"Self-Service":{"fields":["article_id","views","deflections","date"],"sourceTable":"kb_analytics","grain":"Daily snapshot","frequency":"Daily","source":"Knowledge Base","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{date}}) AS period,\n  SUM({{deflections}}) * 1.0 / NULLIF(SUM({{views}}), 0) AS deflection_rate\nFROM {{_table}}\nGROUP BY 1"},"ARR":{"fields":["account_id","mrr","contract_start","contract_end"],"sourceTable":"subscriptions","grain":"End-of-month snapshot","frequency":"Monthly","source":"Billing","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', CURRENT_DATE) AS period,\n  SUM({{mrr}}) * 12 AS arr\nFROM {{_table}}\nWHERE {{contract_start}} <= CURRENT_DATE\n  AND {{contract_end}} > CURRENT_DATE"},"Burn & Runway":{"fields":["cash_balance","monthly_revenue","monthly_expenses"],"sourceTable":"monthly_financials","grain":"End-of-month snapshot","frequency":"Monthly","source":"ERP / Accounting","parameterizedQuery":"SELECT\n  period,\n  {{monthly_expenses}} - {{monthly_revenue}} AS net_burn,\n  {{cash_balance}} / NULLIF({{monthly_expenses}} - {{monthly_revenue}}, 0) AS runway_months\nFROM {{_table}}"},"Collections":{"fields":["invoice_id","invoice_date","payment_date","amount","credit_memos"],"sourceTable":"invoices","grain":"Per event","frequency":"Per invoice","source":"ERP","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{invoice_date}}) AS period,\n  AVG({{payment_date}} - {{invoice_date}}) AS dso,\n  SUM({{amount}} - COALESCE({{credit_memos}}, 0)) AS net_collected\nFROM {{_table}}\nGROUP BY 1"},"Margins":{"fields":["department","expense_type","amount","period"],"sourceTable":"expenses","grain":"Monthly aggregate","frequency":"Monthly","source":"ERP","parameterizedQuery":"SELECT\n  {{period}},\n  SUM(CASE WHEN {{expense_type}} = 'cogs' THEN {{amount}} END) / revenue AS cogs_pct,\n  SUM(CASE WHEN {{expense_type}} = 'opex' THEN {{amount}} END) / revenue AS opex_pct\nFROM {{_table}}\nJOIN monthly_revenue USING ({{period}})\nGROUP BY 1"},"eNPS":{"fields":["employee_id","score","survey_date"],"sourceTable":"employee_surveys","grain":"Quarterly snapshot","frequency":"Quarterly","source":"HR / Survey Tool","parameterizedQuery":"SELECT\n  DATE_TRUNC('quarter', {{survey_date}}) AS quarter,\n  (COUNT(CASE WHEN {{score}} >= 9 THEN 1 END)\n    - COUNT(CASE WHEN {{score}} <= 6 THEN 1 END)) * 100.0\n    / COUNT(*) AS enps\nFROM {{_table}}\nGROUP BY 1"},"Retention":{"fields":["employee_id","hire_date","termination_date","department"],"sourceTable":"employees","grain":"Monthly aggregate","frequency":"Monthly","source":"HRIS","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{termination_date}}) AS period,\n  COUNT(*) AS departures,\n  COUNT(*) * 12.0 / avg_headcount AS annualized_turnover\nFROM {{_table}}\nWHERE {{termination_date}} IS NOT NULL\nGROUP BY 1"},"Recruiting":{"fields":["requisition_id","posted_date","filled_date","cost","source"],"sourceTable":"requisitions","grain":"Per event","frequency":"Per hire","source":"ATS","parameterizedQuery":"SELECT\n  {{source}},\n  COUNT(*) AS hires,\n  AVG({{filled_date}} - {{posted_date}}) AS avg_time_to_fill,\n  AVG({{cost}}) AS avg_cost_per_hire\nFROM {{_table}}\nWHERE {{filled_date}} IS NOT NULL\nGROUP BY 1"},"Engagement":{"fields":["employee_id","engagement_score","survey_date","department"],"sourceTable":"engagement_surveys","grain":"Quarterly snapshot","frequency":"Quarterly","source":"Survey Tool","parameterizedQuery":"SELECT\n  {{department}},\n  DATE_TRUNC('quarter', {{survey_date}}) AS quarter,\n  AVG({{engagement_score}}) AS avg_engagement\nFROM {{_table}}\nGROUP BY 1, 2"},"Compensation":{"fields":["employee_id","salary","market_midpoint","department","demographics"],"sourceTable":"compensation","grain":"Annual snapshot","frequency":"Annual","source":"HRIS + Comp","parameterizedQuery":"SELECT\n  {{department}},\n  AVG({{salary}} / NULLIF({{market_midpoint}}, 0)) AS compa_ratio,\n  STDDEV({{salary}} / NULLIF({{market_midpoint}}, 0)) AS pay_equity_spread\nFROM {{_table}}\nGROUP BY 1"},"TTFV":{"fields":["account_id","signup_date","first_value_date","value_event"],"sourceTable":"customer_onboardings","grain":"Per event","frequency":"Daily","source":"Product Analytics + CS","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{signup_date}}) AS cohort,\n  AVG({{first_value_date}} - {{signup_date}}) AS avg_ttfv_days\nFROM {{_table}}\nWHERE {{first_value_date}} IS NOT NULL\nGROUP BY 1"},"Completion":{"fields":["account_id","steps_total","steps_completed","completion_date"],"sourceTable":"onboardings","grain":"Per event, aggregate monthly","frequency":"Daily","source":"Product Analytics","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{completion_date}}) AS period,\n  AVG({{steps_completed}} * 1.0 / {{steps_total}}) AS avg_completion,\n  COUNT(CASE WHEN {{steps_completed}} = {{steps_total}} THEN 1 END) * 1.0\n    / COUNT(*) AS full_completion_rate\nFROM {{_table}}\nGROUP BY 1"},"Milestones":{"fields":["account_id","milestone","milestone_date","target_date"],"sourceTable":"onboarding_milestones","grain":"Per event","frequency":"Per milestone","source":"CS Platform","parameterizedQuery":"SELECT\n  {{milestone}},\n  COUNT(CASE WHEN {{milestone_date}} <= {{target_date}} THEN 1 END) * 1.0\n    / COUNT(*) AS on_time_rate,\n  AVG({{milestone_date}} - {{target_date}}) AS avg_delay_days\nFROM {{_table}}\nGROUP BY 1"},"Quality":{"fields":["account_id","nps_score","quality_score","survey_date"],"sourceTable":"onboarding_surveys","grain":"Per event","frequency":"Per onboarding","source":"Survey Tool","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{survey_date}}) AS period,\n  AVG({{quality_score}}) AS avg_quality,\n  AVG({{nps_score}}) AS avg_nps\nFROM {{_table}}\nGROUP BY 1"},"Efficiency":{"fields":["onboarding_id","resource_id","hours","cost","status"],"sourceTable":"onboarding_engagements","grain":"Per event","frequency":"Per onboarding","source":"CS Platform","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', start_date) AS period,\n  AVG({{hours}}) AS avg_hours_per_onboarding,\n  AVG({{cost}}) AS avg_cost_per_onboarding\nFROM {{_table}}\nWHERE {{status}} = 'completed'\nGROUP BY 1"},"Partner Revenue":{"fields":["deal_id","partner_id","amount","close_date","partner_sourced"],"sourceTable":"partner_deals","grain":"Per event, aggregate monthly","frequency":"Monthly","source":"CRM","parameterizedQuery":"SELECT\n  DATE_TRUNC('month', {{close_date}}) AS period,\n  SUM(CASE WHEN {{partner_sourced}} THEN {{amount}} END) AS sourced_revenue,\n  SUM({{amount}}) AS influenced_revenue\nFROM {{_table}}\nGROUP BY 1"},"Active Partners":{"fields":["partner_id","status","last_activity_date","tier"],"sourceTable":"partners","grain":"Monthly aggregate","frequency":"Monthly","source":"Partner Portal","parameterizedQuery":"SELECT\n  {{tier}},\n  COUNT(*) AS active_partners\nFROM {{_table}}\nWHERE {{status}} = 'active'\n  AND {{last_activity_date}} >= CURRENT_DATE - INTERVAL '90 days'\nGROUP BY 1"},"Deal Registrations":{"fields":["registration_id","partner_id","opportunity_id","status","amount"],"sourceTable":"deal_registrations","grain":"Per event","frequency":"Per registration","source":"PRM","parameterizedQuery":"SELECT\n  {{status}},\n  COUNT(*) AS registrations,\n  SUM({{amount}}) AS total_value\nFROM {{_table}}\nWHERE created_at >= DATE_TRUNC('month', CURRENT_DATE)\nGROUP BY 1"},"Training":{"fields":["partner_id","course_id","completion_date","certification_status"],"sourceTable":"partner_training","grain":"Per event","frequency":"Per completion","source":"LMS","parameterizedQuery":"SELECT\n  {{certification_status}},\n  COUNT(DISTINCT {{partner_id}}) AS partners,\n  COUNT(*) AS completions\nFROM {{_table}}\nGROUP BY 1"},"Partner Satisfaction":{"fields":["partner_id","score","survey_date"],"sourceTable":"partner_surveys","grain":"Quarterly snapshot","frequency":"Quarterly","source":"Survey Tool","parameterizedQuery":"SELECT\n  DATE_TRUNC('quarter', {{survey_date}}) AS quarter,\n  AVG({{score}}) AS avg_satisfaction,\n  (COUNT(CASE WHEN {{score}} >= 9 THEN 1 END)\n    - COUNT(CASE WHEN {{score}} <= 6 THEN 1 END)) * 100.0\n    / COUNT(*) AS partner_nps\nFROM {{_table}}\nGROUP BY 1"},"Utilization":{"fields":["consultant_id","billable_hours","available_hours","period"],"sourceTable":"time_entries","grain":"Weekly snapshot","frequency":"Weekly","source":"PSA / Time Tracking","parameterizedQuery":"SELECT\n  DATE_TRUNC('week', {{period}}) AS week,\n  SUM({{billable_hours}}) / NULLIF(SUM({{available_hours}}), 0) AS utilization_rate\nFROM {{_table}}\nGROUP BY 1"},"Project Margin":{"fields":["project_id","revenue","costs","hours_budgeted","hours_actual"],"sourceTable":"projects","grain":"Monthly aggregate","frequency":"Monthly","source":"PSA","parameterizedQuery":"SELECT\n  {{project_id}},\n  ({{revenue}} - {{costs}}) / NULLIF({{revenue}}, 0) AS margin,\n  {{hours_actual}} / NULLIF({{hours_budgeted}}, 0) AS budget_utilization\nFROM {{_table}}\nWHERE status = 'active'"},"Delivery":{"fields":["project_id","planned_date","actual_date","milestones_completed"],"sourceTable":"project_milestones","grain":"Per event","frequency":"Per milestone","source":"PSA","parameterizedQuery":"SELECT\n  COUNT(CASE WHEN {{actual_date}} <= {{planned_date}} THEN 1 END) * 1.0\n    / COUNT(*) AS on_time_rate,\n  AVG({{actual_date}} - {{planned_date}}) AS avg_delay_days\nFROM {{_table}}\nWHERE {{actual_date}} IS NOT NULL"},"Team":{"fields":["consultant_id","project_id","hours","revenue","status"],"sourceTable":"assignments","grain":"Weekly snapshot","frequency":"Weekly","source":"PSA","parameterizedQuery":"SELECT\n  {{consultant_id}},\n  COUNT(DISTINCT {{project_id}}) AS active_projects,\n  SUM({{hours}}) AS total_hours,\n  SUM({{revenue}}) AS total_revenue\nFROM {{_table}}\nWHERE {{status}} = 'active'\nGROUP BY 1"},"Forecast Accuracy":{"fields":["period","forecasted_revenue","actual_revenue","forecast_date"],"sourceTable":"revenue_forecasts","grain":"Monthly aggregate","frequency":"Monthly","source":"CRM + Finance","parameterizedQuery":"SELECT\n  {{period}},\n  1 - ABS({{actual_revenue}} - {{forecasted_revenue}})\n    / NULLIF({{actual_revenue}}, 0) AS forecast_accuracy\nFROM {{_table}}\nWHERE {{forecast_date}} = (SELECT MAX({{forecast_date}}) FROM {{_table}} f2 WHERE f2.{{period}} = {{_table}}.{{period}})"},"Pipeline Hygiene":{"fields":["opportunity_id","required_fields_complete","last_updated","stage_age"],"sourceTable":"pipeline_hygiene","grain":"Weekly snapshot","frequency":"Weekly","source":"CRM","parameterizedQuery":"SELECT\n  COUNT(CASE WHEN {{required_fields_complete}} THEN 1 END) * 1.0\n    / COUNT(*) AS completeness_score,\n  AVG({{stage_age}}) AS avg_stage_age_days,\n  COUNT(CASE WHEN {{last_updated}} < CURRENT_DATE - INTERVAL '14 days' THEN 1 END) AS stale_deals\nFROM {{_table}}"},"Quote-to-Cash":{"fields":["quote_id","order_id","invoice_id","dates","amounts","status"],"sourceTable":"quote_to_cash","grain":"Per event","frequency":"Per transaction","source":"CPQ + Billing","parameterizedQuery":"SELECT\n  {{status}},\n  COUNT(*) AS transactions,\n  AVG(order_date - quote_date) AS avg_quote_to_order_days,\n  AVG(invoice_date - order_date) AS avg_order_to_invoice_days\nFROM {{_table}}\nGROUP BY 1"},"Data Quality":{"fields":["object","field","completeness_pct","sync_status","last_sync"],"sourceTable":"data_quality_checks","grain":"Daily snapshot","frequency":"Daily","source":"CRM + Integrations","parameterizedQuery":"SELECT\n  {{object}},\n  AVG({{completeness_pct}}) AS avg_completeness,\n  COUNT(CASE WHEN {{sync_status}} = 'error' THEN 1 END) AS sync_errors\nFROM {{_table}}\nWHERE {{last_sync}} >= CURRENT_DATE - INTERVAL '1 day'\nGROUP BY 1"}}}