Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Sales
  3. BambooForge RFM: Customer Segmentation & Analysis v 19.0
  4. Sales Conditions FAQ

BambooForge RFM: Customer Segmentation & Analysis

by BambooForge Labs
Odoo

$ 101.67

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 17.0 18.0 19.0
You bought this module and need support? Click here!
Versions 17.0 18.0 19.0
  • Description
  • Manifest
  • Documentation
  • License
BambooForge RFM
BambooForge RFM by BambooForge Labs · Customer Segmentation & Analysis
Odoo 19.0 License OPL-1 No Enterprise required
RFM Customer Segmentation for Odoo 19
Recency · Frequency · Monetary 11 ready-made segments Quintile scoring Write-back to contacts Pivot · Graph · Kanban Multi-company
60-second tour

See it in action

From a blank analysis to segmented customers and contact-level targeting — the whole workflow, end to end.

1-5R / F / M scores per customer
11+1segments out of the box, fully editable
2data sources: orders or invoices
0Enterprise modules needed
Stop guessing

Know exactly who to reward, nurture and win back

RFM is the proven way to rank a customer base by behaviour. This app scores every customer on how recently they bought, how often, and how much — then sorts them into segments that tell you what to do next.

RecencyHow long since their last order. Recent buyers respond best to new offers.
FrequencyHow many times they bought in the period. Frequent buyers are your loyal core.
MonetaryHow much they spent. Big spenders deserve VIP treatment and upsell.

Everything you need to act on RFM

Not a one-shot wizard. A saveable, re-runnable analysis that lives inside Odoo.

Adaptive quintile scoring

Rank-based 1-5 scores that adapt to your customer base — a "5" always means your top 20%, in any industry.

11 segments + catch-all

Champions, Loyal, Big Spenders, At Risk, Can't Lose Them, Hibernating, Lost and more — a priority matrix you can fully edit.

Orders or invoices

Score on confirmed sales orders or posted customer invoices. Credit notes correctly reduce monetary value.

Snapshots over time

Every analysis keeps its own results. Compare quarters and watch segments migrate — not just a single throwaway run.

Write-back to contacts

Segment and scores stored on each contact, so you can group, filter and target customers anywhere in the CRM.

Pivot, graph & kanban

See where revenue concentrates, value per segment, and colour-coded customer cards — all grouped by segment.

$

Multi-currency

Multi-currency orders are converted to the company currency before scoring, so totals are always comparable.

Optional auto-refresh

A built-in (disabled by default) weekly scheduled action keeps the latest analysis current with zero manual work.

Multi-company & secure

Per-company record rules and Sales-team based access. Salespeople read, managers configure.

Up and running in four steps

1

Create an analysis

Pick a reference date and how many days back to look.

2

Choose the source

Sales orders or customer invoices — your call.

3

Compute

Every customer is scored and dropped into a segment.

4

Act

Group contacts by segment and launch your campaigns.

Guided tour

Real screens, real data

Every screenshot below is the actual app running on Odoo 19 — no mockups.

RFM analysis form with results
Step 1

Configure & compute

Set a reference date, a look-back period and the data source, then click Compute. Customers are ranked instantly, with a full audit trail in the chatter.

Pivot of monetary value by segment
Step 2

See revenue by segment

The pivot groups customers by segment with monetary and frequency measures — instantly showing where your revenue actually sits.

Bar chart of value at risk by segment
Step 3

Spot what's at risk

Switch to the graph and the story jumps out — here a huge slice of revenue is sitting in At Risk, ready for a win-back campaign.

Kanban of customers grouped by segment
Step 4

Browse customers by segment

Colour-coded kanban columns, one card per customer with its RFM cell and value. Perfect for eyeballing your Champions and Big Spenders.

RFM tab on a contact
Step 5

Target from the contact

Segment and scores are written straight onto the contact. Group or filter Contacts by RFM Segment and launch your campaigns.

Configurable segment matrix
Step 6

Tune your segments

The full segment matrix is editable: ranges, priority, colours and a catch-all. Make the model fit your business, not the other way around.

The default segment model

Shipped ready to use and matched in priority order. Edit ranges, colours and priority freely.

SegmentRecencyFrequencyMonetaryPlay
Champions4-54-54-5Reward, ask for referrals
Loyal Customers3-54-53-5Upsell, loyalty perks
Big Spenders3-51-55Premium offers
Potential Loyalists4-52-32-3Membership, nurture
New Customers4-511-5Onboard, second order
At Risk1-23-53-5Win-back before they churn
Can't Lose Them14-54-5High-priority reactivation
Hibernating / Lost1-21-21-3Low-cost reactivation

Turn your sales history into your next campaign

Install in seconds. No Enterprise, no external libraries, no lock-in. Works on Odoo 19 Community and Enterprise.

Full manual included. The app ships with a complete in-app documentation page (Apps > this module > Documentation) covering setup, scoring, segment tuning, targeting and FAQs — so your team can self-serve. Questions? bambooforge.labs@gmail.com

Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Lines of code 858
Technical Name bambooforge_rfm_analysis
LicenseOPL-1

BambooForge RFM: Customer Segmentation

Turn raw sales history into actionable customer segments for Odoo 17. This app scores every customer on Recency, Frequency and Monetary value, drops them into named segments (Champions, Loyal, At Risk, Lost...), keeps a snapshot of every run so you can watch segments move over time, and writes the result back onto each contact so you can filter and target them anywhere in the CRM.

This page is the complete manual. Follow it top to bottom and you can install, run your first analysis, read the results, tune the segments, automate refreshes and fix the common issues without contacting support.

  • Overview
  • Requirements
  • Installation
  • Quick start
  • Reading the results
  • How scoring works
  • Tuning your segments
  • Targeting customers from segments
  • Automating refreshes
  • Frequently asked questions
  • Support
  • Usage
  • Upgrading & version compatibility
  • Uninstallation
  • Changelog

Overview

RFM is the classic, battle-tested model for ranking a customer base by behaviour instead of guesswork:

  • Recency — how long ago the customer last bought. Recent buyers respond best to new offers.
  • Frequency — how often they buy in the period. Frequent buyers are loyal.
  • Monetary — how much they spent in the period. Big spenders deserve VIP treatment.

Each customer gets a 1-5 score on every dimension (1 = worst, 5 = best). The three scores place them into a segment, which tells you what to do next — reward, nurture, win back or let go.

The app gives you:

  • RFM Analyses — a saved run for a reference date, period and data source. Re-runnable; each keeps its own snapshot of results.
  • Quintile scoring — rank-based 1-5 scoring that adapts to your own customer base instead of fixed thresholds that only fit one company.
  • Configurable segments — a priority-ordered matrix of score ranges, fully editable, shipped with a sensible 11-segment default plus a catch-all.
  • Write-back to contacts — segment and scores stored on res.partner so you can group, filter and build targeted lists across Odoo.
  • Pivot, graph and kanban views of the results, grouped by segment.
  • Optional weekly cron to keep the latest analysis fresh automatically.

Requirements

  • Odoo 17.0.
  • The Sales app (sale). Installing this app pulls it in automatically.

No Enterprise modules and no external Python libraries are required.

Installation

  1. Copy bambooforge_rfm_analysis into your addons path.
  2. Update the apps list (Apps > Update Apps List).
  3. Search for RFM and click Install.

A new top-level RFM menu appears, and an RFM Analysis entry is added under Sales > Reporting.

Quick start

  1. Open RFM > Analyses and click New.
  2. Set the Reference Date (recency is measured backwards from here — usually today) and the Period (days) to look back over (365 is a good default).
  3. Choose Based On:
    • Sales Orders — confirmed sale orders (state "Sales Order").
    • Customer Invoices — posted customer invoices, net of credit notes.
  4. Leave Write Back to Contacts ticked if you want the segment stored on each contact.
  5. Click Compute.

The analysis switches to Computed, the Customers stat button fills in, and the Results tab lists every customer with their scores and segment.

Reading the results

Open an analysis and use the Customers stat button, or go to RFM > Customers for the full analytical views:

  • Pivot — segments down the side, monetary and frequency as measures. This is your "where is my revenue concentrated" view.
  • Graph — monetary value per segment at a glance.
  • Kanban — one card per customer, grouped by segment and colour-coded.
  • List — every score in a sortable table; sort by RFM Score to find your best customers instantly.

Each result row shows:

  • Recency (days) — days since the last transaction.
  • Frequency — number of transactions in the period.
  • Monetary — total value in the company currency.
  • R / F / M — the 1-5 scores.
  • RFM Cell — the three scores joined, e.g. 5-4-5.
  • RFM Score — the sum (3 to 15); a quick single-number ranking.

How scoring works

Scores are quintiles: customers are ranked on each dimension and split into five equal groups. The best fifth scores 5, the worst fifth scores 1.

  • For Frequency and Monetary, higher values score higher.
  • For Recency, a smaller number of days (more recent) scores higher.

Because scoring is rank-based, it adapts to your business — a "5" always means "top 20% of your customers", whether you sell coffee or combine harvesters.

Multi-currency sales orders are converted to the company currency at the order date before being summed. Invoice-based analyses use the company-currency signed totals directly, so credit notes correctly reduce a customer's monetary value.

Tuning your segments

Go to RFM > Configuration > Segments. Each segment defines an inclusive range (1-5) for R, F and M. A customer is placed in the first segment (top to bottom by sequence) whose three ranges all contain their scores — so order matters. Drag the handle to reorder.

Tips:

  • Keep exactly one catch-all segment (the Others segment, with Catch-all ticked). It matches anything the specific segments missed, guaranteeing every customer lands somewhere.
  • Put your most specific / highest-value segments at the top.
  • The score-range constraint enforces 1 <= min <= max <= 5; you cannot save an invalid range.
  • Use the Customers stat button on a segment to jump to the contacts currently in it.

Targeting customers from segments

When Write Back to Contacts is on, every contact gets an RFM tab showing its segment, cell and scores, plus filterable fields. In any Contacts list:

  1. Group by RFM Segment (search panel > Group By > RFM Segment).
  2. Select a segment such as At Risk or Champions.
  3. Act on the selection — add to a mailing list, launch an activity, export, etc.

Because the data lives on res.partner, it is available to mailing lists, automated actions, server actions and your own reports.

Automating refreshes

A scheduled action RFM: Recompute Latest Analysis ships disabled. Enable it under Settings > Technical > Scheduled Actions to recompute the most recent computed analysis per company on a schedule (weekly by default). Each run moves the reference date forward to today, so contacts stay current with no manual work.

Frequently asked questions

A customer is missing from the results.
Only customers with at least one qualifying transaction inside the period appear. Check the reference date, the period length, and the data source (orders vs invoices). Draft orders and unposted invoices are ignored.
Scores look off for a tiny customer base.
Quintiles need spread to be meaningful. With only a handful of customers the five buckets are coarse by definition — the model is designed for dozens or more customers.
Can I score on something other than orders or invoices?
Out of the box it is sales orders or customer invoices. The data-collection step is isolated in one method, making custom sources straightforward for a developer.
Does it work with multiple companies?
Yes. Each analysis is scoped to one company and record rules keep results separated per company.
Will recomputing lose my history?
Recomputing replaces the lines of that analysis. Keep separate analyses (e.g. one per quarter) to retain historical snapshots and compare segment movement over time.

Support

Questions or ideas: bambooforge.labs@gmail.com.

Usage

Running an analysis

Open RFM > Analyses and click New. Fill in the run parameters:

  • Reference Date — recency is measured backwards from this date and any transaction after it is ignored. Leave it on today for a current picture.
  • Period (days) — the look-back window. Only transactions within this many days before the reference date are counted (365 by default).
  • Based On — Sales Orders counts confirmed orders (state "Sales Order"); Customer Invoices counts posted customer invoices and nets credit notes out against them.
  • Write Back to Contacts — when ticked, the resulting segment and R/F/M scores are stored on each res.partner for filtering and targeting.

Click Compute. The record moves to the Computed state, the Customers count and Total Monetary fill in, the Results tab lists every scored customer, and the chatter logs how many customers were processed. Click Compute again at any time to refresh a run; Reset to Draft clears its results. At least one segment must exist (the shipped catch-all is enough) or the compute stops with an explanatory error.

Reading the results

From an analysis, use the Customers stat button, or open RFM > Customers, to reach the result views (pivot, graph, list and kanban), grouped by segment by default. Each result row carries:

  • Recency (days) — days since the customer's last transaction.
  • Frequency — number of transactions in the period.
  • Monetary — total value in the company currency.
  • R / F / M — the individual 1-5 scores (5 = best).
  • RFM Cell — the three scores joined, e.g. 5-4-5.
  • RFM Score — the sum of R, F and M (3 to 15) for one-number ranking.

Scores are quintiles: customers are ranked on each dimension and split into five equal groups, so a "5" always means the top 20% of your customer base. More recent buying scores higher on Recency; higher counts and higher spend score higher on Frequency and Monetary.

Working with segments

The R/F/M scores place each customer in a segment. Review the segment matrix at RFM > Configuration > Segments (managers only). A customer lands in the first segment, top to bottom by sequence, whose R, F and M ranges all contain their scores; the Others catch-all guarantees everyone is placed. Drag the handle to reorder priority and edit the inclusive 1-5 ranges as needed. Use a segment's Customers button to open the contacts currently in it.

Eleven segments ship ready to use: Champions, Loyal Customers, Big Spenders, Potential Loyalists, New Customers, Promising, Needs Attention, At Risk, Can't Lose Them, Hibernating and Lost, plus the Others catch-all.

A worked example

A customer with three orders in the last month, the most recent yesterday and a high total spend is ranked in the top fifth on all three dimensions. Their scores come out as R=5, F=5, M=5, giving an RFM Cell of 5-5-5 and an RFM Score of 15. That matches the Champions range (R 4-5, F 4-5, M 4-5), so they are tagged Champions and, with write-back on, their contact record shows it too.

Targeting from contacts

With write-back enabled, each contact gains an RFM tab showing its segment, cell and scores. In any Contacts list, group by RFM Segment, pick a segment such as At Risk or Champions, and act on the selection — add to a mailing list, schedule an activity, export or feed an automated action.

Automating refreshes

The scheduled action RFM: Recompute Latest Analysis ships disabled. Enable it under Settings > Technical > Scheduled Actions to recompute the most recent computed analysis per company on a schedule (weekly by default); each run advances the reference date to today so contacts stay current automatically.

Upgrading & version compatibility

This build targets Odoo 19.0. Each Odoo major series (17.0, 18.0, 19.0) has its own dedicated build of this module — always install the build that matches your Odoo version. Mixing a build with a different Odoo series is not supported.

Patch upgrades (same series, e.g. 19.0.1.0.0 → later)

  1. Back up your database and filestore first.

  2. Replace the module folder with the newer build.

  3. Restart Odoo with the module updated:

    ./odoo-bin -c your.conf -u bambooforge_rfm_analysis -d your_db
    
  4. Odoo applies any schema/data changes automatically. Your existing records and configuration are preserved.

Cross-version migration (e.g. Odoo 17 → 18)

Upgrading Odoo itself is a database migration handled by Odoo's standard upgrade tooling. When you migrate the database to the next Odoo series, install the matching build of this module for that series. Data created by this module carries over with the database migration.

After any upgrade the module's scheduled actions resume on their normal cadence — no manual re-activation is required.

Uninstallation

You can remove this module at any time from Apps → (this module) → Uninstall, or from the command line. Uninstalling is clean and reversible by reinstalling — but note what is and is not deleted.

What is removed

  • The module's own tables and every record in them (3 models, prefixed rfm.*) — this is the data this module created.
  • The menus, actions, views and reports this module installed.
  • Its scheduled actions (cron jobs) — they stop immediately on uninstall.

What is preserved

  • Your standard Odoo data (partners, products, sales, invoices, inventory moves) is not deleted — this module only reads and annotates it; the underlying records stay.
  • Attachments and chatter messages on standard records are kept.

As always, take a database backup before uninstalling in production.

Changelog

19.0.1.0.0

Current release for Odoo 19.0. This build includes:

  • RFM (Recency, Frequency, Monetary) customer segmentation with scoring, auto-segments (Champions, At Risk, Lost...), snapshots over time and write-back to contacts for targeting.

Feature additions and fixes ship as new builds on the Odoo Apps store; this page and the module's version reflect the current published release. Always keep the build matched to your Odoo series (see Upgrading & version compatibility).

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

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with