Analyse RFM pour marchands : comprendre vos clients sans être analyste de données
Vous possédez déjà tout ce qu’il faut pour connaître vos clients bien mieux qu’aujourd’hui. Ces informations sont dans votre base de données PrestaShop, là, maintenant : chaque commande, chaque date, chaque total. Le problème, c’est que le back-office vous les présente comme une longue liste indifférenciée ; à première vue, un client qui a dépensé €4,000 sur trente commandes ressemble donc exactement à quelqu’un qui a acheté un seul article à €19 il y a deux ans et n’est jamais revenu. L’analyse RFM est le moyen le moins coûteux et le plus rapide de distinguer ces deux profils, et, une fois que vous le pouvez, vous cessez de consacrer le même effort marketing aux deux. Pas besoin d’être analyste de données, de plateforme coûteuse ni d’apprentissage automatique. Trois colonnes de données que vous avez déjà.
Ce guide porte précisément sur la méthode RFM : ce qu’elle mesure, comment la calculer directement à partir des propres tables de PrestaShop et comment transformer les scores obtenus en segments que vous pouvez réellement activer en marketing. RFM est une méthode pour classer vos clients. Deux sujets voisins s’appuient dessus : la pratique plus large qui consiste à traiter différemment les différents groupes est abordée dans la segmentation client, et le chiffre unique qui devrait sous-tendre tout votre budget marketing se trouve dans la valeur vie client. Cet article reste concentré sur la mécanique de la méthode RFM elle-même.
Ce que mesure réellement la méthode RFM
La méthode RFM attribue un score à chaque client selon trois dimensions indépendantes, chacune pouvant être déterminée uniquement à partir de son historique de commandes :
- Récence, le temps écoulé depuis la dernière commande. Un client qui a acheté la semaine dernière est encore chaud ; un client qui a acheté il y a onze mois est en train de s’éloigner, que vous l’ayez remarqué ou non. La récence est le meilleur indicateur de la probabilité qu’une personne achète à nouveau, c’est pourquoi elle vient en premier.
- Fréquence, le nombre de commandes passées. Une commande, c’est une transaction ; dix commandes, c’est une habitude. La fréquence distingue les personnes qui ont acheté par occasion de celles qui vous ont choisi comme réflexe.
- Valeur monétaire, le montant dépensé. Un client dont le panier moyen est de €200 mérite un niveau d’investissement différent d’un client dont le panier moyen est de €15. La valeur monétaire indique le budget marketing que chaque relation peut justifier.
Et alors ? Prise seule, chacune de ces dimensions peut induire en erreur. Un gros dépensier silencieux depuis un an n’est pas un champion : c’est un problème. Un acheteur fréquent avec un tout petit panier est fidèle, mais faiblement rentable. C’est le croisement des trois scores qui transforme une liste client plate en carte lisible : qui mérite d’être récompensé, qui doit être reconquis, et qui ne vaut pas l’effort.
Où se trouvent les données dans PrestaShop

Vous n’avez pas besoin d’un outil d’export ni d’un module complémentaire pour commencer. Tout ce dont RFM a besoin se trouve dans deux tables natives :
ps_orderscontientid_customer,date_add(l’horodatage de la commande),total_paid_real(ce qui a réellement été encaissé) etvalid, oùvalid = 1marque les commandes que PrestaShop considère comme valides pour les statistiques ; vérifiez votre configuration des états de commande.ps_customercontient le nom et l’adresse e-mail dont vous aurez ensuite besoin pour agir sur un segment.
Une décision compte avant de lancer quoi que ce soit : ne compter que les commandes valides. Si vous additionnez total_paid_real sur toutes les lignes de ps_orders, vous incluez des commandes créées mais non valides, par exemple annulées, en erreur ou en attente de paiement, et vos scores monétaires deviennent fictifs. Filtrer sur valid = 1 (ou limiter aux états de commande que vous considérez comme de « l’argent réellement encaissé ») fait toute la différence entre une analyse utile et une analyse trompeuse.
Si vous préférez ne pas toucher du tout au SQL, le back-office vous donne les ingrédients bruts dans Clients → Clients, et la fiche détaillée de chaque client (ainsi que la vue Statistiques → Meilleurs clients) affiche le nombre de commandes et le montant total dépensé. C’est suffisant pour repérer à l’œil votre premier niveau de clients, mais cela ne passera pas à l’échelle au-delà de quelques dizaines de clients et ne calculera pas la récence pour vous, c’est précisément pourquoi l’approche par requête ci-dessous vaut ces cinq minutes.
Calculer les valeurs brutes avec une seule requête
Exécutez ceci sur votre base de données (phpMyAdmin, Adminer ou la console SQL de votre hébergeur). La requête produit une ligne par client avec les trois données RFM brutes, jours depuis la dernière commande, nombre de commandes valides et dépense totale, prêtes à être scorées. Remplacez le préfixe ps_ si le vôtre est différent (il est défini par _DB_PREFIX_, dans PrestaShop 1.6, il se trouve dans config/settings.inc.php, et dans les versions 1.7/8/9 dans app/config/parameters.php) :
| Ce que vous voulez obtenir | Comment c’est dérivé de ps_orders |
|---|---|
| Récence (R) | DATEDIFF(NOW(), MAX(date_add)) par id_customer, nombre de jours depuis la commande valide la plus récente |
| Fréquence (F) | COUNT(id_order) lorsque valid = 1 |
| Valeur monétaire (M) | SUM(total_paid_real) (utilisez le total pour la valeur vie, ou AVG pour la taille du panier, choisissez une logique et gardez-la) |
Une version fonctionnelle, groupée par client et filtrée sur les commandes valides :
SELECT id_customer, DATEDIFF(NOW(), MAX(date_add)) AS recency_days, COUNT(id_order) AS frequency, SUM(total_paid_real) AS monetary
FROM ps_orders
WHERE valid = 1
GROUP BY id_customer
ORDER BY monetary DESC;
Exportez ce résultat vers un tableur et toute votre base client se retrouve sur trois axes. Pas de science des données, un GROUP BY et un bouton de téléchargement.
Transformer les valeurs brutes en scores 1–5
Les valeurs brutes ne sont pas comparables entre les trois dimensions, « 412 jours », « €1,800 » et « 7 commandes » ne veulent rien dire côte à côte. La solution consiste à classer chaque dimension en quintiles (cinq groupes de taille égale) et à attribuer un score de 1 à 5 :
- Récence : les 20 % de clients les plus récents obtiennent 5, les 20 % les plus inactifs obtiennent 1. (Notez l’inversion, un nombre de jours faible depuis la dernière commande signifie un score de récence élevé.)
- Fréquence et valeur monétaire : les 20 % les plus élevés en nombre de commandes et en montant dépensé obtiennent 5, les 20 % les plus bas obtiennent 1.
Dans un tableur, cela revient à une formule par colonne. Avec votre recency_days en colonne B, =MAX(1,MIN(5,6-CEILING(MAX(PERCENTRANK($B$2:$B$10000,B2),0.000001)*5,1))) transforme chaque valeur en score de récence 1–5 (le 6- gère l’inversion, et le verrouillage MAX/MIN maintient chaque résultat dans la plage 1–5) ; supprimez le 6- pour la fréquence et la valeur monétaire, tout en conservant le même verrouillage MAX(1,MIN(5,…)) afin que ces scores restent eux aussi dans la plage 1–5. Le résultat est un code à trois chiffres par client. Un 555 est votre meilleur client actif, un 111 est pratiquement perdu.
Les quintiles comptent parce qu’ils sont relatifs à votre propre boutique. Il n’existe pas de récence « bonne » universelle ; un champion d’un abonnement café achète tous les mois, un champion de mobilier de bureau achète tous les quelques années. Scorer vos clients par rapport à votre propre distribution permet à la méthode de s’auto-calibrer sur ce que vous vendez réellement.
Les segments qui comptent vraiment
5×5×5 donne 125 codes possibles. Vous n’avez pas besoin de 125 plans marketing, c’est le piège classique qui transforme la méthode RFM en projet qui ne sort jamais. Regroupez-les en quelques segments pour lesquels vous pouvez écrire une vraie campagne :
| Segment | Profil RFM approximatif | Ce qu’ils vous disent | Ce qu’il faut faire |
|---|---|---|---|
| Champions | R 5, F 4–5, M 4–5 | Récents, fréquents, forte dépense, vos meilleures relations | Récompenser, pas brader. Accès anticipé, vrai remerciement, traitement VIP. Ce sont aussi vos meilleures sources de recommandations et d’avis. |
| Fidèles | R 3–4, F 4–5, M 3–5 | Achètent souvent, même si les paniers ne sont pas toujours les plus élevés ni les plus récents | Entretenir l’habitude. Recommandations personnalisées, rappels de réassort, contact régulier. |
| Récents / nouveaux | R 4–5, F 1 | Viennent d’effectuer un premier achat. La relation est fragile | Les accompagner vers la deuxième commande. Une séquence de bienvenue et une raison de revenir ; le passage du premier au deuxième achat est la conversion la plus difficile et la plus précieuse que vous aurez à obtenir. |
| À risque | R 2–3, F 3–5, M 3–5 | Étaient précieux, ralentissent maintenant, le segment le plus coûteux à ignorer | Les reconquérir tant qu’il reste une relation à sauver. « Vous nous manquez », une vraie incitation ou une simple demande de retour. |
| Perdus | R 1, F 1–2 | Partis depuis longtemps et jamais fréquents | Une tentative de reconquête à faible coût. S’ils restent silencieux, arrêtez les e-mails, envoyer des messages à des adresses mortes dégrade discrètement votre délivrabilité pour tous les autres. |
Remarquez la priorité : le segment À risque est celui où RFM justifie vraiment son effort. Ce sont des personnes qui ont déjà prouvé qu’elles pouvaient dépenser chez vous, repérées au moment où elles s’éloignent. En récupérer une coûte une fraction de ce que coûte l’acquisition d’un inconnu, c’est tout l’argument d’une stratégie de fidélisation délibérée.
Transformer un segment en action dans PrestaShop
Un score ne vaut rien tant qu’il ne change pas ce que vous envoyez. Une fois que vous avez une liste de valeurs id_customer pour un segment, trois voies pratiques s’offrent à vous :
- Groupes de clients. Créez un groupe dans Clients → Groupes, par exemple « Champions », et affectez-y vos clients les mieux scorés. Les groupes sont des objets de premier rang dans PrestaShop : vous pouvez leur associer des règles de prix catalogue (Catalogue → Réductions → Règles de prix catalogue), limiter un bon de réduction à un groupe ou afficher des prix spécifiques au groupe. C’est ainsi que vous offrez un accès anticipé aux Champions ou une remise permanente aux clients fidèles, sans travail manuel à chaque fois.
- Règles panier / bons de réduction. Dans Catalogue → Réductions → Règles panier, vous pouvez limiter un bon à un client ou à un groupe précis, définir un plafond d’utilisation et l’encadrer par des dates, le mécanisme naturel pour un code de reconquête destiné aux clients à risque ou un avantage réservé aux Champions.
- E-mail et publicité. Exportez les adresses e-mail du segment et chargez-les comme liste ou audience personnalisée. Envoyez au groupe À risque une campagne de reconquête, au groupe Récent une séquence d’accompagnement, aux Champions un aperçu exclusif, et créez une audience similaire à partir de vos Champions pour trouver davantage de personnes qui ressemblent à vos meilleurs clients. Les messages par segment surpassent systématiquement l’envoi unique à toute la liste.
Ce que vous envoyez après la commande fait partie de la même mécanique. Une solide expérience post-achat est précisément ce qui pousse un client récent vers la colonne des clients fidèles.
À quelle fréquence recalculer, et pourquoi ce n’est pas « une fois pour toutes »
RFM est une photographie, et les clients passent constamment d’un segment à l’autre. Un Champion qui reste silencieux pendant six mois devient À risque ; un acheteur récent qui recommande devient Fidèle. Les scores ne sont utiles que s’ils suivent ces mouvements :
- Chaque mois pour les décisions marketing opérationnelles, qui reçoit la reconquête du mois, qui reçoit l’aperçu VIP.
- Chaque trimestre pour la stratégie, le segment Champions grandit-il ou rétrécit-il ?
- Chaque année pour la comparaison d’une année sur l’autre.
Ce que RFM vous apporte de plus utile dans le temps, ce ne sont pas les segments eux-mêmes, mais leur mouvement. Si le nombre de clients À risque continue d’augmenter pendant que les Champions diminuent, votre fidélisation fuit, quel que soit votre chiffre d’affaires global, un signal totalement invisible dans un graphique de ventes agrégé. Observer l’évolution de la taille des segments est une alerte bien plus précoce que d’attendre que la courbe du chiffre d’affaires se plie.
Les erreurs qui font perdre l’effort investi
- Compter les commandes non valides. C’est l’erreur de données numéro un, si vous ne filtrez pas sur
valid = 1, les remboursements, annulations et paiements échoués gonflent la fréquence et la valeur monétaire, et corrompent discrètement chaque segment. Corrigez cela en premier. - Sur-segmenter. 125 codes ne sont pas 125 stratégies. Cinq à huit segments actionnables, c’est le plafond pour une boutique gérée par des humains. Commencez par deux, Champions et À risque, lancez des campagnes pour ceux-là, puis élargissez.
- Ignorer votre cycle d’achat. Une boutique qui vend des abonnements annuels ou des biens durables à prix élevé aura naturellement une fréquence faible ; cela ne rend pas ces clients faibles. Scorez vos clients par rapport à vos propres quintiles (ce que la méthode fait déjà) et lisez la fréquence dans le contexte de la périodicité à laquelle votre produit est censé être racheté.
- Analyser sans agir. Le livrable n’est pas le tableur ; ce sont l’e-mail modifié et le nouveau groupe client. Une analyse RFM qui ne change pas ce que vous envoyez est un passe-temps, pas du marketing.
Questions fréquentes sur RFM dans PrestaShop
Quelle table et quelle colonne dois-je additionner pour la « valeur monétaire » ? Additionnez total_paid_real dans ps_orders, groupé par id_customer. C’est ce qui a réellement été encaissé, pas le total affiché de la commande. Filtrez sur valid = 1 afin que les lignes annulées, en erreur ou en attente de paiement ne gonflent pas le chiffre. Utilisez SUM pour la valeur vie ou AVG pour la taille du panier, mais choisissez une logique et gardez-la pour tous les clients.
Ai-je besoin d’un module ou d’une extension pour faire une analyse RFM ? Non. Toute l’analyse tient dans une requête GROUP BY sur ps_orders, plus une formule de quintile dans un tableur. Si vous préférez ne pas toucher au SQL, Statistiques → Meilleurs clients vous donne le nombre de commandes et le montant dépensé pour repérer à l’œil vos meilleurs clients, mais cela ne calculera pas la récence et ne passera pas à l’échelle au-delà de quelques dizaines de clients, d’où l’intérêt de la requête de cinq minutes.
Pourquoi ma liste de « meilleurs clients » semble-t-elle fausse ? Presque toujours parce que des commandes non valides sont comptées. Si vous additionnez toutes les lignes de ps_orders quel que soit leur état, les remboursements, annulations et paiements échoués entrent dans la fréquence et la valeur monétaire, et corrompent chaque segment. Ajoutez WHERE valid = 1 (ou limitez aux états de commande que vous considérez comme de « l’argent réellement encaissé ») et relancez.
Ma boutique vend des articles à forte valeur, donc la fréquence de tout le monde est basse, RFM fonctionne-t-il quand même ? Oui, parce que les quintiles scorent chaque client par rapport à votre propre distribution, pas par rapport à une référence sectorielle. Un champion de biens durables annuels achète bien moins souvent qu’un champion de consommable mensuel, et la méthode s’auto-calibre sur ce que vous vendez. Lisez la fréquence dans le contexte de la périodicité à laquelle votre produit est censé être racheté.
À quelle fréquence dois-je recalculer les scores ? Chaque mois pour les décisions marketing opérationnelles (qui reçoit la reconquête du mois ou l’aperçu VIP), chaque trimestre pour la stratégie (le segment Champions grandit-il ou rétrécit-il ?), et chaque année pour la comparaison d’une année sur l’autre. Le signal le plus utile dans le temps est le mouvement des segments, un nombre de clients À risque qui augmente pendant que les Champions diminuent vous alerte sur une fuite de fidélisation longtemps avant que la courbe du chiffre d’affaires ne se plie.
RFM est l’un de ces rares exercices qui coûtent presque rien et rapportent immédiatement : les données sont déjà dans ps_orders, le calcul est un quintile, et le gain consiste enfin à consacrer votre temps et votre budget aux clients qui le justifient, au lieu de traiter une liste indifférenciée. Si vous débutez encore et que votre volume de commandes est faible, concentrez-vous d’abord sur le volume qui rend la segmentation significative, c’est le travail décrit dans vos 100 premières commandes. Une fois les commandes régulières, RFM vous aide à faire revenir les bonnes, et à lire les données de segment avec vos marges réelles, afin que l’effort investi dans chaque niveau soit réellement rentable.