Kohorten-Retention-Analyse für Abos, Schritt für Schritt
Kohorten-Retention-Tabelle aus Abrechnungsdaten bauen: Kohorten und „aktiv“ definieren, SQL schreiben, die Kurve lesen, Fallen kleiner Kohorten meiden.
Eine monatliche Churn-Rate vermischt Kunden, die letzte Woche dazugekommen sind, mit Kunden, die seit drei Jahren dabei sind. Wenn sie sich bewegt, können Sie nicht erkennen, ob sich das Produkt geändert hat oder die Kundenmischung. Eine Kohortentabelle löst das: Sie gruppiert Kunden nach ihrem Startzeitpunkt und verfolgt jede Gruppe über die Zeit.
Dieser Ratgeber baut eine von Grund auf, von den Definitionen über das SQL bis zum Lesen des Ergebnisses. Alle Zahlen sind hypothetisch.
Schritt 1: die Kohorte definieren
Eine Kohorte ist eine Gruppe von Kunden mit demselben Startdatum. Für Abos nehmen Sie den ersten bezahlten Zeitraum, nicht das Anmeldedatum:
- Kostenlose Testphasen und Gratispläne sind kein Umsatz. Wenn Sie die Uhr bei der Anmeldung starten, vermischt sich der Abbruch in der Testphase mit der bezahlten Retention.
- Verfolgen Sie die Umwandlung von Test zu bezahlt separat (so messen Sie sie).
Gruppieren Sie für die meisten Unternehmen nach Kalendermonat. Wöchentliche Kohorten helfen, wenn Sie Hunderte neue Kunden pro Woche haben und die Wirkung einer Änderung schnell sehen wollen; Quartalskohorten helfen, wenn Sie wenige haben.
Kunden, die gehen und wiederkommen
Entscheiden Sie, ob ein zurückkehrender Kunde einer neuen Kohorte beitritt oder in seiner ursprünglichen bleibt. Die Billing-Analysen von Stripe behalten ihn in der ursprünglichen Kohorte (Stripe-Analytics-Doku, abgerufen im November 2026). Das ist ein vernünftiger Standard: Er zeigt den Umsatz der Kohorte über die Zeit ehrlich. Halten Sie die Entscheidung so oder so schriftlich fest.
Schritt 2: „aktiv“ definieren
Für jede Kohorte und jeden Monat nach dem Start brauchen Sie pro Kunde ein Ja oder Nein. Typische Regel: Der Kunde ist im Monat N aktiv, wenn er am Ende dieses Monats ein bezahltes Abo hat (oder eines in einem bezahlten Status).
Sonderfälle, die Sie klären sollten, bevor Sie eine Abfrage schreiben:
| Fall | Übliche Wahl |
|---|---|
| Überfällig, wird noch wiederholt | Aktiv, bis das Abo endet oder bis eine feste Anzahl von Tagen nach dem letzten Versuch |
| Pausiert | Nicht aktiv, aber separat markiert, damit Sie Rückkehrer aus der Pause sehen |
| Gekündigt, noch im bezahlten Zeitraum | Aktiv, bis der Zeitraum endet |
| Auf einen Gratisplan herabgestuft | Für die bezahlte Retention nicht aktiv |
| Jahresplan, mitten in der Laufzeit | Aktiv; Jahreskunden können eigentlich nur bei der Verlängerung kündigen |
Die letzte Zeile ist wichtig: Wenn Sie Monats- und Jahrespläne in einer Tabelle mischen, wirken die Monate 1 bis 11 künstlich flach. Bauen Sie getrennte Tabellen je Abrechnungsintervall.
Schritt 3: die Tabelle bauen
Nehmen Sie eine Tabelle subscription_months an, mit einer Zeile pro Kunde und Monat, in dem er aktiv war (customer_id, month). Sie können sie aus Ihren Abrechnungsdaten oder aus Webhook-Ereignissen ableiten.
with first_paid as (
select customer_id, min(month) as cohort_month
from subscription_months
group by customer_id
),
activity as (
select
f.cohort_month,
(extract(year from age(s.month, f.cohort_month)) * 12
+ extract(month from age(s.month, f.cohort_month)))::int as month_number,
s.customer_id
from subscription_months s
join first_paid f using (customer_id)
)
select
cohort_month,
month_number,
count(distinct customer_id) as active_customers
from activity
group by cohort_month, month_number
order by cohort_month, month_number;
Teilen Sie jede Zeile durch die Größe der Kohorte im Monat 0, um den Retention-Prozentsatz zu erhalten. Drehen Sie month_number in Spalten, um das vertraute Dreieck zu erhalten.
Beispiel (hypothetische Zahlen)
| Kohorte | Größe | M1 | M2 | M3 | M4 | M5 |
|---|---|---|---|---|---|---|
| Januar | 120 | 86 % | 79 % | 75 % | 73 % | 72 % |
| Februar | 140 | 84 % | 77 % | 74 % | 72 % | |
| März | 110 | 88 % | 82 % | 79 % | ||
| April | 150 | 91 % | 85 % | |||
| Mai | 130 | 90 % |
Die leeren Zellen sind nicht null. Es sind Monate, die noch nicht stattgefunden haben. Das nennt man Rechtszensierung, und über eine Spalte zu mitteln, die leere Zellen als Nullen enthält, ist ein klassischer Fehler.
Schritt 4: die Tabelle lesen
Eine Zeile entlang lesen
Eine Zeile ist das Leben einer Kohorte. Suchen Sie die Stelle, an der die Kurve abflacht. Im Beispiel verliert Januar im Monat 1 14 Punkte, dann 7, 4, 2 und 1. Der meiste Verlust kommt früh, dann pendelt sich die Kurve ein. Eine Kurve, die Monat für Monat im selben Tempo weiterfällt, bedeutet, dass das Produkt zu diesem Preis keinen stabilen Kern an Nutzern hat.
Eine Spalte hinunter lesen
Eine Spalte vergleicht Kohorten im selben Alter. Im Beispiel steigt die Retention im Monat 1 zwischen Februar und April von 84 auf 91 %. Wenn Sie im März das Onboarding geändert haben, würden Sie es hier sehen. Prüfen Sie, ob die Änderung in späteren Spalten hält, bevor Sie feiern; manchmal verschiebt eine bessere frühe Retention den Churn nur.
Die Diagonale lesen
Eine Diagonale ist ein Kalendermonat über alle Kohorten. Wenn jede Kohorte im selben Kalendermonat abfällt, suchen Sie eine externe Ursache: eine Preisänderung, einen Ausfall, ein Problem beim Zahlungsdienstleister, ein saisonales Muster.
Schritt 5: Umsatz-Retention ergänzen
Logo-Retention zählt Kunden. Umsatz-Retention verfolgt den MRR der Kohorte, der über 100 % steigen kann, wenn Kunden ausbauen.
revenue retention (cohort, month N) =
MRR in month N from customers in the cohort
÷ MRR in month 0 from the cohort
Zeigen Sie beides. Eine Kohorte mit 70 % Logo-Retention und 105 % Umsatz-Retention hat viele kleine Kunden verloren und den Rest ausgebaut. Das ist ein anderes Geschäft als eines, in dem beide Zahlen bei 85 % liegen. Siehe NRR vs. GRR für die Definitionen auf der Umsatzseite.
Schritt 6: über Kohorten zusammenfassen
Für eine einzelne Zahl „Retention im Monat N“ gewichten Sie nach Kohortengröße und nehmen nur Kohorten auf, die den Monat N erreicht haben:
weighted month-3 retention =
sum of active customers at M3 across cohorts that reached M3
÷ sum of their starting sizes
Im Beispiel haben die Kohorten Januar bis März den Monat 3 erreicht:
active at M3: 120 × 0.75 + 140 × 0.74 + 110 × 0.79 = 90 + 103.6 + 86.9 ≈ 280.5
starting size: 120 + 140 + 110 = 370
weighted month-3 retention ≈ 280.5 ÷ 370 ≈ 75.8%
Verwenden Sie in der Praxis die tatsächlichen Zahlen statt gerundeter Prozentsätze; die Nachkommastellen hier entstehen durch Rundung.
Schritt 7: nach Segment aufteilen
Die nützlichsten Kohortentabellen teilen nach etwas auf, worauf Sie reagieren können:
- Abrechnungsintervall (monatlich vs. jährlich)
- Plan oder Preisstufe
- Akquisekanal oder Anmeldequelle
- Art der Zahlungsmethode
- Ob der Kunde einen Aktivierungsmeilenstein erreicht hat (siehe Aktivierung und früher Churn)
Jede Aufteilung verkleinert die Kohorten. Behalten Sie die nächste Regel im Kopf.
Fallen
- Kleine Kohorten. Bei 20 Kunden verschiebt eine Kündigung die Retention um 5 Punkte. Zeigen Sie die Kohortengröße neben jeder Zeile oder fassen Sie zu Quartalen zusammen.
- Junge Kohorten sehen besser aus. Die Zahlen für Monat 1 der Kohorte des letzten Monats enthalten womöglich noch keine fehlgeschlagenen Zahlungen, die sich noch im Wiederholungszyklus befinden. Warten Sie, bis das Wiederholungsfenster geschlossen ist, bevor Sie die neueste Spalte lesen.
- Gemischte Intervalle. Jahrespläne lassen Monatskohorten flach aussehen. Trennen Sie sie.
- Survivorship in Segmenten. Wenn Sie nach einem Verhalten segmentieren, das Zeit braucht (zum Beispiel „hat Funktion X genutzt“), hatten Kunden, die früh gegangen sind, nie die Chance dazu. Messen Sie das Verhalten für alle innerhalb eines festen frühen Fensters, etwa der ersten 14 Tage.
- Korrelation ist keine Ursache. Ein Segment mit besserer Retention kann sich in vielen Punkten gleichzeitig unterscheiden. Testen Sie Änderungen nach Möglichkeit mit einer Kontrollgruppe.
Das mit NoChurn umsetzen
NoChurn liest Abo-Ereignisse aus Ihrem Abrechnungstool (Stripe mit einem Klick, viele andere per Connector oder REST-API) und lässt Sie eigene Kundenattribute per API senden, etwa Anmeldequelle, Plan oder Aktivierung, um zu sehen, welche mit Churn zusammenhängen (Korrelation, nicht Kausalität). Jeder Kunde erhält bei der Anmeldung und bei jeder Änderung einen Churn-Score von 0 bis 100. Um auf das zu reagieren, was eine Kohortentabelle zeigt, übernimmt es die Rückgewinnung fehlgeschlagener Zahlungen, Kündigungsflows mit einem Angebot je Grund und einem immer sichtbaren Ein-Klick-Kündigen sowie Win-back-E-Mails an Tag 30, 60 und 90. Jede Funktion ist in jedem Plan enthalten (Ihre eigene E-Mail-Domain ab 9 $), Preis nur nach MRR (Preise).