Qualification et cultivation automatisées des prospects avec JotForm, HubSpot, e-mails et notation par IA
Ceci est unAI Summarizationworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme If, Set, Code, Slack, Hubspot. Qualification automatisée et cultivation des prospects avec JotForm, HubSpot, e-mails et notation IA
- •Token Bot Slack ou URL Webhook
- •Clé API HubSpot
- •Informations d'identification Google Sheets API
Nœuds utilisés (12)
Catégorie
{
"meta": {
"instanceId": "162ac074e4d71c45bf56839ebdf3fced34910e0c755169697977507dcb193b1b",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "c016b293-b976-428f-b72c-f1d287c74a4d",
"name": "Déclencheur JotForm",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-560,
576
],
"webhookId": "jotform-webhook",
"parameters": {},
"typeVersion": 1
},
{
"id": "ae285cb5-4ac1-4cbf-beb7-37be3e90c747",
"name": "Extraire et Formater les Données Lead",
"type": "n8n-nodes-base.set",
"position": [
-336,
576
],
"parameters": {
"mode": "combine",
"options": {}
},
"executeOnce": false,
"typeVersion": 3.3
},
{
"id": "681c776e-6e28-4b04-96fe-ea656438b55e",
"name": "Scoring IA du Lead",
"type": "n8n-nodes-base.code",
"position": [
-112,
576
],
"parameters": {
"jsCode": "// AI-powered lead scoring algorithm\nconst items = $input.all();\nconst scoredItems = [];\n\nfor (const item of items) {\n const data = item.json;\n let score = 0;\n let qualificationNotes = [];\n \n // Email domain scoring (business vs personal)\n const email = data.email || '';\n const domain = email.split('@')[1] || '';\n const personalDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com'];\n \n if (!personalDomains.includes(domain.toLowerCase())) {\n score += 25;\n qualificationNotes.push('Business email domain (+25)');\n } else {\n qualificationNotes.push('Personal email domain (0)');\n }\n \n // Company size scoring\n const companySize = data.companySize || data.company_size || '';\n if (companySize.includes('50+') || companySize.includes('100+') || companySize.includes('500+')) {\n score += 30;\n qualificationNotes.push('Large company size (+30)');\n } else if (companySize.includes('10-50') || companySize.includes('25-99')) {\n score += 20;\n qualificationNotes.push('Medium company size (+20)');\n } else {\n score += 10;\n qualificationNotes.push('Small company size (+10)');\n }\n \n // Budget scoring\n const budget = data.budget || data.estimatedBudget || '';\n if (budget.includes('$10,000+') || budget.includes('$25,000+') || budget.includes('Enterprise')) {\n score += 25;\n qualificationNotes.push('High budget (+25)');\n } else if (budget.includes('$5,000') || budget.includes('$10,000')) {\n score += 15;\n qualificationNotes.push('Medium budget (+15)');\n } else {\n score += 5;\n qualificationNotes.push('Lower budget (+5)');\n }\n \n // Timeline scoring (urgency)\n const timeline = data.timeline || data.implementation_timeline || '';\n if (timeline.includes('Immediately') || timeline.includes('Within 1 month') || timeline.includes('ASAP')) {\n score += 20;\n qualificationNotes.push('Urgent timeline (+20)');\n } else if (timeline.includes('1-3 months') || timeline.includes('Next quarter')) {\n score += 10;\n qualificationNotes.push('Medium timeline (+10)');\n } else {\n score += 5;\n qualificationNotes.push('Long timeline (+5)');\n }\n \n // Determine lead tier\n let leadTier = 'Cold';\n if (score >= 75) {\n leadTier = 'Hot';\n } else if (score >= 50) {\n leadTier = 'Warm';\n }\n \n scoredItems.push({\n json: {\n ...data,\n leadScore: score,\n leadTier: leadTier,\n qualificationNotes: qualificationNotes,\n scoredAt: new Date().toISOString()\n }\n });\n}\n\nreturn scoredItems;"
},
"typeVersion": 2
},
{
"id": "c3bf276b-f38e-47e5-87e4-b0055d6aa140",
"name": "Router par Qualité du Lead",
"type": "n8n-nodes-base.if",
"position": [
112,
576
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "hot-lead",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.leadTier }}",
"rightValue": "Hot"
},
{
"id": "warm-lead",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.leadTier }}",
"rightValue": "Warm"
}
]
}
},
"typeVersion": 2
},
{
"id": "6ad68ea3-621f-4abd-b8c6-1b6d55c8d95e",
"name": "Ajouter au CRM HubSpot",
"type": "n8n-nodes-base.hubspot",
"position": [
560,
384
],
"parameters": {
"operation": "create"
},
"typeVersion": 2
},
{
"id": "cfb3e0c8-9b5d-43e5-ab58-6a5cd542f566",
"name": "Journaliser dans Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
336,
768
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $json.firstName }} {{ $json.lastName }}",
"Email": "={{ $json.email }}",
"Phone": "={{ $json.phone }}",
"Budget": "={{ $json.budget }}",
"Source": "JotForm",
"Status": "New",
"Company": "={{ $json.company }}",
"Timeline": "={{ $json.timeline }}",
"Lead Tier": "={{ $json.leadTier }}",
"Timestamp": "={{ $now.toISO() }}",
"Lead Score": "={{ $json.leadScore }}",
"Company Size": "={{ $json.companySize }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "your-spreadsheet-id",
"cachedResultName": "Lead Tracker"
}
},
"typeVersion": 4.4
},
{
"id": "27c1fd07-3abf-4183-8c5f-a39c859b5652",
"name": "Notifier l'Équipe Commerciale (Lead Chaud)",
"type": "n8n-nodes-base.slack",
"position": [
336,
240
],
"webhookId": "a119a8a8-18dd-4783-be1f-24112f82edd9",
"parameters": {
"text": "🔥 *HOT LEAD ALERT!*\n\n*{{ $json.firstName }} {{ $json.lastName }}* from *{{ $json.company }}*\n📧 {{ $json.email }}\n📱 {{ $json.phone }}\n\n*Lead Score:* {{ $json.leadScore }}/100\n*Tier:* {{ $json.leadTier }}\n*Budget:* {{ $json.budget }}\n*Timeline:* {{ $json.timeline }}\n*Company Size:* {{ $json.companySize }}\n\n*Qualification Notes:*\n{{ $json.qualificationNotes.join('\\n') }}\n\n_Action Required: Follow up within 1 hour!_",
"otherOptions": {}
},
"typeVersion": 2.1
},
{
"id": "a02fd656-7794-45f1-9695-fcf64c51a825",
"name": "Générer un Email Personnalisé",
"type": "n8n-nodes-base.code",
"position": [
336,
576
],
"parameters": {
"jsCode": "// Generate personalized email content based on lead data\nconst items = $input.all();\nconst emailItems = [];\n\nfor (const item of items) {\n const data = item.json;\n const firstName = data.firstName || data.first_name || data.name?.split(' ')[0] || 'there';\n const company = data.company || data.companyName || 'your company';\n const leadTier = data.leadTier || 'Warm';\n \n let subject = '';\n let body = '';\n \n if (leadTier === 'Hot') {\n subject = `Quick follow-up - Let's get ${company} started!`;\n body = `Hi ${firstName},\n\nThank you for your interest! I noticed you're looking to get started soon, and I wanted to reach out personally.\n\nBased on your requirements:\n• Budget: ${data.budget}\n• Timeline: ${data.timeline}\n• Company size: ${data.companySize}\n\nI've reserved a spot in my calendar for a demo specifically tailored to ${company}'s needs. We can show you exactly how our solution will work for you.\n\nI'm available for a quick 15-minute call tomorrow. What time works best for you?\n\nLooking forward to speaking soon!\n\nBest regards,\nSales Team`;\n } else {\n subject = `Great to connect, ${firstName}! Here's what you need to know`;\n body = `Hi ${firstName},\n\nThank you for reaching out! I'm excited to learn more about ${company} and how we can help.\n\nI've put together some resources that I think you'll find valuable:\n\n📊 Case Study: How companies like yours improved results by 3x\n📹 Quick Demo: See our platform in action (5 min video)\n📚 Guide: Best practices for your industry\n\nI'll follow up in a few days to see if you have any questions. In the meantime, feel free to reply to this email or book a time on my calendar: [Calendar Link]\n\nBest regards,\nSales Team`;\n }\n \n emailItems.push({\n json: {\n ...data,\n emailSubject: subject,\n emailBody: body\n }\n });\n}\n\nreturn emailItems;"
},
"typeVersion": 2
},
{
"id": "fbe3c39e-0c45-42c9-a524-89448f0056b7",
"name": "Envoyer l'Email Personnalisé",
"type": "n8n-nodes-base.emailSend",
"position": [
560,
576
],
"webhookId": "645b63b2-4336-4149-83be-3de2d28985e6",
"parameters": {
"options": {
"replyTo": "sales@yourcompany.com",
"allowUnauthorizedCerts": false
},
"subject": "={{ $json.emailSubject }}",
"toEmail": "={{ $json.email }}",
"fromEmail": "sales@yourcompany.com"
},
"typeVersion": 2.1
},
{
"id": "6959cd8f-3c3e-4584-ad90-382404e801d9",
"name": "Notifier le Marketing (Lead Tiède/Froid)",
"type": "n8n-nodes-base.slack",
"position": [
336,
960
],
"webhookId": "8dc28fe0-5a5d-482c-bf3c-b99b99431916",
"parameters": {
"text": "📋 *New Lead Submission*\n\n*{{ $json.firstName }} {{ $json.lastName }}* from *{{ $json.company }}*\n📧 {{ $json.email }}\n\n*Lead Score:* {{ $json.leadScore }}/100\n*Tier:* {{ $json.leadTier }}\n\n_Automated nurture sequence initiated_",
"otherOptions": {}
},
"typeVersion": 2.1
},
{
"id": "2a936548-a209-4577-a514-09eafb7a51d2",
"name": "Créer un Résumé Quotidien",
"type": "n8n-nodes-base.set",
"position": [
784,
480
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "summary-text",
"name": "dailySummary",
"type": "string",
"value": "={{ $json.totalLeads }} new leads processed:\n• {{ $json.hotLeads }} Hot Leads\n• {{ $json.warmLeads }} Warm Leads \n• {{ $json.coldLeads }} Cold Leads\n\nAverage Lead Score: {{ $json.avgScore }}/100"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "6552c1da-6b0d-4501-9768-587246d1b94c",
"name": "Note Adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1152,
400
],
"parameters": {
"width": 500,
"height": 476,
"content": "# 🎯 Lead Qualification & Nurturing System\n\nAuto-captures JotForm leads, scores them by AI, and sends hot leads to sales, others to marketing. All leads go to HubSpot and Google Sheets, with Slack alerts and auto follow-up email.\n\n**Scoring:** Based on email, company size, budget, and timeline.\n\n**Setup:** \n- Connect JotForm, HubSpot, Sheets, Slack, SMTP \n- Map fields \n- Adjust score logic and email templates\n\n**Results:** \n- Respond faster, convert more, eliminate manual entry\n\n*Built by Daniel Shashko* \n[Connect on LinkedIn](https://www.linkedin.com/in/daniel-shashko/)"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"681c776e-6e28-4b04-96fe-ea656438b55e": {
"main": [
[
{
"node": "c3bf276b-f38e-47e5-87e4-b0055d6aa140",
"type": "main",
"index": 0
}
]
]
},
"c016b293-b976-428f-b72c-f1d287c74a4d": {
"main": [
[
{
"node": "ae285cb5-4ac1-4cbf-beb7-37be3e90c747",
"type": "main",
"index": 0
}
]
]
},
"6ad68ea3-621f-4abd-b8c6-1b6d55c8d95e": {
"main": [
[
{
"node": "2a936548-a209-4577-a514-09eafb7a51d2",
"type": "main",
"index": 0
}
]
]
},
"c3bf276b-f38e-47e5-87e4-b0055d6aa140": {
"main": [
[
{
"node": "6ad68ea3-621f-4abd-b8c6-1b6d55c8d95e",
"type": "main",
"index": 0
},
{
"node": "cfb3e0c8-9b5d-43e5-ab58-6a5cd542f566",
"type": "main",
"index": 0
},
{
"node": "27c1fd07-3abf-4183-8c5f-a39c859b5652",
"type": "main",
"index": 0
},
{
"node": "a02fd656-7794-45f1-9695-fcf64c51a825",
"type": "main",
"index": 0
}
],
[
{
"node": "6ad68ea3-621f-4abd-b8c6-1b6d55c8d95e",
"type": "main",
"index": 0
},
{
"node": "cfb3e0c8-9b5d-43e5-ab58-6a5cd542f566",
"type": "main",
"index": 0
},
{
"node": "6959cd8f-3c3e-4584-ad90-382404e801d9",
"type": "main",
"index": 0
},
{
"node": "a02fd656-7794-45f1-9695-fcf64c51a825",
"type": "main",
"index": 0
}
]
]
},
"fbe3c39e-0c45-42c9-a524-89448f0056b7": {
"main": [
[
{
"node": "2a936548-a209-4577-a514-09eafb7a51d2",
"type": "main",
"index": 0
}
]
]
},
"ae285cb5-4ac1-4cbf-beb7-37be3e90c747": {
"main": [
[
{
"node": "681c776e-6e28-4b04-96fe-ea656438b55e",
"type": "main",
"index": 0
}
]
]
},
"a02fd656-7794-45f1-9695-fcf64c51a825": {
"main": [
[
{
"node": "fbe3c39e-0c45-42c9-a524-89448f0056b7",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Résumé IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Daniel Shashko
@tomaxAI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.
Partager ce workflow