Aller au contenu principal

Fiabiliser et exploiter une base de contacts de vingt ans

Une base de plusieurs dizaines de milliers d’adresses accumulées depuis vingt ans, inexploitable en l’état. J’ai écrit un script Python qui interroge les serveurs de messagerie pour trier les adresses mortes sans envoyer un seul message.

Université Stratégie de communication BUT 3 Semestre 5
Visuel à venir — le motif ci-dessus tient la place en attendant les captures du projet.

Contexte

Mad’in Event avait un fichier de contacts nourri depuis le début de son activité : des dizaines de milliers d’adresses professionnelles, accumulées événement après événement pendant vingt ans. Personne ne s’en servait.

Il y avait une bonne raison à ça. Sur un fichier de cet âge, une part importante des adresses ne correspond plus à personne : entreprises fermées, salariés partis, domaines expirés. Envoyer une campagne sur une base dans cet état produit une avalanche de rebonds, et les rebonds dégradent la réputation d’expéditeur du domaine — c’est-à-dire la probabilité que les messages suivants arrivent dans une boîte de réception plutôt qu’en indésirable. Une base sale ne se contente pas de ne pas fonctionner, elle abîme les envois futurs.

Aucun outil disponible dans l’entreprise ne permettait de traiter ce volume, et les services de vérification du marché facturent à l’adresse. Sur plusieurs dizaines de milliers de lignes, le coût devenait un sujet à part entière.

Démarche

Écrire l’outil plutôt que l’acheter

J’ai développé ma propre solution en Python, exécutée depuis le terminal. Le principe repose sur le protocole SMTP lui-même : on peut interroger le serveur de messagerie responsable d’un domaine et engager avec lui le début d’une transaction — se déclarer, annoncer un expéditeur, puis annoncer un destinataire — sans jamais transmettre de message. À l’annonce du destinataire, le serveur répond par un code numérique qui indique s’il accepte ou refuse cette boîte. Lire ce code permet de conclure sur l’existence de l’adresse sans rien envoyer, donc sans générer de rebond et sans dégrader la réputation du domaine.

Pour chaque adresse : extraire le domaine, interroger son enregistrement MX, ouvrir une connexion SMTP, engager la transaction, annoncer l’adresse à vérifier, lire le code de réponse, fermer, journaliser, temporiser.

L’exécution durait des heures. La vérification ne peut pas être menée à pleine vitesse, sous peine d’être interprétée par les serveurs interrogés comme une tentative d’énumération d’adresses et bloquée en conséquence. J’ai donc lancé ces traitements en tâche de fond pendant que je travaillais sur d’autres dossiers.

Ce que la méthode ne peut pas faire

Il faut l’exposer, sinon on surévalue le résultat. Certains domaines sont configurés en réception universelle : ils acceptent tout destinataire, y compris inexistant, et renvoient donc systématiquement une réponse positive. D’autres serveurs répondent volontairement de manière uniforme, précisément pour empêcher ce type de vérification. D’autres diffèrent leur réponse à une première sollicitation.

La vérification SMTP ne produit donc pas une certitude mais une probabilité, et une part des adresses ressort dans un état indéterminé. J’ai retenu une règle prudente : éliminer ce qui est certainement invalide, conserver ce qui est certainement valide, et isoler le reste plutôt que de trancher au hasard.

Segmenter, puis envoyer

Une fois la base nettoyée, elle a été segmentée selon les clientèles réelles de l’agence. Les campagnes sont d’abord parties sous Mailchimp, puis j’ai basculé sur Brevo : Mailchimp plafonnait à 2 500 contacts pour 60 € par mois, Brevo offrait un avantage tarifaire à fonctionnalités équivalentes pour notre usage.

Cette migration n’a pas été aussi nette que ça en a l’air. On y migre quatre choses distinctes — des listes, des segments, des gabarits et une réputation d’expéditeur — et chacune peut se dégrader au passage. La dernière est la plus coûteuse, parce qu’elle ne se transfère pas : elle se rebâtit envoi après envoi. Un problème technique lié à Brevo figurait encore dans mes tâches en juin 2026, à quelques semaines de mon départ.

Le rythme retenu était hebdomadaire, le mardi matin. Chaque envoi était suivi d’une séquence de relance adressée aux non-ouvreurs à trois jours puis à dix jours, soit environ 70 % de la base à chaque campagne.

Résultats

Ce sont les résultats les plus mesurables de mon alternance.

  • Taux d’ouverture moyen : 25 à 30 %
  • Taux de réactivité (clics rapportés aux ouvertures) : environ 50 %
  • Taux de désinscription : inférieur à 0,5 % par envoi
  • Taux de rebond ramené à un niveau négligeable après nettoyage

Une précision s’impose sur le taux de clic, parce qu’elle conditionne la lecture de tout le reste. Les 50 % correspondent à un taux de réactivité, c’est-à-dire au nombre de clics rapporté au nombre d’ouvertures, et non au nombre d’envois. Rapporté aux envois, le taux de clic se situe autour de 12 à 15 %. Confondre ces deux indicateurs conduirait à annoncer un chiffre invraisemblable ; les distinguer est la première rigueur qu’impose ce métier.

Sur le plan commercial, ces campagnes ont produit des dizaines de prises de rendez-vous et de briefs entrants attribuables à la communication. Le taux de transformation en affaires signées est resté faible, ce qui est cohérent avec un cycle de vente long et concurrentiel.

Ce que j’en retire

Auto-évaluation

Les compétences développées ici sont celles que j’attendais le moins de ce poste. Le traitement de données — comprendre une structure de fichier, écrire un script pour l’interroger, interpréter des codes de réponse serveur, arbitrer sur des cas indéterminés — ne relève pas du cœur de métier d’un chargé de communication, et c’est précisément ce qui en fait un différenciateur.

J’ai aussi appris à défendre la valeur d’un pôle support avec un raisonnement économique. Dans l’événementiel, une affaire conclue représente un événement d’au moins dix mille euros. Il suffit donc qu’une seule de ces opportunités aboutisse dans l’année pour que le coût d’un poste d’alternant en communication soit couvert plusieurs fois. C’est le raisonnement que j’ai présenté en réunion, et il illustre un apprentissage central : dans une petite structure, une fonction support ne se justifie pas par ses indicateurs de portée, mais par sa contribution démontrable au chiffre d’affaires.

Sur le RGPD, je ne peux pas affirmer que tout était en règle, ce serait inexact. Les contacts avaient accepté d’être recontactés, mais un consentement de 2007 n’est pas un consentement au sens de 2026. La prospection s’adressait à des professionnels dans un cadre professionnel, configuration dans laquelle le règlement admet l’intérêt légitime sous trois conditions — rapport direct avec la fonction du destinataire, message identifié comme commercial, moyen de refus simple et permanent. Les trois étaient remplies. Le nettoyage relève lui-même du principe de minimisation : entrepris pour des raisons de délivrabilité, il a produit un effet de conformité.

Auto-critique constructive

La principale lacune méthodologique de ce pôle, c’est que je n’ai jamais mis en place de test A/B. La newsletter était très dense et fortement commerciale, à la demande du dirigeant, alors que les recommandations les plus répandues préconisent l’inverse : un message, un objectif, un appel à l’action unique. J’ai appliqué le brief. Je ne peux pas conclure qu’il avait tort — les résultats ne montrent aucun signe de rejet. Je ne peux pas non plus conclure qu’il avait raison, faute d’avoir testé. Disposer d’une base segmentée de plusieurs dizaines de milliers d’adresses offrait les conditions idéales pour tester une hypothèse sur un échantillon ; je ne l’ai pas fait, et je n’ai donc que des corrélations là où j’aurais pu produire des démonstrations.

Deux chantiers resteraient à mener pour parler d’une base réellement à jour, et je les ai signalés dans le document de passation : une campagne de reconfirmation du consentement sur les contacts les plus anciens, et une politique de conservation fixant une durée au-delà de laquelle un contact inactif est supprimé. Aucun des deux n’a été mis en œuvre pendant mon année.

Compétences mobilisées

4 apprentissage(s) critique(s) rattaché(s) à cette réalisation.

AC15.01

Gérer un projet avec une méthode classique

Entreprendre

J’ai produit un rapport d’indicateurs mensuel présenté en réunion de direction, de septembre à juillet, et j’ai dû apprendre à distinguer rigoureusement les métriques. Le taux de réactivité que j’annonce — environ 50 % — rapporte les clics aux ouvertures et non aux envois ; rapporté aux envois il se situe entre 12 et 15 %. Confondre les deux conduirait à annoncer un chiffre invraisemblable. J’ai également construit un raisonnement économique pour traduire ces résultats en argument recevable par un dirigeant : une affaire événementielle représentant au moins dix mille euros, une seule opportunité aboutie couvre plusieurs fois le coût du poste.

AC21.01

Analyser la stratégie de communication ou marketing d'un acteur, d'une organisation au regard d'un secteur ou d'un marché (stratégie, mission, valeurs...)

Comprendre

Le tri des adresses n’est pas un problème purement technique : la vérification SMTP produit une probabilité, pas une certitude. Réception universelle, réponses uniformes délibérées, réponses différées — plusieurs configurations rendent le verdict indéterminé. J’ai donc défini une règle de décision explicite : éliminer ce qui est certainement invalide, conserver ce qui est certainement valide, isoler le reste plutôt que de trancher au hasard. Puis j’ai segmenté la base restante selon les clientèles réelles de l’agence, pour que le ciblage repose sur une analyse et non sur un envoi de masse.

AC25.02

Cartographier un écosystème (identification des acteurs, synthèse des propositions de valeur)

Entreprendre

J’ai instruit moi-même la question RGPD plutôt que de la déclarer réglée. Une partie des consentements remontait à une vingtaine d’années, donc à une époque antérieure au règlement. J’ai identifié la base légale applicable — l’intérêt légitime en prospection professionnelle — et vérifié les trois conditions qu’elle impose : rapport direct avec la fonction du destinataire, identification commerciale du message, moyen de refus simple et permanent. J’ai aussi signalé dans mon document de passation les deux chantiers restants : reconfirmation du consentement sur les contacts les plus anciens et politique de conservation. Je préfère exposer une conformité partielle documentée qu’affirmer une conformité que je ne peux pas prouver.

AC34.01

Développer à l’aide d’un framework de développement côté client

Développer

J’ai développé en Python un outil de vérification d’adresses qui interroge directement les serveurs de messagerie via le protocole SMTP : résolution de l’enregistrement MX du domaine, ouverture de connexion, engagement d’une transaction jusqu’à l’annonce du destinataire, lecture du code de réponse, journalisation et temporisation. Le script traite plusieurs dizaines de milliers de lignes sans jamais envoyer de message, donc sans générer de rebond. J’ai également dû gérer la temporisation pour ne pas être bloqué par les serveurs interrogés, qui interprètent une cadence trop élevée comme une énumération d’adresses.