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 fromv_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, fromv_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 orders, and orders refunded in full, 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_periodsvalue. - Comparing payback across channels with very different acquisition volumes. A
channel with few acquired customers produces a noisier
repeat_rateestimate. - Ignoring a
NULLvalue.payback_periodsisNULLwhen 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.