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 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_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.
- 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