The 8-month arc · May 2025 engagement → CTV Aug 11 2025 → Apr 2026.
The feedback loop was disconnected. The way they measured success was wrong. Acquisition strategies were hitting diminishing returns. Spend climbed +64% MoM yet new-customer CAC blew +55% and one-time CAC blew +142% - Meta CAC held flat at $138 and that was the headline they were tracking. The composed view told the truth: the system needed a strategic pivot.
Operating model reframe delivered. “It was never a Meta problem. It was a mix problem.” Audit → align → bridge. Cash-view (CFO) and accrual-view (CMO) reconciled in one operating model. Vendor measurement became a guide, not a gospel. Triangulation replaced single-source decisioning.
Phase 1 hero · Aug 11 – Oct 5 2025. Halo-forward CAC compressed from a $42.69 pre-CTV baseline to $32.58 over 8 weeks (−24%). Phase 2 (Oct – Dec, 9 weeks of holiday brand-layer cuts) drifted to $41.70. Phase 3 (Dec – Mar, 16 weeks, brand-layer restored at 40% intensity) settled at $40.20. Every week of the 33-week arc held below the pre-CTV baseline. MER trajectory aligns with brand-converted demand landing in highest-retention cohorts.
Are these the right customers?
Volume is cheap if the customers don't stick. Tracking how customers behave AFTER they land - do they convert, do they stay subscribed, do they outperform the ones who came in via discount-driven social? TV-acquired customers should retain better. If they don't, the channel is firing but the message is wrong.
orders + customers data. Daily channel aggregates can't produce cohort retention. Onboarding plan: Shopify / commerce-adapter writes order rows day 1 → 60-90d cohort window fits the model → this layer reads brand-specific within Q1 of engagement.90-day retention · TV-acquired vs paid-social cohort.
Read it like an LTV operator. Both cohorts start at 100% on acquisition day. The orange line (TV-acquired actual) decays slower than the gray dashed line (paid-social cohort counterfactual) because TV-acquired customers came in via brand-recall, not discount. By day 90 the gap is +8pp - that's 8 more customers per 100 still active, monetizing for another 90+ days at the brand's retention LTV. The blue line is the model fit; the shaded band is the range.
Cohort funnel · TV flight vs dark window
The "is it good volume?" question. Decision rule: if first-purchase / OD-to-Sub holds during flight AND cohort retention beats paid-social cohort by 5pp+, scale TV with LTV-positive confidence. If volume grows but conversion drops, fix creative + targeting before scaling - channel is working, message is wrong.
MethodologyThe LTV stack · how we read cohort behavior
Purchase-frequency model. Forecasts how often each cohort will buy over a given horizon. Foundational papers Schmittlein-Morrison-Colombo 1987 + Fader-Hardie 2005. Open-source library: lifetimes (Python) or open-source CLV module (more actively maintained 2026).
Spend-per-purchase model. Pairs with the frequency model to give expected customer lifetime value per cohort over a T-month horizon.
Churn-risk model. Lets you say "customer's churn risk doubles between month 4 and month 7" instead of just "60% still here at 90 days." Open-source library: lifelines.
Cohort-level treatment effect. Identifies which acquisition cohorts have TV-driven LTV uplift versus which don't. The board-grade sentence: "customers acquired during TV-on weeks have 23% higher 12-month CLV than TV-off weeks, controlling for cohort age." Open-source library: EconML.
The full fit runs in a Python worker once the brand provides 12+ months of transaction data. Dashboard-side lib/compute/clv-bgnbd.ts ships a simpler frequency × AOV stub for the demo.