Retention Analysis

Cohort return-rate curves over time — D1, D7, D30, and beyond.

Overview

Retention Analysis measures what fraction of users who first performed an action (e.g., signed up) came back and performed a retention event at specified intervals (Day 1, Day 7, Day 30, etc.). It groups users into cohorts by the period they first acted and plots return rates for each cohort.

When to use retention: "Are users coming back?", "How sticky is the product?", "Show me D7 and D30 retention after signup" — any question about cohort-based return rates over time.

When NOT to use retention: If you want to identify who is currently inactive or at risk today, use churn. If you want to measure the first-value-moment rate for new users, use activation.

Configuration Reference

Prop

Type

Available Template Variables

VariableDescription
{{cohortCount}}Number of cohorts included in the analysis
{{retentionSummary}}Cohort × interval retention matrix (cohort label, size, and return rates at each interval)
{{windowPeriod}}Human-readable analysis window, e.g. "last 90 days"
{{dataAsJson}}Full structured result as JSON
{{executedAt}}ISO 8601 execution timestamp

Example

.journium/trackers/signup-retention.yml
apiVersion: journium.app/v0Beta
kind: InsightTracker
metadata:
  name: signup-retention
  displayName: Signup Retention (D1 / D7 / D30)
  description: Weekly cohort retention after signup
spec:
  type: LLM
  trigger:
    mode: automatic
    schedule: weekly
  window:
    period: last_90d
  analysis:
    type: retention
    entity: person_id
    cohortEvent: user_signed_up
    retentionEvent: session_started
    cohortPeriod: week
    intervals: [1, 7, 14, 30]
    minCohortSize: 20
    maxCohorts: 12
  llm:
    promptTemplate: |
      Analyze signup retention for {{windowPeriod}}.
      {{cohortCount}} weekly cohorts included.
      Retention matrix:
      {{retentionSummary}}
      Full data: {{dataAsJson}}
      Identify the cohorts with the best and worst D7 retention, and suggest one actionable
      improvement for early-session engagement.
    maxOutputTokens: 400

How is this guide?

Last updated on

On this page