This workflow corresponds to n8n.io template #11233 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "13fxauCxX8Rqn4xy",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Lead Intake & Initial Processing",
"tags": [
{
"id": "rFfVbgQsnE2einO2",
"name": "Template",
"createdAt": "2025-11-25T16:34:23.166Z",
"updatedAt": "2025-11-25T16:34:23.166Z"
}
],
"nodes": [
{
"id": "3164137f-9e3b-4cc1-93e9-98a3e039373c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
-144
],
"parameters": {
"width": 512,
"height": 464,
"content": "## LEAD INTAKE & CRM AUTOMATION\n\n## How it works\n1. Webhook receives data from form on submission.\n2. Code assign lead ID calculate follow-up dates and generate email according to tag\n3. SendGrid send emails\n\n\n## Setup\n- Copy all \"GET THE TEMPLATE\" sheets\n- Create Tally form and add webhook url\n- Configure Google Sheet credential\n- Configure SendGrid credential\n\n\nGET THE TEMPLATE: https://docs.google.com/spreadsheets/d/1U6PG53V2IDjax3eDurufyvM8iSn_Su_YOfOCDC_M3lY/edit?usp=sharing\n"
},
"typeVersion": 1
},
{
"id": "08fb1b00-3b72-4698-8858-c10eadc2aed6",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-48,
-64
],
"parameters": {
"color": 7,
"width": 800,
"height": 272,
"content": "## 1. Arrange lead(s)"
},
"typeVersion": 1
},
{
"id": "3e1c36ac-3acf-428b-b009-38cc1c3dbc60",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
-128
],
"parameters": {
"color": 7,
"width": 400,
"height": 304,
"content": "## 2. Save to CRM"
},
"typeVersion": 1
},
{
"id": "4252ca8e-5bc6-4846-a538-7b7948add81d",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1248,
-160
],
"parameters": {
"color": 7,
"width": 784,
"height": 336,
"content": "## 3. Send email & update CRM"
},
"typeVersion": 1
},
{
"id": "c72203e4-c483-45ca-9ed2-e35f1d6a471b",
"name": "Receive Lead from Tally Form",
"type": "n8n-nodes-base.webhook",
"position": [
0,
0
],
"parameters": {
"path": "953a8fef-50bf-46a6-b17c-305d79a6ee07",
"options": {},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 2.1
},
{
"id": "5cdd29a1-3a33-4114-bd51-809859d8ebe7",
"name": "Generate Unique Lead ID",
"type": "n8n-nodes-base.code",
"position": [
208,
0
],
"parameters": {
"jsCode": "const timestamp = Date.now();\nconst randomNum = Math.floor(Math.random() * 1000);\nconst leadId = `LEAD-${timestamp}-${randomNum}`;\n\n// Get fields array\nconst fields = $input.item.json.body.data.fields;\n\n// Helper to get a field by label or key\nfunction getField(label) {\n return fields.find(f => f.label.includes(label) || f.key === label);\n}\n\n// Extract basic info\nconst name = getField(\"What's your Name\")?.value || \"\";\nconst email = getField(\"email address\")?.value || \"\";\n\n// Business type (multiple choice \u2013 get text)\nconst businessField = getField(\"What type of business\");\nlet businessType = \"\";\nif (businessField?.value?.length) {\n const selectedId = businessField.value[0];\n const option = businessField.options.find(o => o.id === selectedId);\n businessType = option?.text || \"\";\n}\n\n// Interest level (multiple choice \u2013 get text)\nconst interestField = getField(\"How interested\");\nlet interestLevel = \"\";\nif (interestField?.value?.length) {\n const selectedId = interestField.value[0];\n const option = interestField.options.find(o => o.id === selectedId);\n interestLevel = option?.text || \"\";\n}\n\n// Services selected (checkboxes \u2013 use IDs \u2192 text)\nconst servicesField = getField(\"What kind of services\");\nlet services = [];\nif (servicesField?.value?.length) {\n services = servicesField.value.map(id => {\n const opt = servicesField.options.find(o => o.id === id);\n return opt?.text;\n }).filter(Boolean);\n}\n\n// Return final unified structured lead object\nreturn [{\n json: {\n leadId: leadId,\n name,\n email,\n businessType,\n interestLevel,\n services\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "90b6125e-afb8-4235-b162-cc339340d700",
"name": "Auto-Tag Lead by Services",
"type": "n8n-nodes-base.code",
"position": [
416,
0
],
"parameters": {
"jsCode": "const data = $input.item.json;\n\nconst serviceTagMap = {\n \"Podcast Production\": \"Podcast Lead\",\n \"Social Media Management\": \"Social Content Lead\",\n \"Video Editing\": \"Video Editing Lead\",\n \"Website Design\": \"Website Lead\",\n \"Marketing Strategy\": \"Strategy Lead\",\n \"Content Creation\": \"Content Lead\"\n};\n\nconst detectedTags = [];\n\n// Tag from selected services\nif (data.services) {\n const selectedServices = Array.isArray(data.services) \n ? data.services \n : data.services.split(',').map(s => s.trim());\n \n selectedServices.forEach(service => {\n if (serviceTagMap[service]) {\n detectedTags.push(serviceTagMap[service]);\n }\n });\n}\n\n// Keyword detection fallback\nconst tagKeywords = {\n \"Podcast Lead\": [\"podcast\", \"audio\", \"episode\"],\n \"Social Content Lead\": [\"social media\", \"instagram\", \"facebook\", \"tiktok\"],\n \"Video Editing Lead\": [\"video\", \"editing\", \"youtube\", \"reel\"],\n \"Website Lead\": [\"website\", \"web design\", \"site\", \"landing page\"],\n \"Strategy Lead\": [\"strategy\", \"consulting\", \"growth plan\"]\n};\n\nconst textToAnalyze = [\n data.businessType || \"\",\n data.services || \"\"\n].join(\" \").toLowerCase();\n\nfor (const [tag, keywords] of Object.entries(tagKeywords)) {\n for (const keyword of keywords) {\n if (textToAnalyze.includes(keyword) && !detectedTags.includes(tag)) {\n detectedTags.push(tag);\n break;\n }\n }\n}\n\nif (detectedTags.length === 0) {\n detectedTags.push(\"General Lead\");\n}\n\nconst tagsString = detectedTags.join(\", \");\n\nreturn {\n json: {\n ...data,\n tags: tagsString,\n detectedTags: detectedTags\n }\n};"
},
"typeVersion": 2
},
{
"id": "7ac7533b-99c9-4bba-93da-f4a3ae5c32a6",
"name": "Calculate Follow-up Date & Lead Score",
"type": "n8n-nodes-base.code",
"position": [
624,
0
],
"parameters": {
"jsCode": "const data = $input.item.json;\nconst today = new Date().toISOString().split('T')[0];\n\n// Calculate next touch based on interest level\nlet daysToAdd = 7;\nif (data.interestLevel.includes(\"Very Interested\")) {\n daysToAdd = 1;\n} else if (data.interestLevel.includes(\"Interested\")) {\n daysToAdd = 3;\n} else if (data.interestLevel.includes(\"Somewhat\")) {\n daysToAdd = 7;\n} else {\n daysToAdd = 14;\n}\n\nconst nextTouch = new Date();\nnextTouch.setDate(nextTouch.getDate() + daysToAdd);\nconst nextTouchFormatted = nextTouch.toISOString().split('T')[0];\n\n// Initial lead score\nlet initialScore = 20; // Base score for signing up\nif (data.interestLevel.includes(\"Very Interested\")) initialScore = 40;\nelse if (data.interestLevel.includes(\"Interested\")) initialScore = 30;\n\nreturn {\n json: {\n ...data,\n createdDate: today,\n lastContact: today,\n nextTouch: nextTouchFormatted,\n status: \"New Lead\",\n nurtureStage: 0,\n leadScore: initialScore,\n emailOpens: 0,\n emailClicks: 0,\n leadMagnetSent: \"NO\",\n calendlyClicked: \"NO\",\n meetingBooked: \"NO\",\n daysInactive: 0,\n notes: `New lead from form. Tags: ${data.tags}`\n }\n};"
},
"typeVersion": 2
},
{
"id": "89b2ee2a-2ba2-45d1-abd6-8f8e5c2d5901",
"name": "Save Lead to CRM Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
832,
0
],
"parameters": {
"columns": {
"value": {
"Name": "={{$json.name}}",
"Tags": "={{$json.tags}}",
"Email": "={{$json.email}}",
"Notes": "={{$json.notes}}",
"Status": "={{$json.status}}",
"Lead ID": "={{$json.leadId}}",
"Services": "={{$json.services.join(\", \")}}",
"Lead Score": "={{$json.leadScore}}",
"Next Touch": "={{$json.nextTouch}}",
"Email Opens": "={{$json.emailOpens}}",
"Lead Source": "={{$json.leadSource}}",
"Created Date": "={{$json.createdDate}}",
"Email Clicks": "={{$json.emailClicks}}",
"Last Contact": "={{$json.lastContact}}",
"Business Type": "={{$json.businessType}}",
"Days Inactive": "={{$json.daysInactive}}",
"Nurture Stage": "={{$json.nurtureStage}}",
"Interest Level": "={{$json.interestLevel}}",
"Meeting Booked": "={{$json.meetingBooked}}",
"Last Email Sent": "={{$json.lastEmailSent}}",
"Calendly Clicked": "={{$json.calendlyClicked}}",
"Lead Magnet Sent": "={{$json.leadMagnetSent}}"
},
"schema": [
{
"id": "Lead ID",
"type": "string",
"display": true,
"required": false,
"displayName": "Lead ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Business Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Interest Level",
"type": "string",
"display": true,
"required": false,
"displayName": "Interest Level",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Source",
"type": "string",
"display": true,
"required": false,
"displayName": "Lead Source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tags",
"type": "string",
"display": true,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Score",
"type": "string",
"display": true,
"required": false,
"displayName": "Lead Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Created Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Contact",
"type": "string",
"display": true,
"required": false,
"displayName": "Last Contact",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Touch",
"type": "string",
"display": true,
"required": false,
"displayName": "Next Touch",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nurture Stage",
"type": "string",
"display": true,
"required": false,
"displayName": "Nurture Stage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Email Sent",
"type": "string",
"display": true,
"required": false,
"displayName": "Last Email Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Opens",
"type": "string",
"display": true,
"required": false,
"displayName": "Email Opens",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Clicks",
"type": "string",
"display": true,
"required": false,
"displayName": "Email Clicks",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Magnet Sent",
"type": "string",
"display": true,
"required": false,
"displayName": "Lead Magnet Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Calendly Clicked",
"type": "string",
"display": true,
"required": false,
"displayName": "Calendly Clicked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Meeting Booked",
"type": "string",
"display": true,
"required": false,
"displayName": "Meeting Booked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Days Inactive",
"type": "string",
"display": true,
"required": false,
"displayName": "Days Inactive",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit#gid=0",
"cachedResultName": "Leads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit?usp=drivesdk",
"cachedResultName": "Complete Mini CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "43038ebb-c3a0-4c1c-a38b-79031594ca70",
"name": "Log Activity to Tracker",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
-96
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $json['Name'] }}",
"Details": "=Form submission with tags: {{ $json['Tags'] }}",
"Lead ID": "={{ $json['Lead ID'] }}",
"Timestamp": "={{ $now.toISO() }}",
"Activity Type": "Lead Captured"
},
"schema": [
{
"id": "Timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead ID",
"type": "string",
"display": true,
"required": false,
"displayName": "Lead ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Activity Type",
"type": "string",
"display": true,
"required": false,
"displayName": "Activity Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Details",
"type": "string",
"display": true,
"required": false,
"displayName": "Details",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1376113895,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit#gid=1376113895",
"cachedResultName": "Activity Log"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit?usp=drivesdk",
"cachedResultName": "Complete Mini CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "fa5f1269-8205-4de4-bf61-a72c29be537d",
"name": "Generate Personalized Welcome Email",
"type": "n8n-nodes-base.code",
"position": [
1296,
0
],
"parameters": {
"jsCode": "const data = $input.item.json;\nconst tags = data.detectedTags || [];\n\nlet servicesMention = \"\";\nif (tags.includes(\"Podcast Lead\")) {\n servicesMention = \"I noticed you're interested in podcast production. We help creators launch and grow shows that actually get heard.\";\n} else if (tags.includes(\"Video Editing Lead\")) {\n servicesMention = \"I see you're looking for video editing support. We transform raw footage into scroll-stopping content that drives results.\";\n} else if (tags.includes(\"Social Content Lead\")) {\n servicesMention = \"Social media can feel overwhelming, we get it. We help businesses turn social platforms into lead-generating machines.\";\n} else if (tags.includes(\"Website Lead\")) {\n servicesMention = \"Your website should work as hard as you do. We build sites that convert visitors into customers.\";\n} else if (tags.includes(\"Strategy Lead\")) {\n servicesMention = \"Great marketing starts with clear strategy. We help businesses cut through the noise and focus on what actually moves the needle.\";\n} else {\n servicesMention = \"We specialize in digital marketing that gets real results, from content creation to complete campaign management.\";\n}\n\nconst subject = `Welcome, ${data['Name']}! Let's talk about your marketing goals`;\n\nconst emailBody = `Hi ${data['Name']},\n\nThanks for reaching out, I'm glad you found us.\n\nI want to confirm that we received your information and let you know what happens next.\n\n${servicesMention}\n\nHere's what you can expect:\n\n\u2192 We will review your details and put together some initial thoughts\n\u2192 You'll hear back from us within 24-48 hours\n\u2192 We'll schedule a quick call to discuss your specific needs (no pressure, no sales pitch, just a genuine conversation about how we might help)\n\nIn the meantime, feel free to reply to this email with any questions or additional context about what you're trying to achieve. The more I know, the more helpful I can be when we connect.\n\nLooking forward to speaking with you soon.\n\nBest regards,\nGilbert Onyebuchi\n\nP.S. Keep an eye on your inbox. Over the next week, I'll send you some helpful insights about building marketing systems that actually work.`;\n\nreturn {\n json: {\n ...data,\n emailSubject: subject,\n emailBody: emailBody\n }\n};"
},
"typeVersion": 2
},
{
"id": "057b5ac6-07cd-46cc-9460-e0305a82dfae",
"name": "Send Welcome Email via SendGrid",
"type": "n8n-nodes-base.sendGrid",
"position": [
1552,
-96
],
"parameters": {
"subject": "={{ $json.emailSubject }}",
"toEmail": "={{ $json['Email'] }}",
"resource": "mail",
"contentValue": "={{ $json.emailBody }}",
"additionalFields": {}
},
"credentials": {
"sendGridApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0c3d1194-f9f2-4ca9-bbf0-8a91fcb15652",
"name": "Update Lead Status to Nurturing",
"type": "n8n-nodes-base.googleSheets",
"position": [
1808,
0
],
"parameters": {
"columns": {
"value": {
"Status": "Nurturing",
"Lead ID": "={{ $json['Lead ID'] }}",
"Nurture Stage": " 0",
"Last Email Sent": "={{ $now.format('YYYY-MM-DD') }}"
},
"schema": [
{
"id": "Lead ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Lead ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Business Type",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Business Type",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Interest Level",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Interest Level",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Source",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Lead Source",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tags",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Score",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Lead Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Created Date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Created Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Contact",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Last Contact",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Touch",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Next Touch",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nurture Stage",
"type": "string",
"display": true,
"required": false,
"displayName": "Nurture Stage",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Email Sent",
"type": "string",
"display": true,
"required": false,
"displayName": "Last Email Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Opens",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Email Opens",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Clicks",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Email Clicks",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Lead Magnet Sent",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Lead Magnet Sent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Calendly Clicked",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Calendly Clicked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Meeting Booked",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Meeting Booked",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Days Inactive",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Days Inactive",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Lead ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit#gid=0",
"cachedResultName": "Leads"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/15r9eQaQp69Tb75AgU7hM6wzP3s6SjyoUn2S18hbZqC8/edit?usp=drivesdk",
"cachedResultName": "Complete Mini CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "0c35e175-3b80-42a4-a934-2d49c886f797",
"connections": {
"Save Lead to CRM Sheet": {
"main": [
[
{
"node": "Log Activity to Tracker",
"type": "main",
"index": 0
},
{
"node": "Generate Personalized Welcome Email",
"type": "main",
"index": 0
}
]
]
},
"Generate Unique Lead ID": {
"main": [
[
{
"node": "Auto-Tag Lead by Services",
"type": "main",
"index": 0
}
]
]
},
"Log Activity to Tracker": {
"main": [
[]
]
},
"Auto-Tag Lead by Services": {
"main": [
[
{
"node": "Calculate Follow-up Date & Lead Score",
"type": "main",
"index": 0
}
]
]
},
"Receive Lead from Tally Form": {
"main": [
[
{
"node": "Generate Unique Lead ID",
"type": "main",
"index": 0
}
]
]
},
"Send Welcome Email via SendGrid": {
"main": [
[]
]
},
"Update Lead Status to Nurturing": {
"main": [
[]
]
},
"Generate Personalized Welcome Email": {
"main": [
[
{
"node": "Send Welcome Email via SendGrid",
"type": "main",
"index": 0
},
{
"node": "Update Lead Status to Nurturing",
"type": "main",
"index": 0
}
]
]
},
"Calculate Follow-up Date & Lead Score": {
"main": [
[
{
"node": "Save Lead to CRM Sheet",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApisendGridApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates lead intake by capturing form submissions, enriching them with smart tags and scores, storing them in a Google Sheets CRM, and sending personalized welcome emails.
Source: https://n8n.io/workflows/11233/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow automates the entire lead generation pipeline from discovery to outreach: Location Grid Generation and Management Generates precise lat/lng grid points covering major US cities (New
This n8n workflow sends personalized marketing or outreach emails using predefined templates stored in Google Sheets, with SendGrid as the email delivery provider. Instead of relying on dynamic AI con
What Native n8n chat-operated AI employee for a single wellness SaaS brand Handles three intents: send campaign, report campaign, reactivate cold subscribers
Who is this for? Solo founders, sales teams, and event organizers who need email outreach without expensive tools but want full control from Telegram.
Automatically qualify, score, and route inbound B2B leads using GPT-4o-mini — no manual review needed.