retention-loops
When to use
- D30 retention is flat or declining and the team cannot name a single product loop that pulls the user back — retention is treated as marketing's problem, not the product's.
- A new feature shipped but did not move retention — there is no closed loop between trigger, action, and reward, so the feature is a destination, not a habit.
- The product depends on a network effect that has not been instrumented as a loop — invites, content, or data are produced but the loop that pulls the next user back is unwritten.
Do NOT use to fix days 0–30 onboarding friction (route to
onboarding-design), classify churn causes (route to
churn-prevention), or design human-led account-expansion plays
(route to expansion-playbook).
Cognition cluster
- Mental model 14 — Meadows leverage points. A retention loop
is a feedback structure: the leverage sits in the loop's
gain (how strong the reward is) and delay (how long until
the reward lands), not in the surface UI. Pick the leverage
point — gain or delay — over surface polish. See
docs/contracts/mental-models.md § 14.
- Mental model 8 — Compounding. A loop with even small gain
per cycle compounds across cohorts; a one-time activation
bump does not. Verify which loops compound before investing
cycles into them. See
mental-models.md § 8.
- Mental model 18 — Pull vs. push. A trigger the user pulls
(intrinsic need surfaced by the product) compounds; a trigger
the vendor pushes (marketing notification firing) decays the
channel and trains the user to mute. See
mental-models.md § 18.
- Context-spine — product + customer-segment + funnel-stage.
Read the product slot for which capability can carry a loop
(a loop is only as strong as the action it routes through), the
customer-segment slot for which segments have the latent
need the loop addresses, and the funnel-stage slot for where
the loop sits relative to activation and paid. See
context-spine.
Procedure
Step 0: Inspect — name the current loops, if any
Inspect the product. For each suspected loop, write the closed
form: "<trigger> → <action> → <reward> → <trigger again>."
If the loop cannot be written closed, it is not a loop; it is a
funnel ending. Inspect whether the reward arrives quickly enough
to reinforce the action — verify the delay against the segment's
attention cycle.
Step 1: Classify each loop as single-user vs network
- Single-user loop — trigger and reward both originate from
the same user (a daily-summary email triggered by yesterday's
activity).
- Network loop — trigger or reward involves another user
(a teammate's comment, a partner's reply, a customer's reaction).
Network loops compound harder but require minimum-viable-network
density; below density they look broken. Classify before investing.
Step 2: Audit the gain and the delay per loop
For each loop:
- Gain per cycle — what observable utility does the user
receive (information, social affirmation, time saved, reduced
error)? Gain measured as the user's revealed willingness to
repeat the action.
- Delay — time from trigger to reward. A delay longer than the
segment's attention window kills the loop regardless of gain.
- Decay — does the loop weaken when the user already has the
reward? Most product loops decay; design the next loop before
the first decays.
Step 3: Pick the binding loop and isolate it
Of the loops named, pick the one whose gain × frequency × eligible
segment-size is largest. Verify the loop is intrinsic-pull, not
vendor-push: confirm the trigger originates from a user action or
state, not from a marketing schedule. A push-trigger labelled as a
loop will burn the channel.
Step 4: Design the missing step, not the missing UI
If the binding loop is broken, the broken step is almost always:
trigger missing, action too far from trigger, reward delayed,
or no path back to next trigger. Design the missing step, not
a UI tweak. UI tweaks polish a loop that already closes; they do
not close an open one.
Step 5: Hand back
Hand the loop inventory, the binding-loop selection with gain /
delay / decay, and the step-level redesign to the implementing
team and to
activation-design — activation
is the loop's first cycle, and the activation event must complete
the first cycle of the binding loop. Retention work without a named
loop is rearranging notifications.
Related Skills
WHEN to use this
- Designing or auditing product-led retention loops.
- Selecting the binding loop and redesigning its missing step.
WHEN NOT to use this
When the agent should load this
- "Why don't users come back?"
- "Design a habit loop for feature X."
- "Is this loop single-user or network?"
- "Welcher Loop tr\u00e4gt eigentlich unsere Retention?"
Output
loop-inventory.md — every named loop in closed form: trigger → action → reward → next trigger, with single-user vs network tag.
gain-delay-audit.md — per-loop gain · delay · decay · eligible-segment size · revealed repeat-rate.
binding-loop-redesign.md — selected loop, the broken step, and the redesign in step terms (not UI terms).
Gotcha
- A loop whose reward arrives outside the segment's attention window will look broken even when gain is high; delay kills loops more often than gain does.
- A network loop below minimum-viable density behaves like an open funnel; instrumenting it and designing it before density is theatre.
- "Notifications fire daily" is not a loop; it is a push schedule. A loop needs a closed return path from reward to next trigger that the user — not the vendor — closes.
Do NOT
- Do NOT invest in surface UI on a loop that does not close; the loop closes by adding a step, not polishing one.
- Do NOT instrument network loops as single-user loops; the metric will look broken until the network reaches density.
- Do NOT design more than one binding loop at a time; concurrent loop changes destroy the signal.
Runnable example
Mid-market collaboration tool, D30 retention 41 %, two suspected loops named.
- Loop inventory — (L1) user receives daily summary → opens product → reviews changes → leaves a comment → teammate notified (network). (L2) user creates a doc → bookmark surfaces in nav → user reopens (single-user).
- Gain–delay audit — L1 gain medium, delay 24 h (within attention window), decay low (network refreshes); L2 gain low, delay 0, decay high (bookmark stale within a week).
- Binding loop — L1 selected (gain × frequency × segment-size dominates). Broken step: "teammate notified" fires but does not route teammate back to the originating doc — the loop opens.
- Redesign — add teammate-return path: notification deep-links into the doc at the commented passage; verify with cohort A/B at 4-week horizon. Predicted: D30 +6 pp ± 3 pp.
- Hand-off — loop inventory + redesign → eng team; activation event redefinition (one comment + one teammate notified) handed to
activation-design.
1---2name: retention-loops3description: Use when designing product-led retention — habit formation, trigger-action-reward, network vs single-user loops. Triggers on 'why don't users come back', 'design a habit loop'.4---56# retention-loops78## When to use910- D30 retention is flat or declining and the team cannot name a single product loop that pulls the user back — retention is treated as marketing's problem, not the product's.11- A new feature shipped but did not move retention — there is no closed loop between trigger, action, and reward, so the feature is a destination, not a habit.12- The product depends on a network effect that has not been instrumented as a loop — invites, content, or data are produced but the loop that pulls the next user back is unwritten.1314Do NOT use to fix days 0–30 onboarding friction (route to15`onboarding-design`), classify churn causes (route to16`churn-prevention`), or design human-led account-expansion plays17(route to `expansion-playbook`).1819## Cognition cluster2021- **Mental model 14 — Meadows leverage points.** A retention loop22 is a feedback structure: the leverage sits in the loop's23 *gain* (how strong the reward is) and *delay* (how long until24 the reward lands), not in the surface UI. Pick the leverage25 point — gain or delay — over surface polish. See26 [`docs/contracts/mental-models.md`](../../../docs/contracts/mental-models.md) § 14.27- **Mental model 8 — Compounding.** A loop with even small gain28 per cycle compounds across cohorts; a one-time activation29 bump does not. Verify which loops compound before investing30 cycles into them. See `mental-models.md` § 8.31- **Mental model 18 — Pull vs. push.** A trigger the user pulls32 (intrinsic need surfaced by the product) compounds; a trigger33 the vendor pushes (marketing notification firing) decays the34 channel and trains the user to mute. See `mental-models.md` § 18.35- **Context-spine — product + customer-segment + funnel-stage.**36 Read the **product** slot for which capability can carry a loop37 (a loop is only as strong as the action it routes through), the38 **customer-segment** slot for which segments have the latent39 need the loop addresses, and the **funnel-stage** slot for where40 the loop sits relative to activation and paid. See41 [`context-spine`](../../../docs/contracts/context-spine.md).4243## Procedure4445### Step 0: Inspect — name the current loops, if any4647Inspect the product. For each suspected loop, write the closed48form: *"\<trigger\> → \<action\> → \<reward\> → \<trigger again\>."*49If the loop cannot be written closed, it is not a loop; it is a50funnel ending. Inspect whether the reward arrives quickly enough51to reinforce the action — verify the delay against the segment's52attention cycle.5354### Step 1: Classify each loop as single-user vs network55561. **Single-user loop** — trigger and reward both originate from57 the same user (a daily-summary email triggered by yesterday's58 activity).592. **Network loop** — trigger or reward involves another user60 (a teammate's comment, a partner's reply, a customer's reaction).6162Network loops compound harder but require minimum-viable-network63density; below density they look broken. Classify before investing.6465### Step 2: Audit the gain and the delay per loop6667For each loop:68691. **Gain per cycle** — what observable utility does the user70 receive (information, social affirmation, time saved, reduced71 error)? Gain measured as the user's revealed willingness to72 repeat the action.732. **Delay** — time from trigger to reward. A delay longer than the74 segment's attention window kills the loop regardless of gain.753. **Decay** — does the loop weaken when the user already has the76 reward? Most product loops decay; design the next loop before77 the first decays.7879### Step 3: Pick the binding loop and isolate it8081Of the loops named, pick the one whose gain × frequency × eligible82segment-size is largest. **Verify** the loop is intrinsic-pull, not83vendor-push: confirm the trigger originates from a user action or84state, not from a marketing schedule. A push-trigger labelled as a85loop will burn the channel.8687### Step 4: Design the missing step, not the missing UI8889If the binding loop is broken, the broken step is almost always:90*trigger missing*, *action too far from trigger*, *reward delayed*,91or *no path back to next trigger*. Design the missing **step**, not92a UI tweak. UI tweaks polish a loop that already closes; they do93not close an open one.9495### Step 5: Hand back9697Hand the loop inventory, the binding-loop selection with gain /98delay / decay, and the step-level redesign to the implementing99team and to100[`activation-design`](../activation-design/SKILL.md) — activation101is the loop's first cycle, and the activation event must complete102the first cycle of the binding loop. Retention work without a named103loop is rearranging notifications.104105## Related Skills106107**WHEN to use this**108109- Designing or auditing product-led retention loops.110- Selecting the binding loop and redesigning its missing step.111112**WHEN NOT to use this**113114- Days 0–30 onboarding milestones — route to115 [`onboarding-design`](../onboarding-design/SKILL.md).116- Cause-classification of churn events — route to117 [`churn-prevention`](../churn-prevention/SKILL.md).118- Human-led expansion plays — route to119 [`expansion-playbook`](../expansion-playbook/SKILL.md).120- Activation-event selection (first cycle of the binding loop) —121 route to [`activation-design`](../activation-design/SKILL.md).122123## When the agent should load this124125- "Why don't users come back?"126- "Design a habit loop for feature X."127- "Is this loop single-user or network?"128- "Welcher Loop tr\u00e4gt eigentlich unsere Retention?"129130## Output1311321. **`loop-inventory.md`** — every named loop in closed form: trigger → action → reward → next trigger, with single-user vs network tag.1332. **`gain-delay-audit.md`** — per-loop gain · delay · decay · eligible-segment size · revealed repeat-rate.1343. **`binding-loop-redesign.md`** — selected loop, the broken step, and the redesign in step terms (not UI terms).135136## Gotcha137138- A loop whose reward arrives outside the segment's attention window will look broken even when gain is high; delay kills loops more often than gain does.139- A network loop below minimum-viable density behaves like an open funnel; instrumenting it and designing it before density is theatre.140- *"Notifications fire daily"* is not a loop; it is a push schedule. A loop needs a closed return path from reward to next trigger that the user — not the vendor — closes.141142## Do NOT143144- Do NOT invest in surface UI on a loop that does not close; the loop closes by adding a step, not polishing one.145- Do NOT instrument network loops as single-user loops; the metric will look broken until the network reaches density.146- Do NOT design more than one binding loop at a time; concurrent loop changes destroy the signal.147148## Runnable example149150Mid-market collaboration tool, D30 retention 41 %, two suspected loops named.151152- Loop inventory — *(L1)* user receives daily summary → opens product → reviews changes → leaves a comment → teammate notified (network). *(L2)* user creates a doc → bookmark surfaces in nav → user reopens (single-user).153- Gain–delay audit — L1 gain medium, delay 24 h (within attention window), decay low (network refreshes); L2 gain low, delay 0, decay high (bookmark stale within a week).154- Binding loop — L1 selected (gain × frequency × segment-size dominates). Broken step: *"teammate notified"* fires but does not route teammate back to the originating doc — the loop opens.155- Redesign — add teammate-return path: notification deep-links into the doc at the commented passage; **verify** with cohort A/B at 4-week horizon. Predicted: D30 +6 pp ± 3 pp.156- Hand-off — loop inventory + redesign → eng team; activation event redefinition (one comment + one teammate notified) handed to `activation-design`.