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 periodCAC-O = Total Cost (Acquisition + Activation lifecycle) / New Customers AcquiredCAC-M = S&M Spend / New Customers AcquiredCAC-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 percost_centrevalue, 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. ---
Related Metrics
Connected in the GASP relationship graph.
Upstream: what drives this
- Marketing CAC drives CAC (Marketing)
- New Customers component of CAC (Core)
Downstream: what this drives
- CAC component of CAC Payback Period (Core)
- CAC component of LTV:CAC Ratio (Core)
- CAC measures Customer (Entity)
- CAC measures Subscription (Entity)