Blended CPA
blended_cpa
Overview
Blended Cost per Acquisition (Blended CPA) calculates the average advertising cost to acquire a single order with revenue greater than zero (paying customer).
Blended CPA = Blended Ad Spend ÷ Non-Zero Orders
The calculation is based on data in the Blended Stats table.
Detailed Breakdown
The formula above is derived from the following components:
-
Blended Ad Spend =
spend + custom_ad_spend
, wherespend
=SUM(spend)
--> Ads tablecustom_ad_spend
=SUM(IF(is_ad_spend, amount, 0))
--> Custom Spend table
-
Orders > $0 =
SUM(orders_with_amount)
orders_with_amount
=SUM(IF(order_revenue > 0, 1, 0))
--> Orders table
Insights and Actions
Blended Cost per Acquisition (Blended CPA) offers insights into the cost-effectiveness of acquiring paying customers, helping you evaluate the efficiency of your ad spend.
- Monitor Acquisition Efficiency: Use Blended CPA to determine how effectively your ad spend translates into paying customers. High CPA may signal inefficiencies in targeting or campaign strategy.
- Compare Channel Performance: Evaluate CPA across marketing channels to identify the most cost-effective platforms for driving orders.
- Optimize Campaign Budgeting: If CPA is high, experiment with reallocating budget to campaigns or channels with lower CPA to maximize ROI.
Related Metrics
- Blended ROAS: Helps contextualize CPA by showing revenue generated relative to ad spend, offering a complete profitability picture.
- Non-Zero Orders: Tracks the total paying orders, providing context for the denominator in the CPA calculation.
- NCPA: Complements CPA by focusing specifically on the cost to acquire new customers, providing additional granularity for acquisition analysis.
Example Use
Prompt
What's my Blended CPA for yesterday?
Response

Query
SELECT
COALESCE(
SUM(bst.spend) / NULLIF(SUM(bst.orders_with_amount), 0),
0
) AS blended_cpa
FROM
blended_stats_tvf (include_amazon = TRUE) AS bst
WHERE
bst.event_date = CURRENT_DATE() - INTERVAL 1 DAY
Updated about 1 month ago