Skip to main content

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 a retention 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.
The block is code-computed (not guessed by the LLM) and written onto every report. You see it on the co-founder hub (a Retention panel) and on each report’s Retention section — with a churn-spike banner when one fires.

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:
  1. Flags a CHURN SPIKE in the briefing with the numbers and likely causes.
  2. Emits a churn_spike signal so the event orchestrator schedules a focused run.
  3. Proposes a winback lifecycle_campaign paired with the concrete monetization/product fix.
You can also run the Why-agent on 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

  1. Read — churn, resubscribe, churn split, trial conversion.
  2. Detect — a churn spike fires a churn_spike signal + crisis callout.
  3. Diagnose — optionally run the Why-agent on asc.churn.
  4. Act (gated) — propose a winback lifecycle_campaign; you approve; the brief lands in your inbox.
  5. Measure — the campaign is recorded as a retention experiment 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.