GASP
Core Efficiency Metrics Efficiency

CAC (Customer Acquisition Cost)

CAC (Customer Acquisition Cost): The total cost to acquire a new customer.

Also known as: CAC

Formula

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

Computable definition

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

sum(field.cost where field.cost_function = 'gtm') / metric.new_customers

Unit: currency

Operating form (O) (see the dual-lens forms)
(sum(field.cost where field.cost_function = 'gtm') + sum(field.cost where field.cost_function in ('implementation', 'onboarding'))) / metric.new_customers
Market form (M) (see the dual-lens forms)
sum(field.cost where field.cost_function = 'gtm') / metric.new_customers

Breakdowns

  • by_cost_centre: one row per cost_centre value, each read against the whole population (share of total)

Notes: GTM cost is ATL cost_function gtm (sales and marketing). CAC-O adds implementation and onboarding cost per the ATL bridge. by_cost_centre slices GTM cost by cost centre; the denominator stays the whole population of new customers, so the rows sum to CAC.

Data requirements

Grain: Monthly aggregate · Frequency: Monthly · Aggregation: aggregate (month) · Staged: no · Main source: Finance / ERP.

Field Dataset Type
cost cost_event decimal
cost_function cost_event string
customer_id revenue_event string
event_date cost_event date
event_date revenue_event date
event_type revenue_event string
Example SQL (Postgres)
SELECT (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)) AS cac

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": "CAC (Customer Acquisition Cost)" }) or generate_query({ "metric": "CAC (Customer Acquisition Cost)", "adapter": "<your adapter JSON>" }).

Benchmarks

  • SMB SaaS: $300-$1,000
  • Mid-market: $1,000-$5,000
  • Enterprise: $5,000-$50,000+
  • Target LTV:CAC ratio: 3:1 or higher (see LTV:CAC Ratio)

What It Tells You

The investment required to acquire each customer.

Common Mistakes

  • 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)

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: Fully Loaded CAC (CAC-O)

CAC-O includes all costs to make a customer productive: go-to-market spend plus implementation and onboarding. It is the full cost of turning a prospect into a customer who generates revenue. Implementation support during a trial or proof of concept is an activation cost: tag it `cost_function` = `implementation` and it counts in CAC-O and in the Activation Delta, outside the main CAC Include list.

CEL Source:
`Cost_Event`
ATL Inclusion:
`cost_function` ∈ (`gtm`, `implementation`, `onboarding`), the acquisition and activation lifecycle costs
CAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers Acquired

What it tells you: The full investment required to get a customer generating value. It is the CAC to use in unit economics.

Market Form: GTM CAC (CAC-M)

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.

CEL Source:
`Cost_Event`
ATL Inclusion:
`cost_function` = `gtm` (all sales and marketing spend, the S&M basis investors use)
CAC-M = S&M Spend / New Customers Acquired

What it tells you: The market-comparable acquisition cost used in LTV:CAC ratios and investor benchmarks.

Bridge

CAC-O = CAC-M + Implementation_Cost_per_Customer + Onboarding_Cost_per_Customer

The delta (CAC-O − CAC-M) is the **Activation Delta:** the cost of making customers productive, which S&M-based benchmarks leave out. A large Activation Delta means investor-comparable CAC understates what acquisition really costs. Implementation complexity, onboarding duration and services intensity drive it. 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. ---

Connected in the GASP relationship graph.

Upstream: what drives this

Downstream: what this drives

Try searching for:

↑↓navigate↵select