Automatiser sa prospection avec n8n : tutoriel complet de A à Z
La prospection manuelle, c'est 6 à 12 heures par semaine de copier-coller, de suivi de tableur et de relances oubliées. Ce temps existe pour chaque commercial dans votre équipe — et il ne génère de valeur que quand la campagne est bien construite.
Ce tutoriel décrit un workflow n8n complet et fonctionnel, nœud par nœud, pour automatiser l'intégralité de la chaîne de prospection. Pas de théorie : chaque étape est accompagnée de la configuration exacte, des paramètres à surveiller et des pièges à éviter.
Avant de plonger dans le build, consultez notre guide complet de la prospection automatisée LinkedIn pour cadrer la stratégie avant d'attaquer l'outillage.
Prérequis avant de commencer
Ne lancez pas le build sans avoir ces éléments prêts. Chaque point manquant bloque une étape entière.
n8n — cloud ou self-hosted
- Cloud Starter : 20 €/mois, 2 500 exécutions/mois — suffisant pour tester.
- Self-hosted sur VPS (Hetzner, OVH) : 5-10 €/mois, exécutions illimitées — recommandé en production.
- Version minimale requise : n8n 1.x (interface Canvas).
Source de prospects
- Apollo.io : tier gratuit avec 50 exports/mois, API disponible dès le plan Basic (49 $/mois). Idéal pour cibler par titre, secteur, taille d'entreprise.
- Sales Navigator : export CSV manuel ou via Phantombuster. Plus précis sur les signaux d'intention.
Dropcontact
- Compte actif avec clé API (menu Intégrations dans le dashboard).
- Plan Starter (79 €/mois) : email finding + vérification catch-all. Suffisant pour 500 à 1 000 enrichissements/mois.
Domaine email dédié et warmé
Ne prospectez jamais depuis votre domaine principal. Créez prospection.votredomaine.fr ou outreach-votredomaine.fr. Warmup minimum : 3 semaines avec
Lemwarm ou Mailreach avant le premier envoi.
CRM connecté
HubSpot (tier gratuit) ou Pipedrive (14 €/mois) — les deux ont des API REST bien documentées et des nœuds natifs dans n8n.
Compte Phantombuster (optionnel mais recommandé)
Plan Starter : 56 €/mois, 20h de temps d'exécution. Nécessaire pour l'outreach LinkedIn automatisé sans risquer votre compte.
Architecture du workflow
Voici la chaîne complète, nœud par nœud, avant d'entrer dans le détail de chaque étape. En production, on la découpe en 2 sous-workflows : un pour le sourcing/enrichissement (déclenché 1x/semaine), un pour la séquence d'outreach (déclenché en continu).
[Schedule Trigger]
↓
[HTTP Request - Apollo API] → [Google Sheets - Staging]
↓
[HTTP Request - Dropcontact API] → [IF - Email trouvé ?]
↓ (oui) ↓ (non)
[Set - Normalisation] [Stop And Error]
↓
[Google Sheets - Lookup doublon] → [IF - Déjà contacté ?]
↓ (non) ↓ (oui)
[HTTP Request - Phantombuster] [Stop And Error]
↓
[Wait - 24 à 48h]
↓
[HTTP Request - Message LinkedIn post-connexion]
↓
[Send Email - J0]
↓
[Wait - 4 jours]
↓
[IF - Email ouvert ?]
↓ (non)
[Send Email - Relance J4]
↓
[Wait - 5 jours]
↓
[Send Email - Breakup J9]
↓
[IF - Réponse positive ?]
↓ (oui)
[HTTP Request - HubSpot/Pipedrive] → [Slack - Notification] Étape 01 — Sourcing : extraire les prospects
Objectif : récupérer une liste de prospects qualifiés depuis Apollo.io et la stocker dans Google Sheets comme zone de staging.
Nœud 1 : Schedule Trigger
- Paramètre
Rule:Every week on Monday at 08:00 - Ce trigger lance le workflow chaque lundi matin. Vous pouvez aussi utiliser un Webhook si vous voulez déclencher manuellement depuis un formulaire.
Nœud 2 : HTTP Request (Apollo API)
- Method :
POST - URL :
https://api.apollo.io/v1/mixed_people/search - Authentication :
Header Auth→ Header Name :X-Api-Key, Value : votre clé Apollo
{
"person_titles": ["Directeur Commercial", "CEO", "Head of Sales"],
"organization_num_employees_ranges": ["1,50", "51,200"],
"person_locations": ["France"],
"page": 1,
"per_page": 25
}
Ne dépassez pas 25 par appel pour rester dans les limites de rate limit
Apollo. Résultat attendu : un tableau JSON de contacts avec first_name, last_name, organization_name, linkedin_url, title.
Nœud 3 : Google Sheets (Staging area)
- Operation :
Append or Update Row - Columns : mapper
first_name,last_name,organization_name,linkedin_url,title,status(valeur fixe :new)
Si vous utilisez Sales Navigator, remplacez le nœud Apollo par un HTTP Request vers l'API Phantombuster "LinkedIn Search Export" — même logique, même destination Google Sheets.
Étape 02 — Enrichissement : trouver les emails
Objectif : pour chaque prospect, trouver et vérifier son adresse email professionnelle via Dropcontact.
Nœud 4 : HTTP Request (Dropcontact API)
n8n dispose d'un nœud natif Dropcontact, mais l'HTTP Request direct donne plus de contrôle sur les paramètres.
- Method :
POST - URL :
https://api.dropcontact.io/batch - Authentication :
Header Auth→ Header Name :X-Access-Token, Value : votre clé Dropcontact
{
"data": [
{
"first_name": "{{ $json.first_name }}",
"last_name": "{{ $json.last_name }}",
"company": "{{ $json.organization_name }}",
"full_name": "{{ $json.first_name }} {{ $json.last_name }}"
}
],
"siren": true,
"language": "fr"
}
Dropcontact renvoie un request_id. Il faut ensuite un
second appel GET pour récupérer le résultat (l'enrichissement prend 5
à 30 secondes).
Nœud 5 : Wait (polling Dropcontact)
Configurez un délai de 30 secondes, puis un second
HTTP Request en GET vers https://api.dropcontact.io/batch/{{ $json.request_id }}
pour récupérer le résultat enrichi.
Nœud 6 : IF (filtre email non trouvé)
- Condition :
{{ $json.email }}is not empty - Branche True → on continue
- Branche False → Stop And Error avec message "Email non trouvé - prospect ignoré"
En pratique, Dropcontact trouve un email dans 60 à 75 % des cas sur une base B2B française.
Nœud 7 : Set (normalisation des données)
Créez des champs propres et uniformes pour la suite du workflow :
-
prospect_email←{{ $json.email[0].email }} -
prospect_firstname←{{ $json.first_name }} -
prospect_lastname←{{ $json.last_name }} -
prospect_company←{{ $json.organization_name }} -
prospect_linkedin←{{ $json.linkedin_url }}
Étape 03 — Déduplication : éviter les doublons
Objectif : ne jamais contacter deux fois le même prospect. Un doublon = une relation abîmée et un signal négatif pour la délivrabilité.
Nœud 8 : Google Sheets (lookup doublon)
- Operation :
Lookup - Lookup Column :
prospect_email - Sheet : "Prospects Contactés" (votre liste historique)
Si l'email existe déjà dans la feuille, le nœud renvoie la ligne correspondante. Sinon, il renvoie un objet vide.
Nœud 9 : IF (déjà contacté ?)
- Condition :
{{ $json.id }}is empty (= pas de ligne trouvée dans Google Sheets) - Branche True → prospect nouveau, on continue
- Branche False → Stop And Error avec message "Doublon détecté - workflow arrêté"
Étape 04 — Outreach LinkedIn : envoyer l'invitation
Objectif : envoyer une invitation LinkedIn personnalisée, attendre l'acceptation, puis envoyer un message de suivi.
Nœud 10 : HTTP Request (Phantombuster — LinkedIn Invitation)
- Method :
POST - URL :
https://api.phantombuster.com/api/v2/agents/launch - Authentication :
Header Auth→X-Phantombuster-Key
{
"id": "VOTRE_AGENT_ID_LINKEDIN_INVITER",
"argument": {
"profileUrls": ["{{ $json.prospect_linkedin }}"],
"message": "Bonjour {{ $json.prospect_firstname }}, je travaille avec des {{ $json.prospect_company }} sur l'automatisation de leurs processus. Je serais ravi d'échanger 15 min avec vous."
}
} Paramètre critique : limitez à 15-20 invitations/jour maximum. LinkedIn détecte et sanctionne les volumes anormaux.
Nœud 11 : Wait (délai post-invitation)
Configurez un délai de 36 heures. Ce délai simule un comportement humain et laisse le temps à la connexion d'être acceptée.
Nœud 12 : HTTP Request (message post-connexion)
Même structure que le nœud 10, mais avec l'agent "LinkedIn Message Sender" de Phantombuster. Le message post-connexion doit être court (3-4 lignes max), apporter de la valeur, et ne pas vendre directement.
Étape 05 — Outreach email : séquence cold email
Objectif : envoyer une séquence de 3 emails espacés sur 9 jours, avec une logique conditionnelle basée sur l'ouverture.
Pour une présentation complète du setup technique, consultez notre guide sur l'automatisation cold email en 7 étapes.
Nœud 13 : Send Email (J0 — Premier contact)
- From :
prenom@prospection.votredomaine.fr - Subject :
{{ $json.prospect_company }}— une idée rapide - Email court (5-7 lignes), personnalisé avec le prénom et l'entreprise, une seule question de clôture.
- Paramètre
Reply-To: votre adresse principale — les réponses arrivent dans votre boîte principale, pas le domaine dédié.
Nœud 14 : Wait (4 jours)
Configurez 4 jours entre le J0 et la relance.
Nœud 15 : IF (email ouvert ?)
Pour tracker les ouvertures, utilisez un service SMTP avec tracking
(Brevo, Mailjet, Postmark). Le nœud HTTP Request interroge l'API du
service pour récupérer le statut opened.
- Branche True → prospect a ouvert mais n'a pas répondu → relance différenciée
- Branche False → prospect n'a pas ouvert → relance standard
Nœud 16 : Send Email (Relance J4)
Objet différent du J0 (jamais "RE:" sur un cold email). Approche différente : témoignage client, chiffre concret, angle nouveau.
Nœud 17 : Wait (5 jours)
Configurez 5 jours avant l'email de breakup.
Nœud 18 : Send Email (Breakup J9)
L'email "breakup" est souvent le plus performant de la séquence. Ton direct, court (3 lignes max), question fermée.
"Bonjour [Prénom], je ferme votre dossier — est-ce que le sujet n'est juste pas une priorité en ce moment ?"
Étape 06 — Qualification : scoring et CRM
Objectif : détecter les réponses positives, créer le contact dans le CRM et alerter l'équipe commerciale en temps réel.
Nœud 19 : IF (réponse positive ?)
La détection de réponse se fait via un Webhook ou un polling de boîte email (nœud IMAP Email). On filtre les réponses qui contiennent des signaux positifs.
- Condition :
{{ $json.email_body }}containsintéresséORdisponibleORoui - Branche True → qualification CRM
- Branche False → log dans Google Sheets avec statut
no_reply
Nœud 20 : HTTP Request (HubSpot ou Pipedrive)
Pour HubSpot :
POST https://api.hubapi.com/crm/v3/objects/contacts
Body: { "firstname", "lastname", "email", "company", "hs_lead_status": "NEW" } Pour Pipedrive :
POST https://api.pipedrive.com/v1/persons
Body: { "name", "email", "org_id" } Nœud 21 : Slack (notification commerciale)
Canal #nouveaux-leads, message automatique avec le nom,
l'entreprise, l'email et la source du lead. Le commercial reçoit une
notification dans les secondes qui suivent la réponse positive. Zéro
lead perdu dans une boîte email.
Les paramètres critiques à ne pas rater
Ces réglages font la différence entre un workflow qui tourne en production et un qui se fait bannir en 48h.
Limites d'envoi quotidien
- LinkedIn : 15-20 invitations/jour maximum. Au-delà, risque de restriction de compte.
- Cold email : 30-50 emails/jour par domaine en phase de warmup, 100-150/jour une fois le domaine mature (6+ semaines).
- Apollo API : 200 requêtes/heure sur le plan Basic.
Délais entre actions
- Toujours ajouter un nœud Wait de 2 à 5 secondes entre des appels API successifs vers le même service.
- Ne jamais enchaîner LinkedIn invitation + message le même jour. Le délai minimum réaliste est 24h.
Gestion des opt-outs
Créez un onglet "Opt-outs" dans Google Sheets. Chaque désabonnement déclenche un webhook qui ajoute l'email dans cet onglet. Le nœud de déduplication doit aussi vérifier cet onglet — un prospect qui s'est désinscrit ne doit jamais être recontacté.
Logs d'erreur
Activez le nœud Error Trigger en parallèle du workflow principal. En cas d'échec, il envoie un email ou un message Slack avec le détail de l'erreur et le nom du nœud en cause. Dans n8n Cloud, activez "Save execution progress" pour pouvoir rejouer les exécutions échouées.
Temps de déploiement réel et coût mensuel du stack
Temps de déploiement
| Phase | Durée estimée |
|---|---|
| Setup des credentials (Apollo, Dropcontact, Phantombuster, CRM) | 2-3h |
| Build du workflow sourcing + enrichissement | 3-4h |
| Build du workflow outreach + séquence email | 3-4h |
| Tests et débogage en mode manuel | 4-6h |
| Warmup domaine email (en parallèle) | 3 semaines |
| Total build actif | ~1 semaine |
Coût mensuel du stack
| Outil | Plan | Prix |
|---|---|---|
| n8n Cloud | Starter | ~20 €/mois |
| Dropcontact | Starter | 79 €/mois |
| Apollo.io | Free tier | 0 € |
| Phantombuster | Starter | 56 €/mois |
| Brevo (SMTP) | Free tier | 0 € |
| HubSpot CRM | Free tier | 0 € |
| Total | ~155 €/mois |
Pour réduire le coût : remplacez Phantombuster par une approche manuelle LinkedIn les 2 premières semaines, et n'activez Dropcontact qu'une fois votre ICP validé. On peut descendre à 50-80 €/mois en phase de test avec Apollo gratuit + n8n self-hosted.
Le ROI est immédiat dès le premier rendez-vous qualifié. Un seul client PME représente en général 3 000 à 15 000 € de CA — le stack est rentabilisé en quelques jours.
Pour aller plus loin sur la mesure de performance, consultez notre guide sur le ROI de la prospection automatisée.
FAQ : automatiser sa prospection avec n8n
01 Faut-il savoir coder pour déployer ce workflow n8n ?
Non. n8n est un outil no-code/low-code avec une interface visuelle. Les seuls moments où vous touchez du code sont les expressions de variables (syntaxe {{ $json.champ }}), qui s'apprennent en 30 minutes. Si vous savez utiliser Excel avec des formules, vous pouvez construire ce workflow.
02 Combien de temps faut-il pour voir les premiers résultats ?
Comptez 3 à 4 semaines entre le début du build et les premiers rendez-vous qualifiés. La contrainte principale n'est pas technique — c'est le warmup du domaine email (3 semaines incompressibles). Le workflow lui-même se construit en 1 semaine.
03 Quel est le budget minimum pour démarrer ?
Environ 50 à 80 €/mois avec n8n self-hosted (5-10 €/mois sur un VPS), Apollo gratuit, Dropcontact Starter (79 €/mois) et Brevo gratuit. Si vous partez sur n8n Cloud + Phantombuster, le budget monte à 150-160 €/mois. Un seul client converti rembourse plusieurs mois de stack.
04 Ce workflow est-il légal au regard du RGPD ?
Oui, sous conditions. La CNIL autorise la prospection B2B par email sans consentement préalable si : (1) le message est en lien avec la fonction professionnelle du destinataire, (2) la personne est informée de l'utilisation de ses données, (3) chaque email inclut un mécanisme de désinscription simple et gratuit. Pour LinkedIn, les CGU interdisent le scraping automatisé — c'est pourquoi on passe par Phantombuster ou des exports Sales Navigator, qui restent dans les limites acceptables.
05 Peut-on adapter ce workflow à d'autres secteurs ou canaux ?
Absolument. La structure Trigger → Sourcing → Enrichissement → Déduplication → Outreach → CRM est universelle. On peut remplacer Apollo par n'importe quelle source (Kaspr, Lusha, Cognism), le cold email par des SMS via Brevo, et HubSpot par Salesforce ou Notion. Chaque étape est indépendante et remplaçable.
Sources utiles
- Documentation officielle n8n — nœuds et expressions ↗
- Dropcontact — intégration n8n et documentation API ↗
- Apollo.io — documentation API REST ↗
- CNIL — règles de prospection commerciale par email (B2B) ↗
- Automatisation de processus métier — Simon Digital Services
- Agents IA sur mesure — Simon Digital Services
- Prospection automatisée LinkedIn — guide complet PME