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, where

    • spend = SUM(spend) --> Ads table
    • custom_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