Plain-language questions
Ask for customer acquisition cost (CAC) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
KPI · Marketing
Customer acquisition cost (CAC) is all marketing and sales costs in a period divided by the number of new customers in that period. Unlike cost per acquisition, it includes staff, tools and agencies, and it only counts genuinely new customers. CAC is the basis for judging whether acquiring customers is profitable, for example relative to customer lifetime value.
(Marketing costs + sales costs) in the period ÷ number of new customers in the period
In 2025, Acme Groothandel had €180,000 in marketing costs and €240,000 in sales costs. It gained 70 new customers that year. CAC is (€180,000 + €240,000) ÷ 70 = €6,000.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A lower CAC means you win new customers more cheaply. Whether a CAC is acceptable depends on what a customer brings in: compare it with the gross margin an average customer delivers over the whole relationship. Track CAC by year and by channel, and allow for time lags: this year's spend sometimes only produces customers next year.
SQL & DAX
Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.
WITH mkt AS (
SELECT date_trunc('year', month) AS year, SUM(amount) AS cost
FROM marketing_costs GROUP BY 1),
sales AS (
SELECT date_trunc('year', p.period_month) AS year, SUM(p.gross_cost) AS cost
FROM payroll p JOIN employees e USING (employee_id)
WHERE e.department = 'Sales' GROUP BY 1),
new_customers AS (
SELECT date_trunc('year', first_order) AS year, COUNT(*) AS n
FROM (SELECT customer_id, MIN(order_date) AS first_order FROM orders GROUP BY 1) f
GROUP BY 1)
SELECT year, m.cost + COALESCE(s.cost, 0) AS acquisition_cost, n.n AS new_customers,
ROUND((m.cost + COALESCE(s.cost, 0)) / NULLIF(n.n, 0), 0) AS cac
FROM mkt m LEFT JOIN sales s USING (year) JOIN new_customers n USING (year)
ORDER BY year;New Customers =
COUNTROWS(
FILTER(
VALUES(Customers[CustomerId]),
VAR FirstOrder = CALCULATE(MIN(Sales[OrderDate]), ALL('Date'))
RETURN FirstOrder >= MIN('Date'[Date]) && FirstOrder <= MAX('Date'[Date])
)
)
CAC =
DIVIDE(
SUM(MarketingCosts[Amount]) + CALCULATE(SUM(Payroll[GrossCost]), Employees[Department] = "Sales"),
[New Customers]
)In ENABLE
Ask for customer acquisition cost (CAC) per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.
Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.
Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
Add up all marketing and sales costs for a period and divide by the number of new customers in that period. With €420,000 in costs and 70 new customers, CAC is €6,000. Decide which costs you include and keep that consistent.
CAC is all marketing and sales costs per new customer, while CPA is ad spend per conversion only. A conversion can also be an enquiry or a repeat purchase. CAC therefore gives a fuller picture of what customer acquisition really costs.
The ratio between customer lifetime value and CAC shows how much a customer brings in relative to what it cost to win them. If lifetime value is not comfortably above CAC, you earn little from new customers. Ideally, base lifetime value on margin rather than revenue.
In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.