Aller au contenu principal
Guides & Stratégie• 6 min de lecture

Reporting WhatsApp Marketing mensuel : créer un rapport qui convainc

Construire un rapport mensuel WhatsApp Marketing qui démontre la valeur du canal à votre direction. Structure, métriques clés, visualisations et storytelling data pour décideurs africains.

Le rapport mensuel WhatsApp Marketing est votre outil de légitimation du canal. Sans lui, WhatsApp est perçu comme un outil sympa sans preuve de valeur réelle. Avec un bon rapport, c'est un investissement stratégique avec des ROI documentés qui justifient les budgets alloués.

Ce guide vous explique comment construire un rapport mensuel qui convainc les décideurs, même ceux qui ne connaissent pas WhatsApp.

La structure du rapport mensuel efficace

Un bon rapport mensuel suit une logique narrative en 6 parties :

1. Synthèse exécutive (1 page) — Ce qui s'est passé ce mois en 3 chiffres clés, comparaison avec le mois précédent, 1 action recommandée.

2. Performance du canal (2 pages) — Volume et croissance, engagement (taux d'ouverture, taux de réponse), rétention (opt-out rate).

3. Performance commerciale (2 pages) — Conversions générées, chiffre d'affaires attribuable, coût par acquisition comparé aux autres canaux.

4. Performance du bot (1-2 pages) — Taux de résolution, CSAT, économies en coûts d'agents.

5. Focus du mois (1 page) — Analyse approfondie d'un sujet spécifique : campagne test, A/B test, nouveau segment.

6. Recommandations (1 page) — 3 actions prioritaires pour le mois suivant.

Générer les données du rapport automatiquement

async function generateMonthlyReport(year, month) {
  const period = {
    start: new Date(year, month - 1, 1),
    end: new Date(year, month, 0, 23, 59, 59)
  };
  
  const [channelMetrics, commercialMetrics, botMetrics] = await Promise.all([
    getChannelMetrics(period),
    getCommercialMetrics(period),
    getBotMetrics(period)
  ]);
  
  const prevPeriod = {
    start: new Date(year, month - 2, 1),
    end: new Date(year, month - 1, 0, 23, 59, 59)
  };
  const prevMetrics = await getChannelMetrics(prevPeriod);
  
  return {
    report_period: `${getMonthName(month)} ${year}`,
    generated_at: new Date(),
    executive_summary: buildExecutiveSummary(channelMetrics, commercialMetrics, prevMetrics),
    channel_performance: channelMetrics,
    commercial_performance: commercialMetrics,
    bot_performance: botMetrics,
    mom_comparison: buildMoMComparison(channelMetrics, prevMetrics)
  };
}

async function getChannelMetrics(period) {
  return {
    contacts_new_this_month: await db.getNewContacts(period),
    conversations_total: await db.getConversationCount(period),
    messages_sent: await db.getMessagesSentCount(period),
    open_rate: await db.getOpenRate(period),
    reply_rate: await db.getReplyRate(period),
    opt_out_rate: await db.getOptOutRate(period),
    messaging_cost_fcfa: await db.getMessagingCost(period),
    cost_per_conversation: await db.getCostPerConversation(period)
  };
}

async function getCommercialMetrics(period) {
  return {
    leads_generated: await db.getLeadsCount(period),
    sales_from_whatsapp: await db.getSalesCount(period),
    revenue_attributed_fcfa: await db.getRevenueAttributed(period),
    conversion_rate: await db.getConversionRate(period),
    cost_per_lead_fcfa: await db.getCostPerLead(period)
  };
}

La synthèse exécutive : l'art de la simplification

La synthèse exécutive doit tenir en une page et répondre à : qu'est-ce qui s'est bien passé, qu'est-ce qui s'est moins bien passé, et quelle est la prochaine action prioritaire.

function buildExecutiveSummary(current, commercial, previous) {
  const highlights = [];
  
  // Croissance de la base
  const growthPct = ((current.contacts_new_this_month / previous.contacts_new_this_month) - 1) * 100;
  highlights.push({
    metric: 'Base contacts',
    value: `+${current.contacts_new_this_month} nouveaux contacts`,
    trend: `${growthPct > 0 ? '+' : ''}${growthPct.toFixed(0)}% vs mois précédent`
  });
  
  // Impact commercial
  highlights.push({
    metric: 'Revenus attribués',
    value: `${formatCurrency(commercial.revenue_attributed_fcfa)} FCFA`,
    context: `${commercial.sales_from_whatsapp} ventes générées via WhatsApp`
  });
  
  // ROI global
  const roi = (commercial.revenue_attributed_fcfa - current.messaging_cost_fcfa) /
              current.messaging_cost_fcfa * 100;
  highlights.push({
    metric: 'ROI WhatsApp',
    value: `${roi.toFixed(0)}x`,
    context: `Pour 1 FCFA investi, ${(roi / 100 + 1).toFixed(1)} FCFA générés`
  });
  
  return { highlights, recommendation: generateTopRecommendation(current, commercial) };
}

function generateTopRecommendation(channelMetrics, commercialMetrics) {
  if (channelMetrics.opt_out_rate > 0.05) {
    return {
      priority: 'urgent',
      action: 'Réduire la fréquence d\'envoi',
      reason: `Taux de désabonnement élevé (${(channelMetrics.opt_out_rate * 100).toFixed(1)}%)`,
      expected_impact: 'Stabiliser la base contacts'
    };
  }
  if (channelMetrics.reply_rate < 0.10) {
    return {
      priority: 'high',
      action: 'Revoir les messages sortants',
      reason: `Taux de réponse faible (${(channelMetrics.reply_rate * 100).toFixed(1)}%)`,
      expected_impact: '+20-30% d\'engagement estimé'
    };
  }
  return {
    priority: 'normal',
    action: 'Tester un nouveau segment d\'audience',
    reason: 'Performance stable — opportunité d\'expansion',
    expected_impact: '+15-25% de volume de leads estimé'
  };
}

Comparaison coût par lead entre canaux

async function getChannelCostComparison(period) {
  return {
    whatsapp: {
      label: 'WhatsApp',
      cost_per_lead_fcfa: await db.getCostPerLead('whatsapp', period)
      // Typique en Afrique : 150-300 FCFA/lead
    },
    sms: {
      label: 'SMS',
      cost_per_lead_fcfa: await db.getCostPerLead('sms', period)
      // Typique : 400-600 FCFA/lead
    },
    email: {
      label: 'Email',
      cost_per_lead_fcfa: await db.getCostPerLead('email', period)
      // Typique : 200-500 FCFA/lead
    },
    paid_ads: {
      label: 'Publicité payante',
      cost_per_lead_fcfa: await db.getCostPerLead('paid_ads', period)
      // Typique : 800-1500 FCFA/lead
    }
  };
}

Les 4 visualisations obligatoires

Graphiques à inclure dans chaque rapport mensuel :

  1. Évolution mensuelle des conversations (12 mois, courbe) — montre la croissance du canal
  2. Funnel de conversion (contactés → engagés → convertis) — montre l'efficacité globale
  3. Comparaison coût par lead vs autres canaux (barres) — justifie l'investissement WhatsApp
  4. Distribution des intents (camembert) — montre ce que les clients demandent

Ces 4 graphiques répondent aux 4 questions que tout directeur pose : "Ça grossit ? Ça convertit ? C'est rentable ? Les clients en veulent ?"

Pour approfondir, consultez notre guide sur les KPIs chatbot WhatsApp et notre article sur la corrélation WhatsApp et ventes.

FAQ

Q: Comment calculer le revenu attribuable à WhatsApp quand un client utilise plusieurs canaux ?

A: La règle la plus pragmatique est l'attribution last-touch : si la dernière interaction avant l'achat était via WhatsApp, l'achat est attribué à WhatsApp. Pour la plupart des PME africaines, utilisez la règle "WhatsApp a participé à la vente" : un client qui a interagi via WhatsApp dans les 30 jours avant l'achat = vente influencée par WhatsApp. Documentez clairement votre méthode d'attribution dans le rapport pour éviter les comparaisons erronées.

Q: Quelle est la bonne fréquence pour ce rapport ?

A: Mensuelle pour le rapport complet présenté à la direction. Hebdomadaire pour un résumé court de 5 métriques clés pour l'équipe opérationnelle. Les décideurs qui reçoivent trop de rapports les lisent moins. Un rapport mensuel bien structuré vaut mieux que 4 rapports hebdomadaires bâclés.

Q: Comment présenter les résultats quand un mois a été mauvais ?

A: Présentez les faits objectivement avec le contexte (événement saisonnier, changement WhatsApp, A/B test en cours). Montrez que vous avez identifié la cause et proposez un plan correctif concret. Une direction apprécie plus la transparence et le plan d'action qu'une présentation enjolivée de mauvais résultats.

Q: Doit-on inclure les coûts de messagerie WhatsApp Business dans le rapport de ROI ?

A: Oui, absolument. Un ROI calculé sans les coûts réels est trompeur. Incluez : frais de messagerie Meta, coût de la plateforme Whakup, coût en temps homme pour la gestion du canal. C'est avec ces coûts réels que le ROI de WhatsApp reste souvent meilleur que les alternatives — ne cachez pas ces coûts.


Un rapport mensuel bien construit transforme WhatsApp d'un outil opérationnel en investissement stratégique visible par toute la direction. La donnée bien présentée est votre meilleur argument pour obtenir plus de ressources et de budget.

Générez votre rapport mensuel automatiquement avec Whakup Analytics et gagnez 2 heures de travail chaque mois.

#whatsapp-business-api-guide#automatisation-whatsapp-flows#chatbot-whatsapp-guide
Pablo Lenormand
Pablo LenormandCo-fondateur & CPO

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 gratuit