Innovie — Outbound Google Sheet

J'ai développé une solution de génération de leads dans Google Sheet. Elle est minimaliste et personnalisée.

Enjeux

Overview

Proposition de valeur :

Innovie est un cabinet de courtage en assurances sur-mesure. Leurs équipes optimisent les couvertures des entreprises de plus de 50 employés. Ils permettent ainsi à leurs clients d’économiser des sommes assez astronomiques.

Prospection :

Avant mon intervention, Innovie utilisait SocieteInfo, Dropcontact et Datagma pour trouver les DRH (contacts privilégiés) de leurs prospects, ainsi que leurs numéros de téléphone et emails.

Problèmes

  1. L’équipe d’Innovie était déçue des données de SocieteInfo (contacts et headcount)

  2. Elle trouvait insuffisant le volume de leads généré tous les mois

  3. Globalement, la lead gen leur prenait trop de temps

Pour y répondre Innovie voulait :

  • systématiser et automatiser sa prospection outbound

  • augmenter le nombre de leads traités tous les mois

Objectifs

D’où les objectifs de la mission :

  1. augmenter les taux d’enrichissement

  2. augmenter le volume de leads générés

  3. accélérer la génération de leads

  4. concevoir une solution simple d’utilisation

  5. expliquer le fonctionnement de la solution construite et comment l’utiliser au quotidien.

Structurer le projet

Un choix directeur : l’orchestrateur outbound

Augmenter le volume de leads générés, accélérer la génération de leads et augmenter les taux d’enrichissement sont des objectifs qu’on peut atteindre en choisissant le bon orchestrateur outbound.

Une multitude d’outils remplissent ce rôle : Make, n8n, Cargo, etc. Mais après avoir passé un peu de temps à étudier le fonctionnement d’Innovie, il m’a semblé que Clay remportait la palme.

Voici ce que j’imaginais :

  • conserver SocieteInfo comme source de données pour trouver des entreprises cibles

  • utiliser Clay pour trouver les DRH dans ces entreprises, à partir de leurs URLs LinkedIn

    Puisqu’Innovie était déçue du nombre de contacts trouvés dans les entreprises par SocieteInfo, je pensais qu’on les chercherait plutôt sur LinkedIn grâce à Clay.

  • utiliser Clay pour vérifier qu’entreprises et DRH ne sont pas déjà dans le CRM (Salesforce)

  • utiliser Clay pour trouver les coordonnées des DRH

  • et, enfin, utiliser Clay pour créer les leads dans Salesforce.

Puisque nous avions besoin de l’intégration entre Clay et Salesforce, nous avons souscrit au plan Pro de Clay — certes, onéreux, mais cohérent avec les objectifs de la mission (le quatrième en particulier).

Bref, un choix important venait d’être effectué, permettant de planifier plus précisément le projet.

Roadmap

Voici comment je pensais structurer le projet :

  1. Préparation

    1. Nettoyer Salesforce pour s’assurer du bon dédoublonnage des leads

    2. Configurer le processus d’assignation automatique des leads dans Salesforce

    3. Configurer Clay et l’intégrer à Salesforce

  2. Génération automatique de leads

    1. Choisir un segment de leads à traiter

    2. Utiliser ce segment pour construire le processus de génération de leads dans Clay :

      1. dédoublonnage

      2. recherche de contacts

      3. enrichissement

    3. Assurer le routage de tous les leads à contacter dans Salesforce

  3. Onboarding

    1. Créer un guide d’utilisation vidéo de la solution

    2. Onboarder Innovie sur la solution en live

Il n’y avait plus qu’à dérouler.

Préparation

Nettoyage CRM

Pour le dédoublonnage, nous voulions utiliser les champs suivants : SIRET, téléphone mobile, téléphone fixe, email; sur n’importe lequel de ces objets Salesforce : lead, contact ou account.

Le problème c’est que :

  • nous avions plusieurs dizaine de milliers de leads périmés qui polluaient le CRM inutilement

  • la plupart des leads avaient un SIREN, mais pas de SIRET

  • les SIREN n’étaient pas toujours au même format (e.g 123456789 vs 123 456 789)

  • les téléphones n’avaient pas tous le même format (e.g 01 23 45 67 89 vs. +33123456789).

Ainsi, pour que le dédoublonnage fonctionne, il a fallu :

  1. supprimer les leads périmés

  2. standardiser le champ SIREN au format 123456789

  3. trouver les SIREN manquants à partir des SIRET disponibles

  4. standardiser tous les numéros de téléphone au format +33123456789

Assignation des leads

Les leads créés devaient être assignés tantôt à Adrien (head of sales) si aucun numéro de téléphone n’avait été trouvé, ou à l’une ou l’autre des BDRs dans le cas contraire.

Plutôt que de renseigner manuellement les propriétaires des leads, nous avons préféré configurer Salesforce pour le faire automatiquement :

  • Adrien si aucun numéro de téléphone

  • sinon, BDR en round-robin (BDR 1, puis BDR 2, …, puis BDR n, puis BDR 1, etc.)

D’après Salesforce, voici comment créer une règle d’assignation et créer un round-robin.

Intégration Clay-Salesforce

J’ai vous ai dit plus haut que j’avais fait souscrire Innovie au plan Pro de Clay ?

J’ai menti 🌝

La seule justification au plan supérieur était l’intégration entre Clay et Salesforce justement. Pour ne pas faire trop dépenser trop vite à Innovie, je les ai faits souscrire au plan Explorer et j’ai développé une intégration temporaire entre Clay et Salesforce avec ma propre instance de n8n.

C’était la première fois que j’utilisais Clay, et je voulais m’assurer que c’était pertinent sur le reste du workfow. Grand bien m’a pris — on va le voir plus loin.

Je vous épargne les détails des workflows. Il y en avait deux principaux :

  1. record lookup → pour dédoublonner les leads de Clay avec Salesforce

  2. record creation → pour créer les leads dans Salesforce en fin d’enrichissement.

Bref, Salesforce était nettoyé et intégré à Clay. De solides bases avaient été posées pour commencer à générer les premiers leads.

Génération automatique de leads — Essai 1

Avec SocieteInfo et Clay

Vous pouvez sauter cette partie si les détails techniques ne vous intéressent pas.

J’ai pris un segment de 1000 leads sur SocieteInfo et voici ce que j’ai tenté.

Traitement des entreprises :

  1. supprimer les colonnes inutiles

  2. nettoyer les numéros de téléphone pour coller au format +33123456789

  3. dédoublonner les leads avec ceux présents dans Salesforce

  4. créer l’URL SalesNavigator de l’entreprise à partir de son ID LinkedIn (fourni par SocieteInfo) → “https://www.linkedin.com/sales/company/linkedinId"

  5. créer un identifiant pour l’entreprise à partir de l’URL SalesNav qu’on vient de construire et des URL LinkedIn et de site web déjà fournies par SocieteInfo

  6. utiliser un enrichissement Clay pour trouver le headcount des entreprises

  7. créer le champ Keep Company pour ne garder que les entreprises dont le headcount est entre 40 et 2000 employés, en accord avec l’ICP d’Innovie.

Traitement des contacts :

  1. chercher les DRH des entreprises à partir de l’enrichissement Clay consacré

  2. enrichir les contacts (toujours grâce aux enrichissements de Clay) :

    1. téléphone avec Datagma

    2. emails avec Datagma

    3. emails avec Dropcontact

    On n’utilise que Datagma et Dropcontact car Innovie souscrivait déjà à ces outils. Donc, en renseignant leurs clés d’API dans Clay, les enrichissement, n’auraient pas consommé de crédits Clay.

  3. valider les emails trouvés avec ZeroBounce (enrichissement Clay à nouveau)

  4. s’arrêter là, parce que c’est déjà un véritable fiasco 🙂

Le problème

Sur les 1000 entreprises initiales, après avoir appliqué les filtres sur le nombre d’employés et dédoublonné les leads avec Salesforce, il n’en restait plus que 114.

Cette étape est un peu particulière : certes on peut appliquer des filtres sur le nombre d’employés dans SocieteInfo, mais Innovie ne trouvait pas le filtre fiable. Il a donc fallu externaliser le filtrage.

D’où le passage de 1000 à 114 un peu drastique (mais attendu).

Ce qui l’était moins, c’est la suite…

Sur les 114 entreprises, nous n’avions que 39 leads enrichis à la fin i.e moins de 25%. Et encore, sur les 39 leads, il n’y avait pas que des DRH, mais aussi des DAF et des PDG.

En cause ? La fonctionnalité défectueuse de Clay de recherche de contacts à partir d’URL LinkedIn d’entreprises — un problème bien identifié parait-il.

Ne jetez pas le bébé avec l’eau du bain : Clay n’est pas un mauvais outil, loin de là. En revanche, il est à proscrire si on doit absolument trouver des contacts dans des entreprises à partir de leurs URLs LinkedIn.

Remise à plat

C’était le moment de tout remettre à plat avec Innovie : les données dont on a réellement besoin, vérifier que SocieteInfo est la bonne source de données, et que Clay est le bon orchestrateur.

Nous avons conclu que nous avions besoin des données suivantes :

  • contact

    • prénom

    • nom

    • titre de poste

  • entreprise

    • nom

    • nombre d’employés

    • industrie

    • localisation géographique

    • SIREN

    • site web

  • intents

    Nice-to-have pour Innovie, soyons honnêtes :

    • prise de poste récente

    • levée de fonds qui date

    • offres d’emploi en ligne

Par ailleurs, voici quels étaient les critères dont il fallait tenir compte quant à la solution :

  • simplicité d’utilisation

  • nombre d’outils (qu’on voulait minimiser)

  • prix en dernier lieu

J’ai sélectionné quelques outils du marché et les ai comparés.

Le benchmark parle de lui-même : Pharow l’emporte haut la main.

C’est l’outil qui allait nous permettre d’obtenir d’emblée une liste de DRH en provenance d’entreprises correspondant aux critères d’Innovie et de supplanter SocieteInfo.

Mais il fallait encore se poser la question des bons outils pour :

  • dédoublonner les leads avec Salesforce (impossible avec Pharow en août 2024)

  • maximiser les taux d’enrichissement des coordonnées de contact

  • créer les leads en masse dans Salesforce

À condition de souscrire au plan Pro, nous pouvions toujours utiliser Clay mais :

  1. j’avais perdu confiance en l’outil

    Argument émotionnel, certes. J’étais pas absolument certain de vouloir poursuivre avec une solution si chère qui m’avait déjà déçu une première fois.

  2. l’abonnement restait onéreux et nous étions encore sur l’abonnement Explorer (après une première déconvenue, je me voyais mal dire à Innovie qu’ils allaient devoir payer deux fois plus cher tous les mois avec l’abonnement Pro)

  3. utiliser Clay n’est pas horriblement difficile, mais ce n’est pas trivial non plus — je m’en suis aperçu après cette première salve de tests.

C’est pour cette raison que j’ai décidé de revenir en terrain connu avec Google Sheet et Google Apps Script (j’avais déjà construit une espèce de Clay pour PayFit, en stage, quelques années auparavant).

Je savais qu’il n’y avait pas de vraies limites à ce que je pouvais y développer et qu’il n’y avait rien de plus simple à utiliser pour mon client qu’une Google Sheet.

Enfin, toujours dans le but de simplifier, mais aussi pour maximiser les taux d’enrichissement, j’ai suggéré de remplacer Dropcontact et Datagma par FullEnrich.

La nouvelle stack était choisie, rebelote, il n’y avait plus qu’à dérouler.

Génération automatique de leads — Essai 2

Avec Pharow et Google Sheet

Pharow est simple à prendre en main : quelques filtres, un enrichissement Dropcontact (fonctionnalité native de Pharow, sans surcoût) et on se retrouve avec ce genre de listes :

La suite devait se dérouler dans la Google Sheet.

Voici ce que je devais implémenter avec Google Apps Script (le code qui permet d’automatiser une spreadsheet — comme VBA pour Excel) :

  • cleaner les données de Pharow (notamment les numéros de téléphone)

  • dédoublonner les leads avec Salesforce

  • trouver les identifiants de convention collective des leads avec Pappers (donnée importante pour Innovie)

  • enrichir les leads de coordonnées de contact avec FullEnrich (téléphones mobiles et emails lorsque Dropcontact n’a rien trouvé dans Pharow)

  • créer les leads dans Salesforce

J’ai développé un MVP incluant toutes ces fonctionnalités et m’en suis servi pour générer 3000 leads pour Innovie, en préparation de la rentrée de septembre 2024.

Malheureusement, nous n’étions pas encore au bout de nos peines…

Problèmes de dédoublonnage

La douche froide : parmi les 3000 leads générés, des centaines étaient déjà présents dans Salesforce. Il a fallu tous les supprimer et parfaire le processus de déduplication.

On ne pouvait pas s’appuyer uniquement sur le SIREN, les numéros de téléphone et les emails. Il fallait également inclure les SIRET, les sites web et les noms de domaine des emails.

Bref, mea culpa.

Mais en attendant, il fallait quand même des leads pour la rentrée.

Les BDR étaient en mesure d’en traiter 70 par jour donc, quotidiennement, j’ai pris un batch de la liste des 3000 leads, et j’ai vérifié manuellement qu’ils n’étaient pas déjà présents dans Salesforce.

J’ai réimporté 2300+ leads dans Salesforce de cette manière et, en parallèle, j’ai fait la Google Sheet automatisée au niveau supérieur.

AutoSheet — Version finale

J’ai appelé AutoSheet la version finale de la Google Sheet automatisée.

Nouvelles fonctionnalités

Pour parvenir à la version finale d’AutoSheet, j’ai :

  1. repris le processus de déduplication (évidemment)

  2. permis à l’utilisateur de s’assurer manuellement de la présence de doublons en plus de la vérification automatique de mes automatisations (pour être absolument sûr)

  3. permis à l’utilisateur d’enrichir les conventions collectives avec Pappers et les coordonnées de contact avec FullEnrich ou… Clay.

    Innovie avait pris une souscription annuelle à Clay. Même si nous ne souhaitions plus l’utiliser, ils avaient payé assez cher un grand nombre de crédits.

    J’ai donc développé une fonctionnalité supplémentaire pour leur permettre d’enrichir les coordonnées de contact et siphonner les crédits de Clay depuis la spreadsheet.

    Du bricolage, certes, mais fonctionnel. Une fois tous les crédits siphonnés, ils n’auraient plus qu’à utiliser FullEnrich.

  4. amélioré l’UI/UX de la Google Sheet en utilisant des panneaux latéraux (cf. screenshot 👆)

  5. bloqué l’enrichissement si le nombre de crédits Pappers ou FullEnrich était insuffisant

  6. ajouté du logging pour suivre l’avancement des automatisations

  7. amélioré la mise en forme des colonnes de la spreadsheet (checkbox, headers, etc.)

Comment j’ai développé ces fonctionnalités

Je l’ai dit un peu plus haut : automatiser une Google Sheet se fait avec du code Google Apps Script, associé à la Google Sheet, et invisible pour mon client :

Ça ressemble à ça.

Et pour développer tous ces scripts, j’ai utilisé un outil absolument phénoménal, que je recommande à tout développeur d’essayer : Cursor.

Voici comment j’ai utilisé Cursor tout au long du projet.

Et voici le genre de suggestions que Cursor me faisait. On comprend facilement le temps que j’ai gagné.

Onboarding

Pour le bénéfice du client et une bonne adoption de la solution, il est essentiel de la documenter et de montrer en live au client comment l’utiliser (ce que je ne faisais pas auparavant — à tort).

Le guide d’utilisation final, par écrit et en vidéo.

Résultats

La roadmap duement complétée à laquelle Innovie pourra toujours se référer pour voir exactement ce que j’ai fait et à quelles dates.

Et des clients satisfaits.

Reply

or to participate.