Cohort & Retention
Customer & revenue cohorts, retention curves and lifetime-value estimates
Knowing whether your customers stick around is the difference between profitable and runaway growth, but cohort analysis normally means exporting invoices to a spreadsheet or buying an Enterprise BI add-on — work most teams never get round to. This module computes customer and revenue cohorts natively from your posted invoices. It groups every customer by their acquisition month from their first posted invoice, then builds a retention matrix showing the share still active in month 0, 1, 2 through N, plus revenue retention, net revenue retention and lifetime-value and churn estimates per cohort. Optional segmentation by salesperson or country, best- and worst-cohort detection and a pivot drill-down turn raw account.move data into actionable retention insight. Subscription, eCommerce, SaaS and growth teams get the cohort analytics they need without their data ever leaving Odoo.
Key Features
Automatic Acquisition Cohorts
action_compute reads every posted out_invoice (optionally net of out_refund), takes each commercial partner's earliest invoice month as their cohort, and tracks their activity forward — building monthly acquisition cohorts straight from account.move with no manual tagging.
Customer Retention Matrix
_write_cells produces gb.cohort.cell rows giving, for every cohort and period_index 0..N, the active_customers and a retention_pct against the cohort's base size. retention_curve returns the ordered curve per cohort or averaged across all cohorts.
Revenue Retention and NRR
Each cell stores net revenue, so revenue_retention_curve shows recurring revenue retained per cohort over time and net_revenue_retention computes NRR as the last period's revenue over period 0 — surfacing expansion or contraction, not just headcount.
LTV and Churn Estimates
_compute_summary derives avg_ltv (total revenue over cohort customers) and an overall_churn_rate from the weighted period-over-period retention drop. projected_ltv turns ARPU and churn into a forward LTV estimate for planning acquisition spend.
Optional Segmentation
segment_by slices cohorts by salesperson or customer country (taken from each customer's first invoice), and segment_breakdown aggregates origin customers and revenue per segment — so retention can be compared across teams or markets in one analysis.
Stored Snapshots with Pivot Drill-Down
Heavy aggregation runs once into stored gb.cohort.cell records (with computed cohort_label, churned and revenue_per_customer), and action_open_cells opens a pivot/list grouped by cohort plus heatmap_data for rendering — keeping the matrix fast and explorable.
Best/Worst Cohort and Thresholds
best_cohort and worst_cohort surface the months with the highest and lowest period-1 retention, while a min-revenue threshold filters out trivial invoices, so you focus analysis on meaningful customers and your strongest and weakest intakes.
One-Click Build Wizard
The gb.cohort.build.wizard sets a look-back window and periods to track, then creates and computes the analysis in a single step via _create_from_wizard — going from zero to a populated retention matrix without touching configuration.
Use Cases
Screenshots
Cohort Analyses
Build Cohorts
Retention Matrix
Why Choose This Module
Turn your posted sales invoices into customer cohorts and retention curves without exporting to a spreadsheet. Built entirely on Community accounting data (account.move), it groups customers by their acquisition month and shows how each cohort retains — in customers, in revenue, and in estimated lifetime value.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: account
- Support: support@pokutsoft.com
Update date: 2026-07-02