GASP
Marketing Efficiency Metrics Efficiency

CAC by Channel

CAC by Channel: Customer acquisition cost broken down by marketing channel.

Also known as: CAC

Formula

Channel CAC = Channel ad spend / Deals won in period via channel

Computable definition

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

sum(field.ad_spend) / count_distinct(field.opportunity_id where field.opportunity_stage = 'closed_won' and in_period(field.close_date))

Unit: currency

Breakdowns

  • Reported with one row per channel value

Notes: Reported per marketing channel. Spend is campaign ad spend, which carries its channel, rather than the cost ledger: cost_event rows have a cost function but no channel, so ledger cost cannot be split by channel. New customers are opportunities won in the period, attributed to their first-touch channel.

Data requirements

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

Field Dataset Type
ad_spend campaign decimal
channel campaign string
channel opportunity string
close_date opportunity date
opportunity_id opportunity string
opportunity_stage opportunity string
period_start campaign date
snapshot_date opportunity date
Example SQL (Postgres)
SELECT _d.channel AS channel, (CAST((SELECT COALESCE(SUM(ad_spend), 0) FROM campaign WHERE period_start >= :period_start AND period_start <= :period_end AND channel = _d.channel) AS DOUBLE PRECISION) / NULLIF((SELECT COUNT(DISTINCT opportunity_id) FROM opportunity WHERE snapshot_date = :period_end AND (opportunity_stage = 'closed_won' AND (close_date >= :period_start AND close_date <= :period_end)) AND channel = _d.channel), 0)) AS cac_by_channel
FROM (SELECT 'paid_ads' AS channel UNION ALL SELECT 'organic_search' AS channel UNION ALL SELECT 'email' AS channel UNION ALL SELECT 'events' AS channel UNION ALL SELECT 'content' AS channel UNION ALL SELECT 'referral' AS channel UNION ALL SELECT 'marketplace' AS channel UNION ALL SELECT 'direct' AS channel UNION ALL SELECT 'other' AS channel) _d

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

What It Tells You

Which channels are most efficient.

Try searching for:

↑↓navigate↵select