La puissance réelle d'un chatbot WhatsApp n'est pas de répondre aux questions — c'est de personnaliser chaque interaction selon qui est l'utilisateur, ce qu'il a fait par le passé, et ce dont il a probablement besoin maintenant. La segmentation avancée basée sur les analytics WhatsApp transforme votre bot d'un répondeur générique en un conseiller qui semble vous connaître.
Ce guide présente les méthodes de segmentation les plus efficaces appliquées au contexte africain.
Les 4 dimensions de segmentation WhatsApp
Dimension 1 : Comportementale (ce que l'utilisateur fait)
// Segmentation comportementale basée sur les interactions bot
const behavioralSegmentation = {
classifyUser: async (phone) => {
const history = await db.getUserConversationHistory(phone, { days: 90 });
const segments = [];
// Segment "Power User" : interagit fréquemment avec le bot
if (history.conversation_count >= 10 && history.avg_session_depth >= 3) {
segments.push('power_user');
}
// Segment "FAQ Only" : ne consulte que la FAQ, jamais de commandes
if (history.intent_distribution.faq > 0.80) {
segments.push('faq_only');
}
// Segment "Acheteur" : a déjà complété au moins 1 commande
if (history.completed_orders > 0) {
segments.push('buyer');
if (history.completed_orders >= 3) segments.push('repeat_buyer');
}
// Segment "Abandonniste" : commence souvent des flows sans terminer
if (history.avg_flow_completion_rate < 0.40) {
segments.push('high_abandoner');
}
// Segment "Récent" : premier contact dans les 7 derniers jours
if (history.first_contact_days_ago <= 7) {
segments.push('new_user');
}
return segments;
}
};
Dimension 2 : RFM (Récence, Fréquence, Montant)
Le modèle RFM, classique en marketing, s'adapte très bien aux interactions WhatsApp.
// Calcul du score RFM pour un utilisateur WhatsApp
async function calculateRFMScore(phone) {
const data = await db.getUserMetrics(phone);
// Récence : jours depuis la dernière interaction
const R = data.days_since_last_contact <= 7 ? 5
: data.days_since_last_contact <= 30 ? 4
: data.days_since_last_contact <= 60 ? 3
: data.days_since_last_contact <= 90 ? 2 : 1;
// Fréquence : nombre d'interactions sur 90 jours
const F = data.interactions_90d >= 20 ? 5
: data.interactions_90d >= 10 ? 4
: data.interactions_90d >= 5 ? 3
: data.interactions_90d >= 2 ? 2 : 1;
// Montant : valeur des commandes (ou engagement pour les services)
const M = data.total_order_value_fcfa >= 500000 ? 5
: data.total_order_value_fcfa >= 200000 ? 4
: data.total_order_value_fcfa >= 50000 ? 3
: data.total_order_value_fcfa >= 10000 ? 2 : 1;
const rfmScore = `${R}${F}${M}`;
// Segments RFM clés
const rfmSegment = getRFMSegment(R, F, M);
return { R, F, M, rfmScore, rfmSegment };
}
function getRFMSegment(R, F, M) {
if (R >= 4 && F >= 4 && M >= 4) return 'champions'; // Vos meilleurs clients
if (R >= 4 && F >= 3) return 'loyal_customers'; // Clients fidèles actifs
if (R >= 4 && F <= 2) return 'new_promising'; // Nouveaux mais engagés
if (R <= 2 && F >= 4) return 'at_risk'; // Anciennement actifs, en train de partir
if (R <= 2 && M >= 4) return 'cant_lose'; // Gros acheteurs inactifs — priorité absolue
if (R <= 1 && F <= 1) return 'lost'; // Churned
return 'potential'; // Tous les autres
}
Dimension 3 : Géographique et linguistique
// Segmentation géo-linguistique pour l'Afrique
const geoLinguisticSegmentation = {
detectProfile: async (phone, conversationHistory) => {
const profile = {
country: detectCountryFromPhone(phone), // CI, SN, MA, CM, etc.
city_tier: null,
language: null,
dialect: null
};
// Détecter la ville depuis les messages (si mentionné)
const locationMentions = extractLocationMentions(conversationHistory);
if (locationMentions.length > 0) {
profile.city_tier = classifyCityTier(locationMentions[0]);
}
// Détecter la langue depuis les messages
const detectedLang = await langDetect(conversationHistory.map(m => m.text).join(' '));
if (detectedLang === 'fr') {
// Détecter les dialectes africains
if (hasNouchiMarkers(conversationHistory)) {
profile.language = 'fr';
profile.dialect = 'nouchi'; // Côte d'Ivoire
} else if (hasWolofMarkers(conversationHistory)) {
profile.language = 'fr';
profile.dialect = 'wolof_francais'; // Sénégal
} else {
profile.language = 'fr';
profile.dialect = 'standard';
}
} else if (detectedLang === 'ar' || hasDarijaMarkers(conversationHistory)) {
profile.language = 'fr_ar_darija';
profile.dialect = 'darija'; // Maghreb
}
return profile;
},
// Message personnalisé selon profil linguistique
getGreeting: (profile) => {
const greetings = {
'fr_nouchi': "Wesh, tu vas bien ? 🤙 Comment je peux t'aider ?",
'fr_wolof_francais': "Bonjour ! Nanga def ? Comment puis-je vous aider ?",
'fr_darija': "Salam ! كيف داير؟ Comment puis-je vous aider ?",
'fr_standard': "Bonjour ! Comment puis-je vous aider ?"
};
const key = `fr_${profile.dialect}`;
return greetings[key] || greetings['fr_standard'];
}
};
Dimension 4 : Préférences et intérêts
// Inférer les intérêts depuis l'historique de conversations
async function inferUserInterests(phone) {
const history = await db.getUserConversationHistory(phone, { days: 180 });
const interests = {};
// Analyser les catégories de produits consultés
const productViews = history.filter(c => c.intent === 'product_view');
for (const view of productViews) {
const category = view.product_category;
interests[category] = (interests[category] || 0) + 1;
}
// Analyser les FAQ consultées
const faqTopics = history
.filter(c => c.intent_category === 'faq')
.map(c => c.faq_topic);
// Inférer la sensibilité au prix
const priceQuestions = faqTopics.filter(t => ['price', 'discount', 'promo'].includes(t));
const priceSensitive = priceQuestions.length > 3;
return {
top_categories: Object.entries(interests).sort((a, b) => b[1] - a[1]).slice(0, 3).map(([cat]) => cat),
price_sensitive: priceSensitive,
preferred_contact_hour: getMostFrequentHour(history),
preferred_payment: getMostUsedPayment(history)
};
}
Utiliser la segmentation pour personnaliser les messages
// Personnalisation des messages basée sur les segments
async function getPersonalizedMessage(phone, messageType) {
const [rfm, behavioral, geoLing, interests] = await Promise.all([
calculateRFMScore(phone),
behavioralSegmentation.classifyUser(phone),
geoLinguisticSegmentation.detectProfile(phone, []),
inferUserInterests(phone)
]);
switch (messageType) {
case 'welcome_back':
if (rfm.rfmSegment === 'champions') {
return `Bienvenue ! 🌟 En tant que client premium, voici votre accès prioritaire à nos nouvelles collections.`;
}
if (rfm.rfmSegment === 'at_risk') {
return `Ça fait un moment ! 😊 Nous avons de nouvelles offres qui pourraient vous plaire. Voulez-vous voir ?`;
}
return `Bon retour ! Comment puis-je vous aider aujourd'hui ?`;
case 'product_recommendation':
const categories = interests.top_categories;
if (categories.length > 0) {
return `Basé sur vos achats précédents, voici nos nouveautés ${categories[0]} qui pourraient vous intéresser :`;
}
return `Voici nos meilleures ventes du moment :`;
}
}
Pour approfondir, consultez notre guide sur la segmentation audience WhatsApp et notre article sur le reporting WhatsApp Marketing mensuel.
FAQ
Q: La segmentation RFM est-elle vraiment applicable aux PME africaines avec peu de données ?
A: La segmentation RFM nécessite un minimum de données historiques — au moins 3-6 mois d'interactions. Pour une PME avec 100-200 contacts WhatsApp actifs, le RFM complet est prématuré. Commencez par une segmentation simple : nouveaux contacts (< 30 jours), actifs (interaction dans les 30 derniers jours), inactifs (pas d'interaction depuis 60+ jours). La sophistication augmente avec le volume de données disponibles.
Q: Comment respecter la vie privée des utilisateurs tout en faisant de la segmentation avancée ?
A: La règle de base : ne collecter que les données nécessaires à la personnalisation, ne les garder que le temps utile, et ne jamais les partager. Stockez les numéros de téléphone sous forme hashée dans vos systèmes analytics. Mentionnez dans vos messages d'opt-in que vous personnalisez les communications. En Afrique, les réglementations RGPD-équivalentes (CDVP en Côte d'Ivoire, CNIL au Maroc) s'appliquent de plus en plus.
Q: Les utilisateurs africains réagissent-ils positivement à la personnalisation ou la trouvent-ils intrusive ?
A: La réception dépend du type de personnalisation. La personnalisation linguistique (parler nouchi avec un Ivoirien) est très appréciée. La personnalisation basée sur les achats précédents ("vous avez commandé X, voici Y qui va avec") est généralement bien perçue. La personnalisation trop précise qui révèle une surveillance ("je sais que vous regardez nos chaussures tous les jours") peut déclencher de la méfiance. Restez dans une personnalisation utile et transparente.
Q: Comment maintenir les segments à jour sans ralentir le système ?
A: Calculez les segments de façon asynchrone, pas en temps réel. Recalculez les scores RFM une fois par jour (batch nocturne). Mettez à jour les segments comportementaux à chaque fin de conversation (événement léger). Stockez les segments dans Redis avec un TTL de 24h pour un accès rapide pendant les interactions. Cette architecture donne accès aux segments en < 5ms sans impact sur le temps de réponse du bot.
La segmentation avancée transforme votre chatbot WhatsApp en un outil de marketing one-to-one à grande échelle. Plus vous connaissez vos utilisateurs africains, plus vos interactions sont pertinentes — et plus votre taux de conversion augmente.
Activez la segmentation avancée sur votre bot avec Whakup et commencez à personnaliser vos interactions WhatsApp à grande échelle.

Co-fondateur de Whakup, Arthur accompagne les entreprises africaines dans leur transformation digitale via WhatsApp depuis 2022. Passionné par le growth marketing et l'entrepreneuriat en Afrique francophone.
Prêt à passer à l'action ?
Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.
Démarrer l'essai gratuitArticles similaires
Abandon de flows WhatsApp : comprendre et réduire le taux d'abandon
Analyser et réduire l'abandon de flows dans votre chatbot WhatsApp. Identifier les étapes problématiques, comprendre les causes et appliquer les corrections pour améliorer la complétion.
Benchmark WhatsApp Marketing en Afrique par secteur : données 2025
Benchmarks WhatsApp Marketing par secteur d'activité en Afrique : e-commerce, banque, santé, tourisme, immobilier. Taux d'ouverture, conversion et satisfaction pour vous situer.
Conversation analytics WhatsApp : créer un tableau de bord de pilotage
Construire un tableau de bord analytics pour piloter votre chatbot WhatsApp. Métriques clés, visualisations, alertes automatiques et reporting pour décideurs africains.