Customer Renewal & Churn
Renewal pipeline for contracts and subscriptions with churn-risk scoring
Renewals slip through the cracks when nobody owns a pipeline for them: a contract's end date arrives, the customer is not contacted in time, and the account quietly churns, taking recurring revenue with it. Account-management, customer-success and sales teams in subscription and contract businesses feel this loss every quarter. This module gives sales a dedicated gb.renewal pipeline where every renewable contract becomes an opportunity with a stage, owner, renewal value and an explainable, automatically-computed churn-risk score.
Key Features
Dedicated Renewal Pipeline
Each gb.renewal record carries term dates, renewal_date, renewal_value, an owner and a configurable gb.renewal.stage flowing Upcoming, Contacted, Negotiating, Renewed and Lost. Stages mark is_won/is_lost and a baseline probability, giving renewals their own kanban pipeline instead of getting lost in the sales funnel.
Weighted Churn-Risk Engine
_compute_risk blends four configurable signals: renewal urgency (days_to_renewal ramp), open ticket pressure, order recency and overdue invoice amount, each weighted by an ir.config_parameter. The result is a stored 0-100 risk_score banded Low/Medium/High, so teams instantly see which accounts are most likely to churn.
Explainable Risk Breakdown
get_risk_breakdown returns each signal's exact point contribution, and action_show_risk_breakdown posts it to the chatter as a readable note. A CSM sees why a renewal is risky, not just the headline number, making the score trustworthy and actionable.
Engagement-Aware Scoring
Logged gb.renewal.touchpoint records (call, email, meeting, note with outcome) feed an engagement_score based on recency, volume and outcomes. Active engagement subtracts up to 20 risk points, so a renewal being worked properly correctly reads as lower risk than a silent one.
Probability-Weighted Forecast
_compute_probability discounts each stage's baseline by the risk score to produce renewal_probability and expected_value. get_pipeline_forecast aggregates total value, expected value and value-at-risk by band, giving managers the headline numbers for the renewal board and accurate revenue forecasting.
Bulk Renewal Generation
The gb.renewal.generate.wizard scans confirmed sale orders placed around one term length ago, deriving a renewal date and value from each and skipping orders that already have a renewal. It seeds an entire renewal pipeline from existing recurring orders in one click.
Daily Risk Refresh & Nudge
An ir.cron runs cron_refresh_risk daily, recomputing days-to-renewal, overdue, recency and risk on all open renewals. High-risk renewals within 30 days automatically get a to-do activity scheduled on their owner, so imminent churn risks are never missed.
Customer Roll-Up & Analysis
res.partner gains gb_renewal_value_at_risk and gb_max_renewal_risk, while the gb.renewal.report SQL view powers pivot and graph analysis by month, stage, owner and band. Account managers see at-risk value per customer and slice the whole pipeline for reporting.
Use Cases
Screenshots
Renewals
Generate Renewals
Renewal Analysis
Renewal Stages
Why Choose This Module
Renewals slip through the cracks when nobody owns a pipeline for them: a contract's end date arrives, the customer isn't contacted in time, and the account quietly churns. This module gives sales a dedicated renewal pipeline — every renewable contract becomes a renewal opportunity with a stage, an owner, a renewal value and an automatically-computed churn-risk score.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: sale_management
- Support: support@pokutsoft.com
Update date: 2026-07-02
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Sales (sale_management)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 1156 |
| Technical Name |
gb_customer_renewal_churn_risk_board |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module