GASP
Core Efficiency Metrics Efficiency

LTV:CAC Ratio

LTV:CAC Ratio: The ratio of customer lifetime value to acquisition cost. Measures the return on investment from sales and marketing spend.

Formula

LTV:CAC = LTV / CAC
LTV:CAC-O = LTV-O / CAC-O
LTV:CAC-M = LTV-M / CAC-M
LTV:CAC-O = LTV:CAC-M × (LTV-O / LTV-M) × (CAC-M / CAC-O)

Computable definition

The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.

metric.ltv / metric.cac

Unit: ratio

Operating form (O) (see the dual-lens forms)
metric.ltv.O / metric.cac.O
Market form (M) (see the dual-lens forms)
metric.ltv.M / metric.cac.M

Data requirements

Grain: Monthly aggregate · Frequency: Monthly · Aggregation: aggregate (month) · Staged: no · Main source: Billing.

Field Dataset Type
cost cost_event decimal
cost_function cost_event string
customer_id customer string
customer_id revenue_event string
customer_status customer string
event_date cost_event date
event_date revenue_event date
event_type revenue_event string
mrr subscription decimal
mrr_change revenue_event decimal
period_start financials date
revenue financials decimal
snapshot_date customer date
snapshot_date subscription date
subscription_status subscription string
Example SQL (Postgres)
SELECT (CAST(((CAST((((CAST(((SELECT COALESCE(SUM(mrr), 0) FROM subscription WHERE snapshot_date = :period_end AND subscription_status = 'active')) AS DOUBLE PRECISION) / NULLIF(((SELECT COUNT(DISTINCT customer_id) FROM customer WHERE snapshot_date = :period_end AND customer_status = 'active')), 0))) * ((CAST(((SELECT COALESCE(SUM(revenue), 0) FROM financials WHERE period_start >= :period_start AND period_start <= :period_end) - (SELECT COALESCE(SUM(cost), 0) FROM cost_event WHERE event_date >= :period_start AND event_date <= :period_end AND cost_function = 'infrastructure')) AS DOUBLE PRECISION) / NULLIF((SELECT COALESCE(SUM(revenue), 0) FROM financials WHERE period_start >= :period_start AND period_start <= :period_end), 0)))) AS DOUBLE PRECISION) / NULLIF(((CAST((((-(SELECT COALESCE(SUM(mrr_change), 0) FROM revenue_event WHERE event_date >= :period_start AND event_date <= :period_end AND event_type = 'churn'))) + ((-(SELECT COALESCE(SUM(mrr_change), 0) FROM revenue_event WHERE event_date >= :period_start AND event_date <= :period_end AND event_type = 'contraction')))) AS DOUBLE PRECISION) / NULLIF(((SELECT COALESCE(SUM(mrr), 0) FROM subscription WHERE snapshot_date = :period_start AND subscription_status = 'active')), 0))), 0))) AS DOUBLE PRECISION) / NULLIF(((CAST((SELECT COALESCE(SUM(cost), 0) FROM cost_event WHERE event_date >= :period_start AND event_date <= :period_end AND cost_function = 'gtm') AS DOUBLE PRECISION) / NULLIF(((SELECT COUNT(DISTINCT customer_id) FROM revenue_event WHERE event_date >= :period_start AND event_date <= :period_end AND event_type = 'new')), 0))), 0)) AS ltv_cac_ratio

Access: recommended sensitivity tier confidential, access scope unscoped. Guidance your policy engine enforces.

From an agent: with the GASP MCP server, call lookup_metric({ "name": "LTV:CAC Ratio" }) or generate_query({ "metric": "LTV:CAC Ratio", "adapter": "<your adapter JSON>" }).

Benchmarks

  • Below 1:1: Losing money on every customer
  • 1:1 to 2:1: Breaking even or marginal, concerning to investors
  • 3:1 to 4:1: Industry standard, healthy sustainable growth (Median B2B SaaS: 3.2:1)
  • 4:1 to 5:1: Strong business model
  • Above 5:1: Under-investing in growth; could be growing faster

What It Tells You

Unit economics health. Are customers worth more than they cost to acquire?

Dual-Lens: Operating / Market Forms

Both governed forms are computed from the same Commercial Event Ledger, with Attribution Taxonomy Layer tags deciding which events each form counts.

Operating Form: Contribution LTV:CAC (LTV:CAC-O)

LTV:CAC-O divides Contribution LTV by Fully Loaded CAC. Both sides carry the cost of making a customer productive: the numerator loses the variable service costs over the lifetime and the denominator gains implementation and onboarding.

CEL Source:
`Revenue_Event`, `Cost_Event`
ATL Inclusion:
LTV-O margin costs (`infrastructure`, `support`, `success_engineering`, `implementation`, `onboarding`); CAC-O costs (`gtm`, `implementation`, `onboarding`)
LTV:CAC-O = LTV-O / CAC-O

What it tells you: The return on acquisition spend after every variable cost of acquiring and serving a customer. The ratio to use for pricing, packaging and services investment decisions.

Market Form: Gross Margin LTV:CAC (LTV:CAC-M)

LTV:CAC-M divides Gross Margin LTV by GTM CAC. This is the ratio investors benchmark and the form the 3:1 threshold above assumes.

CEL Source:
`Revenue_Event`, `Cost_Event`
ATL Inclusion:
LTV-M margin costs (`infrastructure` only); CAC-M costs (`gtm` only)
LTV:CAC-M = LTV-M / CAC-M

What it tells you: The investor-comparable unit economics ratio reported to the board and in fundraising materials.

Bridge

LTV:CAC-O = LTV:CAC-M × (LTV-O / LTV-M) × (CAC-M / CAC-O)

The gap between LTV:CAC-M and LTV:CAC-O shows how much of the headline ratio depends on human delivery costs that S&M-based benchmarks leave out. A business at 3:1 on the market form and well under 2:1 on the operating form is buying growth with services effort. Report LTV:CAC-M for comparability and manage to LTV:CAC-O. ---

Connected in the GASP relationship graph.

Upstream: what drives this

  • CAC component of LTV:CAC Ratio (Core)
  • LTV component of LTV:CAC Ratio (Core)

Downstream: what this drives

Try searching for:

↑↓navigate↵select