All metrics

What is CAC payback?

CAC payback answers: for the customers a channel acquired, how many periods of margin does it take, on average, to earn back what you spent acquiring them? A channel with a low CAC but customers who rarely reorder can take longer to pay back than a channel with a higher CAC and a loyal customer base.

Formula

CAC payback = customer acquisition cost ÷ (average order contribution margin × repeat rate)

Worked example

A channel spends €8,000 in a period and acquires 40 new customers, so CAC is €8,000 ÷ 40 = €200. Those customers place orders on that channel worth €60 of contribution margin on average, and 30% of them go on to place a second order (repeat rate 0.30). Expected margin per period is €60 × 0.30 = €18. CAC payback is €200 ÷ €18 ≈ 11.1.

How Saldo Metrics computes it

canonical.v_channel_payback_period computes payback_periods per acquisition channel as cac_base ÷ (avg_order_margin_base × repeat_rate):

  • cac_base — a channel's total ad spend (spend_base, summed from v_ad_spend_enriched) divided by the number of customers whose first ever order (o.order_date = c.first_order_date) was placed on that channel.
  • avg_order_margin_base — that channel's total contribution margin (contribution_margin_base, from v_contribution_margin) across every order on the channel, divided by its order count. Not first-order margin specifically.
  • repeat_rate — the share of that channel's acquired customers who placed more than one order, ever (lifetime, not a rate per calendar period).

Two things worth knowing before reading this as literally "months": the SQL has no calendar-time dimension at all — "period" here means one expected repeat-order cycle, not a fixed span of days. And repeat_rate and avg_order_margin_base are both lifetime figures, computed once over all history rather than per cohort-month, so payback_periods is a single lifetime snapshot per channel, not a payback curve over time. canonical.v_ltv_cac_ratio computes the same cac_base alongside ltv_per_customer_base (lifetime contribution margin per acquired customer) and ltv_cac_ratio; Saldo Metrics shows that ratio next to payback for context, but it is not part of the payback_periods formula itself. As with true ROAS and contribution margin, avg_order_margin_base counts contribution margin from completed sales only — cancelled and refunded orders are excluded.

Why it matters

Two channels can show the same true ROAS while differing sharply in how fast they repay their acquisition cost — a channel that pulls in one-time bargain hunters looks fine on a single-order basis but never turns a repeat-margin engine, while a channel with a higher upfront CAC but strong repeat behavior can be the better long-term bet.

Common mistakes

  • Reading "payback periods" as calendar months. The formula has no time axis; a channel whose repeat customers reorder within a week and one whose repeat customers reorder a year later can show the same payback_periods value.
  • Comparing payback across channels with very different acquisition volumes. A channel with few acquired customers produces a noisier repeat_rate estimate.
  • Ignoring a NULL value. payback_periods is NULL when a channel has no spend, no orders, or a repeat rate of exactly zero — a channel that has never repaid, not a channel with a payback of zero.

Where you see this in the app

The "CAC Payback & LTV:CAC" widget (Marketing domain), addable to any dashboard — shows CAC, payback periods and LTV:CAC ratio per channel in one table.

Formula
customer acquisition cost ÷ (average order contribution margin × repeat rate)
How Saldo Metrics computes it
canonical.v_channel_payback_period, canonical.v_ltv_cac_ratio

Last reviewed 2026-08-12