Retention & Lifecycle
Most of the co-founder’s signals are acquisition-biased — ASO, ads, keyword ranks, reviews. But keeping users matters as much as getting them. This capability gives the agent a retention lens on your subscription data, a churn-spike crisis mode, and a way to act on churn via gated winback campaigns.The retention lens
Each run, the agent composes aretention block from data it already collects —
no extra setup:
- Churn — latest daily churn vs the 30-day baseline (Apple ASC; RevenueCat fills in cross-platform churn when connected).
- Resubscribe rate — reactivations ÷ cancellations over 30 days.
- Trial→paid conversion.
- Churn split — voluntary cancels vs involuntary (billing retries / expiry) vs refunds. This matters: involuntary churn is a billing/dunning fix (grace periods, retry config), while voluntary churn is a value/pricing/onboarding fix. The agent treats them differently.
Churn-spike crisis mode
The retention twin of reviews crisis mode. When the latest daily churn runs well above your 30-day baseline (with an absolute floor and a minimum subscriber base so tiny numbers don’t cry wolf), the agent:- Flags a CHURN SPIKE in the briefing with the numbers and likely causes.
- Emits a
churn_spikesignal so the event orchestrator schedules a focused run. - Proposes a winback
lifecycle_campaignpaired with the concrete monetization/product fix.
asc.churn to get a root-cause
analysis of why users are leaving.
Winback campaigns (lifecycle_campaign)
A lifecycle_campaign targets a segment (churned last 30d, trial-ending,
dormant) with a subject line, draft copy, and a suggested lever (e.g. a win-back
offering, a fixed onboarding step).
Phase 1: owner brief (not an end-user blast)
The agent does not email your users directly. We don’t have churned end-users’ email addresses or their marketing consent — RevenueCat identifies customers by app-user-id, not email. So phase 1 sends you (the owner) a ready-to-run winback brief via email: the segment, why now, the lever, and draft copy you can send from your own ESP / push tool. Direct end-user email, push (OneSignal / APNs / FCM), and in-app (RevenueCat Customer Center) are deferred to phase 2 — they require a subscriber list + per-channel consent.Always gated
lifecycle_campaign is user-facing outbound messaging, so it always
requires your explicit approval — even at the highest autopilot level, and even
if you’ve added it to auto-approve types.
The loop
- Read — churn, resubscribe, churn split, trial conversion.
- Detect — a churn spike fires a
churn_spikesignal + crisis callout. - Diagnose — optionally run the Why-agent on
asc.churn. - Act (gated) — propose a winback
lifecycle_campaign; you approve; the brief lands in your inbox. - Measure — the campaign is recorded as a
retentionexperiment in memory (expected metrics: churn, active subscriptions, reactivations, MRR) and its outcome is reconciled after the measurement window.
Requirements
- Apple subscription metrics (App Store Connect connected) for churn / flows, and/or RevenueCat for cross-platform churn.
- Email configured on the server (
RESEND_API_KEY+EMAIL_FROM_ADDRESS) for the winback brief to actually send. Sends are always approval-gated.

