Abonnement : comment calculer l’attrition du portefeuille abonnés ?

« Attrition abonnés », « taux de chute », « churn », « dégressif»… Quel que soit le nom qu’on lui donne, cet indicateur est clef pour une activité d’abonnements. Un portefeuille d’abonnés n’est jamais acquis, il subit fatalement une érosion. L’attrition est le taux de clients perdus sur une période donnée. Le calcul de l’attrition abonnés est essentielle pour endiguer l’érosion grâce à la mise en place des traitements adaptés :

  • La fidélisation, tant que le client est encore présent et avant qu’il ne soit trop tard.
  • La politique de réabonnement lorsque nous avons des abonnements avec paiement d’avance et échéance de fin.
  • La rétention quand le client décide de nous quitter alors que son abonnement est en cours.

En tant que cabinet Conseil expert en Abonnements, CustUp accompagne ses clients dans la mise en place des reportings d’attrition puis dans leur analyse et utilisation opérationnelle.

LE PRINCIPE DE CALCUL DE L’ATTRITION ABONNÉS

Les règles de calcul de l’attrition, bien que reposant sur des principes de base fondateurs, sont propres à chaque structure et modalité de gestion des clients et plus particulièrement des abonnés. La définition réfléchie des règles spécifiques est un préalable primordial à la mise en place d’une statistique d’attrition pertinente et fiable. L’idée est d’observer la vie de ses clients en portefeuille par périodes significatives, souvent le mois, au moins au cours des 2 premières années de vie des abonnés. On fige le nombre d’abonnés recrutés sur le mois M, puis on observe mois après mois les sorties du portefeuille pour la population d’abonnés observés. On ajoute parfois les retours (les abonnés sortis qui reviennent d’eux-mêmes dans un laps de temps défini). Sur des abonnés à durée libre – c’est-à-dire sans échéance contractuelle prédéfinie et qui règlent leur abonnement au fil de l’eau (en prélèvement le plus souvent) – nous observerons une courbe comme celle-ci :

Courbe vie abonnés ADL

Dégressif sur une courbe type de portefeuille Abonnés à Durée Libre.

On constate une chute plus élevée sur le début de l’abonnement puis une descente progressive légère de la courbe au fil des périodes d’observation, des années. Sur des abonnés à durée déterminée – avec échéance contractuelle, souvent avec paiement cash en début d’abonnement – la courbe sera totalement différente.

Courbe type de portefeuille Abonnés à Durée Déterminée. Phénomène de marches par échéance.

Courbe type de portefeuille Abonnés à Durée Déterminée.
Phénomène de marches par échéance.

On constate une chute par paliers à chaque nouvelle échéance de l’abonnement. Entre chaque palier, on observe une légère pente de la courbe liée à des départs en cours d’abonnement.

LES TABLEAUX DE SUIVI, LES RÈGLES DE CALCUL DE L’ATTRITION ABONNÉS

Il faut tout d’abord définir la population à analyser. On va par exemple, exclure les abonnés gratuits, ou toute autre typologie spécifique non pertinente pour l’analyse. Les règles qui définissent la population initiale sont primordiales. Il faut y réfléchir précisément. Ensuite, pour les abonnés analysés, on fonctionnera par filtres pour sélectionner la population pour laquelle on souhaite visualiser l’attrition. Prenons, pour l’exemple, des abonnés à durée libre en prélèvement SEPA, avec une période initiale d’engagement de 2 mois, puis la liberté d’annuler à tout moment. On calcule ensuite sa population initiale pour chaque mois d’installation :

Abonnements : suivi du portefeuille abonnés.

Les populations initiales en date d’installation de l’abonnement.

En janvier 2012, on indiquera le nombre de nouveaux abonnés qui ont débuté leur abonnement à cette période, ici 1 500. Idem pour tous les mois suivants. En pied de tableau, nous aurons le total de l’année.

On va ensuite analyser la vie des abonnés mois après mois et faire des cumuls annuels.

Exemple de tableau de suivi d’une population d’abonnés.

Exemple de tableau de suivi d’une population d’abonnés.

Sur le mois 1, on comptabilise toutes les sorties par population initiale, et donc le nombre d’abonnés qui restent actifs en fin de mois 1. Le mois 1 est celui de l’entrée de l’abonné en portefeuille. Le taux d’attrition du mois 1 concerne donc tous les abonnés qui n’ont fait qu’un bref passage chez nous. Le taux d’attrition est le nombre d’abonnés perdus durant le mois 1 divisé par le nombre d’abonnés entrés au mois 1. Sur les abonnés recrutés en janvier 2012, on voit ici que l’on en a perdu 10 en route, qui ne sont plus là fin janvier 2012. Notre attrition sur ces abonnés est donc de 0,67% sur leur mois 1.   Pour le mois 2, on  répète la même chose, sauf que l’on calcule l’attrition sur le reste actif fin du mois 1 et non sur la population initiale : nous dégageons ainsi un taux d’attrition mensuel. Dans l’exemple, nous perdons au mois 2,6 abonnés issus du recrutement de janvier 2012. Pour connaître le taux d’attrition du mois on divise 6 par 1490 = nombre d’actifs en portefeuille fin du mois 1. On obtient ainsi une attrition de 0,40% pour le mois 2 des abonnés recrutés en janvier 2012.   Dans l’exemple, on constate une forte détérioration des taux au mois 3 avec 4,77% d’attrition en annuel vs 0,35% et 0,48% les mois précédents. On voit donc qu’il y a un diagnostic d’érosion juste après la courte période d’engagement initial et ainsi un remède simple à trouver avec une action de fidélisation à mettre en place courant du mois 2. Si l’on endigue cette érosion, on peut récupérer simplement environ 600 abonnés. Cela vaut bien une petite action sur l’ensemble du portefeuille qui s’en trouvera d’autant plus consolidé !   Les 2 ou 3 premières années sont particulièrement intéressantes à observer au mois le mois et en cumul annuel. Les moments de fragilité à traiter seront observables sur cette période. Pour les années suivantes, on peut analyser par trimestre, semestre et/ou en cumul annuel.   On affinera les analyses par des filtres précis sur les populations observées qui peuvent être : par media de recrutement, par type d’offre souscrite, par cadeau de recrutement reçu, par nombre de contacts avec le service clients sur une période donnée et tout ce que l’on peut imaginer de pertinent selon les produits et/ou services proposés à l’abonnement. Ces analyses fines et détaillées ont une visée strictement opérationnelle pour aider les collaborateurs du marketing client à régler leur politique de fidélisation et de rétention et même leurs offres de conquête.   Pour une vision plus globale de l’activité on fabriquera un reporting de synthèse qui pourra se présenter comme suit :

Exemple de tableau d’attrition de synthèse par année de recrutement.

Exemple de tableau d’attrition de synthèse par année de recrutement.

Attention, si l’on se trouve en mai 2015 au moment de l’analyse de ce tableau, toutes les zones colorées sont provisoires puisque l’ensemble des populations initiales n’a pas atteint ses fins de périodes d’analyse. Les recrutés de mai 2014 n’ont pas encore un an de vie et donc l’attrition 2014 du mois 5 n’est pas définitive.

Toute activité fondée sur l’exploitation d’un fichier clients induit l’érosion de ce fichier. Les clients vivent, s’engagent avec l’entreprise, changent de partenaire, quittent, résilient… Comme nous l’avons vu, tous ces événements peuvent être synthétisés via le suivi du fichier, de son attrition abonnés. Le suivi, puis le contrôle du fichier sont clefs de performance dans la gestion d’un business model d’abonnements. La mise en place et l’exploitation d’un reporting de suivi de l’attrition est donc une exigence. Dans un prochain article, notre équipe de consultants en Abonnements, partagera des exemples d’utilisation de l’attrition pour plus de performance des fichiers abonnés. Nous vous invitons à découvrir en parallèle l’article que nous avions consacré à la notion clé de lifetime.

Envie d’en savoir plus sur l’abonnement, de comprendre pourquoi ce mode de commercialisation se développe ? Consultez notre article « Pourquoi l’abonnement devient-il incontournable? »

Partager :
Cet article a été rédigé par Caroline Hauss, consultante experte en Abonnements chez CustUp. Ne manquez pas les exemples d’utilisation de

Cet article a été rédigé par Caroline Hauss, consultante experte en Abonnements chez CustUp. Ne manquez pas les exemples d’utilisation de l’attrition expliqués très prochainement sur notre blog.

[custup_nom_silo]
[custup_form_optinmonster]
[custup_form_optinmonster]
[custup_form_blog_inline_optinmonster]
<script type="text/javascript"> jQuery(document).ready(function( $ ) { var dj_envoyer_inscription = true; jQuery(document).delegate( '#dj_envoyer_inscription-MQMhj', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var email = jQuery('#dj_form_optinmonster-MQMhj input[name="email"]').val(); var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); var recaptcha_response = ""; grecaptcha.ready(function () { grecaptcha.execute('6Lc5kLoUAAAAAD3ltaKWkySZa3ss4UzqzFYmCBxn', { action: 'inscription_mailchimp' }).then(function (token) { data.append( "recaptcha_response", token); jQuery("#dj_form_optinmonster-MQMhj .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-MQMhj .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-MQMhj .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-MQMhj .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-MQMhj .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-MQMhj .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-MQMhj .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-MQMhj .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-MQMhj .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Blog-Inline", "eventAction": "clic", "eventLabel": "https://www.custup.com/calcul-attrition-portefeuille-abonnes/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; }, error: function(errorThrown){ dj_envoyer_inscription = true; } }); }); }); } return false; }); }); </script> <div id="dj_form_optinmonster-MQMhj" class="form_inline"> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-7 col-sm-12 col-xs-12 no-padding form-group"> <input class="form-control form-inline" type="text" id="dj_email" name="email" placeholder="E-mail" /> </div> <div class="col-md-5 col-sm-12 col-xs-12 no-padding form-group envoyer text-center "> <button id="dj_envoyer_inscription-MQMhj" class="dj_envoyer_inscription" type="submit">Je m'abonne !</button> </div> </div>
[le Nom du Silo]
[le Nom du Silo]
[custup_icon]
<img src="https://www.custup.com/wp-content/themes/custup/public/img/icon.png" alt="Merci pour votre visite" class="skip-lazy" width="28" height="27"/>
[custup_form_exit]
<script type="text/javascript"> jQuery(document).ready(function( $ ) { var dj_envoyer_inscription = true; var email = ""; jQuery(document).delegate( '#emailLnfLO', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-exit-LnfLO', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "exit", 1 ); var recaptcha_response = ""; grecaptcha.ready(function () { grecaptcha.execute('6Lc5kLoUAAAAAD3ltaKWkySZa3ss4UzqzFYmCBxn', { action: 'inscription_mailchimp' }).then(function (token) { data.append( "recaptcha_response", token); jQuery("#dj_form_optinmonster-exit-LnfLO .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-exit-LnfLO .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-exit-LnfLO .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-exit-LnfLO .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Exit", "eventAction": "clic", "eventLabel": "https://www.custup.com/calcul-attrition-portefeuille-abonnes/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; }, error: function(errorThrown){ dj_envoyer_inscription = true; } }); }); }); } return false; }); }); </script> <div id="dj_form_optinmonster-exit-LnfLO" class="form_inline popin-exit"> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group"> <input class="form-control" type="text" id="emailLnfLO" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group envoyer text-center "> <button id="dj_envoyer_inscription-exit-LnfLO" class="dj_envoyer_inscription" type="submit">S'inscrire !</button> </div> </div>
[custup_scroll_nom_silo]
[custup_form_silo_scroll_optinmonster]
<script type="text/javascript"> var email = ""; jQuery(document).ready(function( $ ) { var dj_envoyer_inscription = true; jQuery(document).delegate( '#emailSNaIr', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-SNaIr', 'click', function(e){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); data.append( "id_article", 1951); var recaptcha_response = ""; grecaptcha.ready(function () { grecaptcha.execute('6Lc5kLoUAAAAAD3ltaKWkySZa3ss4UzqzFYmCBxn', { action: 'inscription_mailchimp' }).then(function (token) { data.append( "recaptcha_response", token); jQuery("#dj_form_optinmonster-SNaIr .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-SNaIr .panel-primary").css('display', 'block'); jQuery("#dj_form_optinmonster-SNaIr .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_optinmonster-SNaIr .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-SNaIr .panel-danger span").html(result.alerte); jQuery("#dj_form_optinmonster-SNaIr .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_optinmonster-SNaIr .panel").css('display', 'none'); jQuery("#dj_form_optinmonster-SNaIr .panel-success span").html(result.message); jQuery("#dj_form_optinmonster-SNaIr .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Silo-XXX-Scroll", "eventAction": "clic", "eventLabel": "https://www.custup.com/calcul-attrition-portefeuille-abonnes/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; }, error: function(errorThrown){ dj_envoyer_inscription = true; } }); }); }); } return false; }); }); </script> <div id="dj_form_optinmonster-SNaIr"> <form> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group"> <input class="form-control" type="text" id="emailSNaIr" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group envoyer text-center "> <button id="dj_envoyer_inscription-SNaIr" class="dj_envoyer_inscription" value="xx" type="submit">S'inscrire</button> </div> </form> </div>
[custup_count_abonnes_liste_mailchimp]
4135
[custup_form_horizontal_optinmonster]
<script type="text/javascript"> var email = ""; jQuery(document).ready(function( $ ) { var dj_envoyer_inscription = true; jQuery(document).delegate( '#email7ANuJ', 'change', function(){ email = jQuery(this).val(); }); jQuery(document).delegate( '#dj_envoyer_inscription-7ANuJ', 'click', function(){ if(dj_envoyer_inscription){ dj_envoyer_inscription = false; var data = new FormData(); data.append( "action", "inscription_mailchimp"); data.append( "email", email); grecaptcha.ready(function () { grecaptcha.execute('6Lc5kLoUAAAAAD3ltaKWkySZa3ss4UzqzFYmCBxn', { action: 'inscription_mailchimp' }).then(function (token) { data.append( "recaptcha_response", token); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-primary").css('display', 'block'); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-primary span").html( site.message_030 ); $.ajax({ url: site.ajax_url, type: 'post', dataType: 'JSON', processData: false, contentType: false, cache: false, data: data, success: function(result) { if(result.alerte){ jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-danger span").html(result.alerte); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-danger").css('display', 'block'); }else if(result.message){ jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel").css('display', 'none'); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-success span").html(result.message); jQuery("#dj_form_horizontal_optinmonster-7ANuJ .panel-success").css('display', 'block'); } if(result.status){ dataLayer.push({ "event": "gaEvent", "eventCategory": "Blog-Floating-Bar", "eventAction": "clic", "eventLabel": "https://www.custup.com/calcul-attrition-portefeuille-abonnes/", "eventValue": "", "eventNoninteraction": "true" }); } dj_envoyer_inscription = true; }, error: function(errorThrown){ dj_envoyer_inscription = true; } }); }); }); } return false; }); }); </script> <div id="dj_form_horizontal_optinmonster-7ANuJ" class="dj_form_horizontal_optinmonster"> <input type="hidden" name="recaptcha_response" value=""> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group dj_email_content"> <input class="form-control" type="text" id="email7ANuJ" name="email" placeholder="E-mail" /> </div> <div class="col-md-12 col-sm-12 col-xs-12 no-padding form-group text-center dj_email_envoyer"> <button id="dj_envoyer_inscription-7ANuJ" class="dj_envoyer_inscription" type="submit">Valider</button> </div> <div class="form-group col-md-12 col-sm-12 col-xs-12 no-padding m-5"> <div class="panel panel-primary m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-success m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> <div class="panel panel-danger m-0" style="display:none;"> <div class="panel-heading"> <span class="m-5"></span> </div> </div> </div> </div>