MetaGoogle AdsGA4IntermediateGuide

Attribution for Subscription Businesses: LTV vs CAC and the Payback Period Frame (2026)

The click happens once and the money arrives for months. Why first-payment ROAS misleads, why the 3:1 rule is a 2011 artifact, how to compute payback by cohort with gross margin and churn split out, and how to feed lifetime value back into Google's lifecycle goals and Meta's value signals so the platforms bid on it.

Updated September 25, 202613 min read

subscription businesses run paid media on the wrong number. the platforms report a cost per trial or a first-payment roas, the board asks for ltv to cac, and the truth lives in a cohort table nobody has connected to either. this guide is the frame that connects them: payback period by cohort, computed honestly, fed back to the platforms so they bid on it.


what subscription attribution actually is

for a one-time purchase, the conversion is the money. for a subscription, the conversion is a promise: a trial, a first payment, a signup. the money arrives over months and depends on whether the customer stays. attribution for a subscription business is therefore not "which ad drove the signup" but "which ad drove the signups that turned into customers who paid back their acquisition cost, and how fast."

three numbers describe that:

  • cac by cohort. all acquisition cost, not just media, divided by new paying customers acquired in a period, cut by channel and campaign.
  • payback period. months until cumulative gross profit from a cohort equals its cac. gross profit, not revenue: cost of delivery, payment fees, and support come out first.
  • ltv horizon. what a cohort is expected to pay over a defined horizon (12, 24, 36 months), computed from retention curves of cohorts old enough to have them.

here is what most guides get wrong: they lead with ltv to cac. ltv depends on a churn assumption that young cohorts cannot support, and the famous 3:1 target comes from david skok's 2011 saas metrics work, which also said cac should be recovered in under 12 months. skok himself notes that guideline "was written back in 2011, when it was hard to raise capital," and that longer paybacks became fundable afterward (for entrepreneurs, saas metrics 2.0). payback needs only cac and current gross profit per customer. it is the number to run media on.


the fundamental shift: the platforms will now bid on lifetime value, if you send it

before: you optimized for trial starts or first purchases because those were the events the platforms could see, and you managed ltv in a spreadsheet the platforms never saw.

after:

  • google ads customer lifecycle goals let a campaign "bid higher for new customers than existing ones," "bid higher for high value new customers than regular new customers," bid only for new customers, and on the retention side "bid higher for lapsed customers" or for high-value lapsed customers, across performance max, search, shopping, and demand gen (google ads help, about customer lifecycle goals). reporting adds a customer acquisition cost column, defined as "the ad spend allocated to new customers divided by the total of unique new customers acquired through a campaign," and new customer lifetime value adjustments (google ads help, measure your lifecycle goals campaigns).
  • meta's conversions api accepts predicted_ltv, "the predicted lifetime value of a conversion event," alongside value on any event (meta for developers, custom data parameters), and meta's incremental attribution setting is trained on its own lift tests. haus's 2025 to 2026 tests found the setting outperformed standard attribution by 1.38x for dtc-only brands (see incrementality testing).
  • offline and delayed conversions with values upload through data manager on both platforms (see enhanced conversions).

in plain english: the bidding systems can optimize toward customers who pay back, but only if the value you send is the value you actually expect, sent at the moment it becomes known.


what this broke in existing accounts

1. campaigns that got very good at finding people who start trials

optimize for trial start and the platform finds trial starters. the cheapest trial starters are the ones least likely to pay. cost per trial fell, trial-to-paid fell faster, and cac by paying customer rose while every dashboard said performance improved.

2. attribution windows shorter than the trial

a 14-day trial with a 7-day click window means the paid conversion lands outside attribution for anyone who took the full trial. the campaign that drove the conversion gets no credit; the retargeting campaign that touched them on day 13 gets all of it.

3. first-payment roas across a mixed plan menu

an annual plan pays 12 months on day one; a monthly plan pays one. roas on first payment says annual buyers are 12x better. they are not; they are 12x earlier. campaigns tuned on that number over-serve annual offers and under-serve the monthly customers who make up most of the base.

4. ltv computed from cohorts too young to know

a six-month-old cohort's "ltv" is a churn assumption wearing a number. recurly's benchmarks, updated with july 2026 data, put average monthly churn at 3.60%, split 2.34% voluntary and 1.25% involuntary, with saas at 3.22% and ecommerce at 4.25% (recurly research, churn rate benchmarks). a one-point difference in the assumed rate moves a 36-month ltv by a third.

5. involuntary churn charged to acquisition

roughly a third of that churn is failed payments, not decisions. recurly's split by revenue per customer shows involuntary churn falling from 1.30% at $10 to $25 per month to 0.18% above $250. a channel whose customers churn "more" may simply be a channel whose customers use cards that fail more. payment recovery is a billing problem; charging it to cac punishes the wrong team.

6. the 3:1 rule applied at every stage

3:1 was observed on mature public saas with stable churn and sub-12-month payback. applied to a two-year-old company with 60% of revenue from cohorts under a year old, it is a number about the assumption, not the business. reported 2025 to 2026 medians for private b2b saas cac payback sit around 16 to 20 months in benchmark roundups from benchmarkit and high alpha, which is nowhere near skok's 12, and nobody is worse for it if the capital plan supports it.

7. ios unknowns in lifecycle reporting

google's lifecycle reporting includes an "unknown" bucket for "conversions we cannot identify as new or existing due to measurement limitations on ios." accounts that read the new customer column as complete undercounted ios acquisition and over-invested in android.


the data

  • recurly, network data updated july 2026: average monthly churn 3.60% (2.34% voluntary, 1.25% involuntary); saas 3.22%, business services 3.44%, travel and entertainment 3.91%, digital media 4.14%, ecommerce 4.25%, education 4.99%; involuntary churn falls from 1.30% at $10 to $25 average revenue per customer to 0.18% above $250. (recurly research)
  • david skok, for entrepreneurs: "ltv must be at least 3x greater than cac" and "months to recover cac should be less than 12 months," with his own note that the 12-month guideline dates to 2011 and that longer paybacks became fundable once capital was available. (for entrepreneurs, saas metrics 2.0)
  • benchmark roundups citing benchmarkit's 2025 b2b saas performance metrics and high alpha's 2025 saas benchmarks put median private b2b saas cac payback at roughly 16 to 20 months, with top quartile at 6 months or less and bottom quartile above 24. self-reported survey data.
  • google ads lifecycle goals: three acquisition modes and three retention modes; reporting columns for new customers, high value new customers, customer acquisition cost, new customer lifetime value adjustment, re-engaged customers, and an unknown bucket for ios limitations. (google ads help)
  • meta conversions api: value is "required for purchase events or any events that utilize value optimization" and "must represent a monetary amount"; predicted_ltv is "the predicted lifetime value of a conversion event." (meta for developers)
  • haus, july 2025 to june 2026: meta incremental attribution outperformed standard attribution by a pooled 1.26x, 1.38x for dtc-only brands. (haus)

what changed in 2026 specifically

google's lifecycle reporting matured. a native customer acquisition cost column, high value new customer counts, and lifetime value adjustments per segment mean the cohort math can be read inside google ads for the first time, with the caveat of the ios unknown bucket.

meta's incremental attribution flipped positive. a year ago haus's tests showed it underperforming; the 2025 to 2026 tests show it winning, most strongly for dtc. for subscription brands that run meta, it is now the default to test.

data manager became the upload path. offline and delayed values (day-30 retained, day-90 gross profit) go through data manager connectors on google, and through the conversions api with subscription_id on meta. the legacy sheet paths are being retired.

unchanged: payback is still the honest number, churn still has to be split, and the platforms still cannot see a month-two retention event unless you send it.


what actually works now

1. define the event chain and pick the bidding event deliberately

trial start, first payment, month-two retention, day-90 gross profit. name each with the same event name on every platform. bid on the deepest event that reaches about 50 a week per campaign; when that is first payment, send retention events as values later rather than bidding on trials.

2. build the cohort table before touching a target

by acquisition month and by channel and campaign (joined on click id and utm, see the utm standard): customers acquired, all acquisition cost, gross profit per customer per month, cumulative gross profit, month of payback, and the retention curve. cohorts younger than six months get payback-to-date only; ltv is not computed for them.

3. compute payback with gross margin and split churn

payback months equals cac divided by monthly gross profit per customer. gross profit, not revenue. voluntary churn belongs in the retention curve; involuntary churn is tracked separately and owned by billing, with recovery rate as its metric. a channel is judged on voluntary churn and payback, not on failed cards.

4. set cac targets from the payback horizon the business can fund

decide the maximum payback the capital plan supports (12, 18, 24 months) and derive the allowed cac per channel from each channel's gross profit curve. this is the number that becomes the target cpa. it is different per channel because the cohorts are different per channel.

5. feed value back on both platforms

google: enable lifecycle goals with a first-party customer list, use new customer value or high value new customer mode, and upload day-30 and day-90 gross profit as conversion values through data manager with the click id. meta: send first payment with value, trial and subscribe events with predicted_ltv from the cohort model, renewals through the conversions api with subscription_id, and test incremental attribution against standard on a geo holdout.

6. match attribution windows to the trial

click windows at least as long as the trial plus seven days. compare campaigns on conversions by conversion time so a 14-day trial does not credit the wrong campaign.

7. report ltv to cac only on cohorts old enough to have one

six months or older, with the horizon stated (12, 24, 36 months) and the churn rate used. for everything younger, report payback-to-date against the target horizon. one slide, two numbers, no 3:1 unless the cohorts earned it.

8. re-run the cohort table monthly and re-derive targets quarterly

retention curves move with product changes and plan mix. targets set from last year's curve are set from a different product.


what to stop doing immediately

  • stop bidding on trial starts when first payment can reach 50 a week.
  • stop reporting first-payment roas across mixed annual and monthly plans.
  • stop computing ltv on cohorts under six months.
  • stop charging failed-payment churn to acquisition.
  • stop quoting 3:1 as if it were a law.
  • stop running click windows shorter than the trial.
  • stop leaving lifecycle goals and predicted_ltv unused while asking the platforms to find better customers.

the orbit agent instructions

{
  "guide": "attribution-subscription-businesses",
  "agent_tasks": {
    "audit_optimization_event_chain": {
      "check": "for each campaign, read the optimization event and its weekly volume, and map it to the chain trial start, first payment, month-two retention, day-90 value",
      "flag": "a campaign bidding on trial start while first payment exceeds 50 events a week, or campaigns using different event names for the same step across platforms",
      "recommend": "move bidding to the deepest event with 50 or more weekly events and align event names on every platform"
    },
    "build_cohort_payback_table": {
      "check": "from billing, crm, and ad platform data joined on click id and utm, build monthly acquisition cohorts by channel and campaign with customers, all acquisition cost, gross profit per customer per month, cumulative gross profit, and payback month",
      "flag": "any cohort missing gross margin inputs, any channel with more than 20 percent of customers unattributed, or payback computed on revenue instead of gross profit",
      "recommend": "fix the join keys and margin inputs first, then publish payback-to-date for cohorts under six months and full payback for older ones"
    },
    "audit_attribution_windows_vs_trial": {
      "check": "read the trial length per plan and the click and view attribution windows on every campaign, plus the reporting column used for comparisons",
      "flag": "any click window shorter than the trial length plus 7 days, or campaign comparisons made on conversions by click date for trials over 7 days",
      "recommend": "extend windows to trial length plus 7 days and compare on conversions by conversion time"
    },
    "audit_value_feedback_loops": {
      "check": "confirm google lifecycle goals are enabled with a customer list, offline value uploads run through data manager with click ids at day 30 and day 90, and meta events carry value, predicted_ltv on trial and subscribe events, and subscription_id on renewals",
      "flag": "lifecycle goals off, no offline value uploads in 30 days, predicted_ltv absent on trial or subscribe events, or renewals not sent through the conversions api",
      "recommend": "enable lifecycle goals, schedule value uploads, add predicted_ltv from the cohort model, and send renewals with subscription_id"
    },
    "audit_churn_split_by_channel": {
      "check": "for each acquisition channel, compute voluntary and involuntary churn separately from billing data over the last 6 months, with payment recovery rate",
      "flag": "involuntary churn above 1.5 points a month, recovery rate below 50 percent, or channel comparisons that combine both churn types",
      "recommend": "route involuntary churn to billing with a recovery target and judge channels on voluntary churn and payback only"
    },
    "recalibrate_cac_targets": {
      "check": "quarterly, derive allowed cac per channel from the funded payback horizon and each channel's gross profit curve, and compare with current target cpa and actual cac",
      "flag": "any channel whose actual cac implies payback beyond the funded horizon, or targets not re-derived in 90 days",
      "recommend": "propose per-channel target changes for approval and record the horizon and curve used"
    }
  }
}

the bottom line

a subscription is a promise paid over time. run media on payback by cohort, computed on gross profit with churn split, and send the values you learn back to the platforms so they bid on customers who stay.

ltv to cac is a result you report when the cohorts are old enough. payback is the number you manage every month.


built by orbit - the performance marketing intelligence layer. questions? jose@orbitllm.com