Un taux d'abandon de flow élevé est l'un des problèmes les plus coûteux d'un chatbot WhatsApp. Chaque flow abandonné représente un client qui n'a pas été servi, un lead qui n'a pas été qualifié, une commande qui n't pas été passée. Pourtant, la plupart des équipes ne mesurent pas précisément le taux d'abandon ni l'étape où il se produit — et donc ne peuvent pas le corriger.
Ce guide vous explique comment diagnostiquer et réduire significativement vos taux d'abandon.
Comprendre les types d'abandon
Tous les abandons ne sont pas créés égaux. Il faut distinguer :
Abandon par friction : l'utilisateur voulait terminer mais a rencontré un obstacle (question confuse, étape trop longue, bug).
Abandon par désintérêt : l'utilisateur a obtenu l'information dont il avait besoin à mi-chemin (souvent légitime — le flow est peut-être trop long).
Abandon par interruption : l'utilisateur a été interrompu et n'est pas revenu (externe au bot, peu actionnable).
Abandon par méfiance : l'utilisateur a refusé de continuer à cause d'une demande d'information sensible (numéro de carte, pièce d'identité).
// Classification des abandons par pattern
function classifyAbandon(conversation) {
const lastMessage = conversation.last_message;
const abandonStep = conversation.last_completed_step;
const timeSinceLastMessage = Date.now() - new Date(conversation.last_message_at).getTime();
// Abandon immédiat après une demande d'info sensible
if (abandonStep?.requires_sensitive_data) {
return { type: 'distrust', actionable: true, fix: 'add_trust_signals' };
}
// Abandon après un message de bot long (> 300 caractères)
if (conversation.last_bot_message?.length > 300) {
return { type: 'friction_long_message', actionable: true, fix: 'shorten_message' };
}
// Abandon après step 1 (avant même de commencer)
if (conversation.completed_steps === 0) {
return { type: 'wrong_entry_point', actionable: true, fix: 'review_welcome_message' };
}
// Abandon rapide (< 2 minutes sur le flow entier)
if (timeSinceLastMessage < 120000 && conversation.completed_steps > 2) {
return { type: 'friction', actionable: true, fix: 'simplify_problematic_step' };
}
return { type: 'external_interruption', actionable: false };
}
Mesurer précisément l'abandon par étape
La clé est de mesurer l'abandon à chaque étape spécifique, pas seulement le taux global.
// Analyse granulaire des abandons par étape
async function analyzeFlowFunnel(flowId, period) {
const sessions = await db.getFlowSessions(flowId, period);
// Toutes les étapes définies dans le flow
const flowDefinition = await db.getFlowDefinition(flowId);
const steps = flowDefinition.steps;
const funnel = steps.map(step => {
const startedStep = sessions.filter(s =>
s.completed_steps.includes(step.id) || s.current_step === step.id
).length;
const completedStep = sessions.filter(s =>
s.completed_steps.includes(step.id)
).length;
const abandonedOnStep = sessions.filter(s =>
s.current_step === step.id && s.status === 'abandoned'
).length;
return {
step_id: step.id,
step_name: step.name,
started: startedStep,
completed: completedStep,
abandoned_here: abandonedOnStep,
step_completion_rate: completedStep / (startedStep || 1),
drop_off_pct: ((abandonedOnStep / (startedStep || 1)) * 100).toFixed(1)
};
});
// Identifier les étapes les plus problématiques
const problemSteps = funnel
.filter(s => parseFloat(s.drop_off_pct) > 20) // Seuil d'alerte : >20% abandon
.sort((a, b) => b.abandoned_here - a.abandoned_here);
return {
flow_id: flowId,
period,
overall_completion: funnel[funnel.length - 1]?.completed / sessions.length,
funnel,
problem_steps: problemSteps,
total_abandoned: sessions.filter(s => s.status === 'abandoned').length,
total_started: sessions.length
};
}
Les 7 causes d'abandon les plus fréquentes et leurs corrections
Cause 1 : Message trop long ou trop complexe
// Avant : message trop long
const tooLongMessage = `
Pour votre commande, nous avons besoin de plusieurs informations importantes.
D'abord, nous allons vous demander votre adresse complète incluant le quartier,
la rue, le numéro, et tout point de repère utile pour notre livreur.
Ensuite, nous vous demanderons de confirmer votre numéro de téléphone pour
le suivi et la livraison. Enfin, vous choisirez votre mode de paiement parmi
Wave, Orange Money ou paiement à la livraison. Prêt à commencer ?
`;
// Après : message court avec bouton d'action
const optimizedMessage = {
text: "📦 Pour livrer votre commande, j'ai besoin de 3 infos rapides.\n\nÇa prend 2 minutes ! Prêt ?",
buttons: [{ id: 'start_order', title: '✅ C\'est parti !' }]
};
Cause 2 : Trop d'étapes avant la valeur
Appliquez le principe "valeur d'abord". Ne demandez pas 5 questions avant de montrer le résultat.
// Principe : donner de la valeur avant de demander des infos
const progressiveFlow = {
steps: [
{ id: 'show_value_first', type: 'catalogue_preview', message: 'Voici nos offres du moment...' },
{ id: 'interest_confirmation', type: 'button', message: 'Cela vous intéresse ?' },
// Seulement APRÈS confirmation d'intérêt, demander les infos
{ id: 'collect_info', type: 'form', fields: ['name', 'phone', 'address'] }
]
};
Cause 3 : Demande d'information trop tôt (méfiance)
// Mauvaise pratique : demander le numéro de carte dès le début
const badFlow = {
step2: { message: "Entrez votre numéro de carte Wave pour pré-autoriser..." }
// → 60-70% d'abandon sur cette étape
};
// Bonne pratique : demander au dernier moment, avec context de confiance
const goodFlow = {
step_penultimate: {
message: "✅ Votre commande est prête !\n\n🔒 Paiement sécurisé via Wave\n\nVotre numéro Wave ?"
// → Demander APRÈS que le client a investi du temps dans le flow
}
};
Cause 4 : Absence de progress indicator
Les utilisateurs abandonnent quand ils ne savent pas combien d'étapes il reste.
// Ajouter un indicateur de progression
function addProgressIndicator(stepNumber, totalSteps, message) {
const dots = '●'.repeat(stepNumber) + '○'.repeat(totalSteps - stepNumber);
return `${dots} Étape ${stepNumber}/${totalSteps}\n\n${message}`;
}
// Exemple : "●●○○ Étape 2/4\n\nQuelle est votre adresse de livraison ?"
Cause 5 : Message d'erreur qui décourage
// Mauvais : message d'erreur frustrant
const badError = "Je n'ai pas compris votre réponse. Veuillez réessayer.";
// Bon : message d'erreur avec aide concrète
const goodError = {
text: "Je n'ai pas bien compris 😅 Pouvez-vous choisir parmi ces options ?",
buttons: [
{ id: 'retry_a', title: 'Option A' },
{ id: 'retry_b', title: 'Option B' },
{ id: 'agent', title: '💬 Aide humaine' }
]
};
Relance des flows abandonnés
// Relancer les utilisateurs qui ont abandonné à mi-parcours
async function reengageAbandonedFlows() {
const abandonedSessions = await db.getAbandonedSessions({
min_completed_steps: 2, // A commencé mais pas terminé
hours_since_abandon: { min: 2, max: 24 }, // Entre 2h et 24h après abandon
not_reengaged: true // Pas déjà relancé
});
for (const session of abandonedSessions) {
const stepName = session.last_completed_step_name;
await whatsappAPI.sendMessage(session.phone, {
text: `Bonjour ! Vous étiez en train de ${getFlowActionName(session.flow_id)} et vous vous êtes arrêté(e) à mi-chemin.\n\nReprenez là où vous en étiez ?`,
buttons: [
{ id: `resume:${session.id}`, title: '▶️ Reprendre' },
{ id: `restart:${session.flow_id}`, title: '🔄 Recommencer' },
{ id: 'dismiss', title: '❌ Non merci' }
]
});
await db.markAsReengaged(session.id);
}
}
Pour approfondir, consultez notre guide sur le taux de résolution chatbot WhatsApp et notre article sur les KPIs chatbot WhatsApp.
FAQ
Q: Quel est un taux d'abandon de flow acceptable pour un bot WhatsApp en Afrique ?
A: Cela dépend du type de flow. Un flow de qualification en 3 étapes devrait avoir moins de 30% d'abandon. Un flow de commande en 5-6 étapes, moins de 40% d'abandon (ce niveau est normal car l'intention d'achat filtre naturellement). Un flow FAQ simple, moins de 10% d'abandon. Si vous êtes significativement au-dessus de ces seuils, il y a des améliorations concrètes à apporter.
Q: Faut-il toujours raccourcir les flows pour réduire l'abandon ?
A: Pas nécessairement. Un flow plus long qui donne plus de valeur à chaque étape peut avoir un meilleur taux de complétion qu'un flow court mais peu clair. L'objectif est d'optimiser le rapport valeur perçue / effort demandé. Raccourcir un flow en supprimant des étapes utiles peut améliorer le taux de complétion mais dégrader la qualité des leads ou des commandes collectées.
Q: Comment distinguer un abandon "normal" d'un abandon "problématique" ?
A: Un abandon est normal quand l'utilisateur a obtenu ce dont il avait besoin avant la fin du flow — par exemple, quelqu'un qui demande vos horaires et quitte après avoir reçu la réponse. Un abandon est problématique quand l'utilisateur revient sur le même flow et abandonne au même endroit, ou quand l'abandon est suivi d'un message négatif ou d'une demande d'escalade vers un agent humain.
Q: Les relances des flows abandonnés ne risquent-elles pas d'agacer les utilisateurs ?
A: Si mal configurées, oui. Bonnes pratiques : (1) ne relancer qu'une seule fois par session abandonnée, (2) attendre au minimum 2 heures avant de relancer, (3) proposer clairement l'option "non merci", (4) ne pas relancer si l'utilisateur a eu d'autres interactions récentes. Une relance bien dosée récupère 15-25% des sessions abandonnées sans générer de plaintes.
Réduire l'abandon de flows est l'une des optimisations les plus rentables d'un chatbot WhatsApp — chaque point de taux de complétion gagné se traduit directement en plus de leads, de commandes ou de clients servis.
Analysez les abandons de vos flows avec Whakup Analytics et identifiez les étapes à optimiser en priorité.

Co-fondateur et Chief Product Officer de Whakup, Pablo conçoit les fonctionnalités qui permettent aux marques africaines de maximiser leur impact sur WhatsApp.
Prêt à passer à l'action ?
Essayez Whakup gratuitement pendant 15 jours. Aucune carte bancaire requise.
Démarrer l'essai gratuitArticles similaires
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.
Corréler WhatsApp et ventes : prouver le ROI à votre direction
Méthodes pour démontrer le lien causal entre WhatsApp Marketing et les ventes. Analyses statistiques, expériences contrôlées et présentation ROI pour convaincre votre direction en Afrique.