Campagne de réactivation multi-canal sur 5 517 contacts dormants
Historique de 5 517 contacts commerciaux inactifs (particuliers + pros, "dead" jamais conclus + résiliés passés) sur 6 centres. Potentiel commercial dormant non exploité, aucune campagne structurée depuis des années. Date limite commerciale : 31 mai.
Problème
- Routage : une campagne unique pour 6 centres ne tient pas — chaque lead doit atterrir chez le responsable du centre concerné, pas dans une inbox centrale.
- Mix email + SMS indispensable (taux d'ouverture SMS > email sur ce type de base).
- Pas de budget agence. Délai serré.
- Personnalisation : chaque email doit porter prénom, ville du centre, téléphone local, et atterrir sur une landing page pré-remplie avec ces mêmes paramètres.
Approche
Architecture complète bout-en-bout, livrée en trois jours en parallèle d'une activité de direction à temps plein.
1. Segmentation
6 listes Brevo : dead PART email, résiliés PART email, dead PRO email, résiliés PRO email, dead PART SMS, dead PRO SMS. Attributs CSV enrichis : EMAIL, PRENOM, VILLE_CENTRE, TEL_CENTRE, EMAIL_CENTRE, NOM_SOCIETE.
2. Templates pilotés par API
6 templates email + 2 SMS générés et mis à jour par script Python (pas d'édition manuelle dans l'UI Brevo → versionné, reproductible). CTA dynamiques : okbox.fr/offre/[slug]?c=[centre]&prenom=[PRENOM]&em=[EMAIL] — l'URL porte le contexte jusqu'à la landing page.
3. Redirection WordPress
Plugin Redirection en mode regex, pass-through des query strings (critique — sans ça, perte de contexte à l'arrivée). 3 règles : /offre/1euro → dead_part · /offre/retour → résiliés · /offre/pro → pro.
4. Landing pages Netlify
3 pages HTML statiques, pré-remplissage dynamique (prénom, centre) à partir des query strings. Formulaire Netlify Forms avec champs cachés.
5. Routage des leads par centre via Netlify Function
Chaque soumission déclenche une fonction submission-created.mjs qui extrait le centre depuis un champ caché et route l'email via Brevo transactionnel vers l'adresse du centre. Reply-To = email du prospect → le responsable de centre répond directement au lead. Notification native Netlify laissée en doublon vers l'inbox principale (filet de sécurité).
6. Ordonnancement
Envois programmés via API Brevo (status=queued). PRO d'abord (listes courtes, validation comportement), PART ensuite à J+1, J+2, J+3. Relance J+7 automatique pour les non-ouvreurs (template dédié).
Stack
Python 3 · API Brevo (email + SMS + transactionnel) · Netlify (hébergement + functions serverless) · Netlify Functions (Node.js) · WordPress Redirection plugin · DNS Cloudflare
Résultats
5 517
contacts touchés
6 listes segmentées
< 100 €
coût d'envoi total
Brevo + Netlify
3 j
temps de build
bout-en-bout
- Routage automatique des leads vers les 6 centres, sans inbox centrale engorgée.
- Campagne reproductible à l'infini : on change la DB source et les 6 templates, on relance.
- Ce qui aurait été facturé 15 à 20 k€ en prestation agence il y a deux ans, livré en interne avec Claude Code comme copilote.
Ce que ce projet illustre
- Capacité à couvrir l'ensemble de la chaîne d'acquisition multi-canal : segmentation, templating, tracking, routage, reporting.
- Maîtrise d'APIs tierces (Brevo, Netlify, WordPress) sans dépendre d'une agence.
- Sensibilité aux frictions réelles : pass-query-strings sur WordPress, Reply-To transactionnel, filet de sécurité sur la notif native — les détails qui font qu'une campagne aboutit ou se perd.
- Effet multiplicateur : même stack réutilisable sur n'importe quelle campagne future (acquisition, fidélisation, événement) — investissement one-shot, ROI récurrent.