L'intelligence d'un chatbot ne se mesure pas à sa capacité à tout gérer — elle se mesure à sa capacité à savoir quand ne pas essayer de tout gérer. Un chatbot qui s'accroche à traiter des demandes qui dépassent ses capacités, ou qui ignore des signaux évidents de frustration client, est pire qu'un chatbot sans IA.
L'escalade intelligente est la règle numéro un du service client WhatsApp : détecter au bon moment que la situation nécessite un humain, et transférer de façon fluide avant que la situation ne se dégrade.
Les 6 déclencheurs d'escalade incontournables
Déclencheur 1 : Le client demande explicitement un humain
La plus évidente : quand un client dit "je veux parler à quelqu'un", "agent humain", "un vrai conseiller" — vous escaladez. Sans exception. Ne jamais essayer de "convaincre" le client que le bot peut gérer.
const HUMAN_REQUEST_PATTERNS = [
'parler à quelqu\'un',
'agent humain',
'vrai conseiller',
'une personne réelle',
'call me',
'appelez-moi',
'je veux un humain',
'agent',
'responsable',
'superviseur',
'manager',
'votre chef',
// Patterns africains spécifiques
'quelqu\'un qui sait',
'une vraie personne',
'aidez-moi vraiment',
];
function detectHumanRequest(message) {
const lowerMsg = message.toLowerCase();
return HUMAN_REQUEST_PATTERNS.some(pattern => lowerMsg.includes(pattern));
}
Déclencheur 2 : Sentiment très négatif détecté
Quand l'analyse de sentiment détecte une frustration élevée (score <-0.4 dans votre système), escaladez avant que la situation ne se dégrade davantage.
async function handleMessageWithSentiment(phone, message, sentimentScore) {
if (sentimentScore < -0.6) {
// Escalade immédiate avec empathie forte
await sendMessage(phone,
"Je comprends votre frustration et nous vous présentons nos sincères excuses. " +
"Je vous connecte immédiatement avec notre responsable service client."
);
await escalate(phone, message, { priority: 'URGENT', reason: 'extreme_frustration' });
return;
}
if (sentimentScore < -0.4) {
// Escalade après message d'empathie
await sendMessage(phone,
"Je sens que cette situation est frustrante pour vous. " +
"Je vais connecter un spécialiste qui pourra mieux vous aider."
);
await escalate(phone, message, { priority: 'HIGH', reason: 'frustration' });
return;
}
// Continue le flow normal
}
Déclencheur 3 : Intentions répétées non résolues (boucle de fallback)
Si le bot a généré 3+ fallbacks dans la même conversation, le client est clairement bloqué. Continuer serait inutile et frustrant.
function detectFallbackLoop(conversationHistory) {
const recentMessages = conversationHistory.slice(-10);
const fallbackCount = recentMessages.filter(m => m.type === 'fallback').length;
const consecutiveFallbacks = getConsecutiveFallbacks(recentMessages);
return {
shouldEscalate: fallbackCount >= 3 || consecutiveFallbacks >= 2,
fallbackCount,
reason: consecutiveFallbacks >= 2 ? 'consecutive_fallbacks' : 'too_many_fallbacks'
};
}
function getConsecutiveFallbacks(messages) {
let count = 0;
for (let i = messages.length - 1; i >= 0; i--) {
if (messages[i].type === 'fallback') count++;
else break;
}
return count;
}
Déclencheur 4 : Demandes complexes ou sensibles par nature
Certains types de demandes ne devraient jamais être gérés par un bot, quelle que soit leur formulation :
const ALWAYS_ESCALATE_INTENTS = [
'plainte_formelle', // "je vais porter plainte"
'fraude_signalement', // signalement de transaction suspecte
'accident_blessure', // problème de sécurité produit
'donnees_personnelles', // modification données sensibles (banque)
'litige_juridique', // menace légale
'retour_montant_eleve', // retour >X FCFA
'remboursement_urgent', // urgence financière
'situation_medicale', // santé (cliniques)
];
function checkIfAlwaysEscalate(intent, amount = null) {
if (ALWAYS_ESCALATE_INTENTS.includes(intent)) return true;
// Remboursements au-dessus d'un seuil
if (intent === 'remboursement' && amount && amount > 50000) return true;
return false;
}
Déclencheur 5 : Client VIP ou à forte valeur
Les clients VIP méritent une attention particulière. Configurez des règles d'escalade préférentielles :
async function checkVIPEscalation(phone, intent) {
const customer = await getCustomer(phone);
// Client VIP → escalade immédiate pour toute demande complexe
if (customer.segment === 'VIP' && !isSimpleIntent(intent)) {
return {
escalate: true,
priority: 'VIP',
message: `Bonjour ${customer.name} ! Je vous connecte immédiatement avec votre conseiller dédié.`
};
}
// Client qui commande souvent → escalade rapide si problème
if (customer.orders_count > 10 && intent.includes('reclamation')) {
return {
escalate: true,
priority: 'HIGH',
message: "En tant que client fidèle, vous méritez la meilleure attention. Un spécialiste vous répond immédiatement."
};
}
return { escalate: false };
}
Déclencheur 6 : Timeout ou inactivité prolongée
Si un client ne répond plus au milieu d'un flow important (paiement, modification commande), l'inactivité peut signifier qu'il est perdu ou frustré :
// Gestion du timeout de flow
async function handleFlowTimeout(phone, flowId, lastActivity) {
const inactiveMinutes = getMinutesSince(lastActivity);
if (inactiveMinutes > 30 && isActivePurchaseFlow(flowId)) {
await sendMessage(phone,
"Vous semblez avoir rencontré une difficulté. Besoin d'aide ?\n" +
"[Oui, je veux de l'aide] [Non, je reviens plus tard]"
);
}
if (inactiveMinutes > 60) {
await closePendingFlow(phone, flowId);
await logAbandon(phone, flowId);
}
}
Matrice d'escalade complète
// Moteur de décision d'escalade
async function evaluateEscalation(phone, message, context) {
const evaluations = await Promise.all([
// Check 1 : Demande explicite
{ trigger: 'explicit_human_request', escalate: detectHumanRequest(message), priority: 'IMMEDIATE' },
// Check 2 : Sentiment
{ trigger: 'sentiment', escalate: context.sentimentScore < -0.4, priority: context.sentimentScore < -0.6 ? 'URGENT' : 'HIGH' },
// Check 3 : Fallback loop
{ trigger: 'fallback_loop', ...detectFallbackLoop(context.history) },
// Check 4 : Intent critique
{ trigger: 'critical_intent', escalate: checkIfAlwaysEscalate(context.intent, context.amount), priority: 'HIGH' },
// Check 5 : Client VIP
await checkVIPEscalation(phone, context.intent),
]);
// Prendre la décision la plus prioritaire
const escalateDecisions = evaluations.filter(e => e.escalate);
if (escalateDecisions.length === 0) return { escalate: false };
const priority_order = ['URGENT', 'IMMEDIATE', 'VIP', 'HIGH', 'NORMAL'];
const highestPriority = escalateDecisions.sort((a, b) =>
priority_order.indexOf(a.priority) - priority_order.indexOf(b.priority)
)[0];
return {
escalate: true,
priority: highestPriority.priority,
trigger: highestPriority.trigger,
context: buildEscalationContext(context, highestPriority)
};
}
Pour approfondir, consultez notre guide sur le handoff humain WhatsApp et notre article sur la file d'attente WhatsApp.
FAQ
Q: Faut-il toujours informer le client des raisons de l'escalade ?
A: Partiellement. Pour les raisons neutres ("question complexe"), informer est bien. Pour les raisons liées au sentiment ("je détecte votre frustration"), vous n'avez pas à exposer votre système — dites simplement "Je vais vous connecter avec un spécialiste qui pourra mieux vous aider." La transparence totale sur votre détection de sentiment peut sembler intrusive.
Q: Que se passe-t-il si le client refuse l'escalade vers un humain ?
A: Respectez ce choix. Certains clients préfèrent le bot même quand il ne peut pas tout résoudre (rapidité, disponibilité nocturne). Si le client refuse le transfert, proposez une alternative : "Je comprends. Je vais noter votre demande et notre équipe vous répondra par message dès que possible. Cela vous convient-il ?" Cette solution préserve l'autonomie du client.
Q: Comment éviter les fausses escalades (bot qui transfère trop facilement) ?
A: Calibrez vos seuils basés sur les données. Si votre taux d'escalade dépasse 50%, vos seuils sont probablement trop bas. Analysez les conversations escaladées pour identifier celles qui auraient pu être résolues par le bot. Ajustez les seuils progressivement. L'objectif : escalader les cas qui nécessitent vraiment un humain, pas les cas légèrement difficiles.
Q: Le bot peut-il désescalader (reprendre la conversation après un agent) ?
A: Oui, c'est l'architecture optimale. L'agent résout le problème principal, et si le client a d'autres questions simples, il peut revenir au bot. Cette "désescalade" doit être douce : "Ravi d'avoir pu vous aider ! Pour toute autre question, notre assistant automatique est disponible 24h/24."
Une escalade bien calibrée est le signe d'un système mature. Ni trop peu (qui laisse des clients frustrés sans aide humaine) ni trop souvent (qui surcharge les agents).
Configurez votre système d'escalade intelligente avec Whakup et garantissez la meilleure expérience client WhatsApp à chaque interaction.

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.