This workflow corresponds to n8n.io template #13529 — we link there as the canonical source.
This workflow follows the Chainllm → Gmail recipe pattern — see all workflows that pair these two integrations.
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 →
{
"nodes": [
{
"id": "c04df318-1ba8-45ed-9714-6082975dba18",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 1584,
"height": 496,
"content": "# Flow 1: CRM Agent\nMoves leads from Lead List to CRM"
},
"typeVersion": 1
},
{
"id": "f7eba756-3dfc-4d29-bc13-6831a537f69f",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
64,
208
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24
}
]
}
},
"typeVersion": 1.2
},
{
"id": "96fdc901-baed-478c-9f7b-073084089545",
"name": "Email List",
"type": "n8n-nodes-base.googleSheets",
"position": [
272,
208
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - Lead List"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "87b853ac-203b-4a02-9571-d99557711e7c",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
480,
208
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "852b820e-4c59-4224-a08d-d2179c6a1cf0",
"name": "Update CRM",
"type": "n8n-nodes-base.googleSheets",
"position": [
800,
304
],
"parameters": {
"columns": {
"value": {
"ID": "={{ null }}",
"Role": "={{ $json.Role }}",
"Last Name": "={{ $json['Last Name'] }}",
"First Name": "={{ $json['First Name'] }}",
"Company Name": "={{ $json['Company Name'] }}",
"Contact Email": "={{ $json['Contact Email'] }}",
"Company Address": "={{ $json['Company Address'] }}",
"Company Industry": "={{ $json['Company Industry'] }}",
"Website (optional)": "={{ $json['Website (optional)'] }}",
"Contact Phone(optional)": "={{ $json['Contact Phone(optional)'] }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role",
"type": "string",
"display": true,
"required": false,
"displayName": "Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Address",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Industry",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Contact Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Phone(optional)",
"type": "string",
"display": true,
"required": false,
"displayName": "Contact Phone(optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website (optional)",
"type": "string",
"display": true,
"required": false,
"displayName": "Website (optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Started Sequence?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Started Sequence?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sequence Last Date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sequence Last Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Follow Ups",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Follow Ups",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call Scheduled?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Call Scheduled?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Showed Call?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Showed Call?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sales Transcript ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sales Transcript ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latest/Closed Transcript ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Latest/Closed Transcript ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposal sent?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Proposal sent?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Closed?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Sent? ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Sent? ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Signed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Signed?",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"ID"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "26653239-175c-4320-9514-1c18f48bfba9",
"name": "Get row(s) from CRM",
"type": "n8n-nodes-base.googleSheets",
"position": [
1008,
304
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $json['Contact Email'] }}",
"lookupColumn": "Contact Email"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "4001ace2-6baa-4597-9305-79b4dca62819",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
1216,
304
],
"parameters": {
"amount": 15
},
"typeVersion": 1.1
},
{
"id": "fdf58236-8fce-4063-aafd-4f8698a62c2d",
"name": "Finalize Contact Record in Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1424,
304
],
"parameters": {
"columns": {
"value": {
"ID": "={{ $json.row_number }}",
"Contact Email": "={{ $json['Contact Email'] }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Address",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Industry",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contact Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Phone(optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contact Phone(optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website (optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Website (optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Started Sequence?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Started Sequence?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sequence Last Date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sequence Last Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Follow Ups",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Follow Ups",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call Scheduled?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Call Scheduled?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Showed Call?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Showed Call?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sales Transcript ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sales Transcript ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latest/Closed Transcript ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Latest/Closed Transcript ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposal sent?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Proposal sent?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Closed?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Sent? ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Sent? ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Signed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Signed?",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Contact Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "cc5708c8-eaaf-4fbf-a664-ac59c699f138",
"name": "Count",
"type": "n8n-nodes-base.summarize",
"position": [
800,
112
],
"parameters": {
"options": {},
"fieldsToSummarize": {
"values": [
{
"field": "Contact Email"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "6eb33933-dac5-46fc-92f3-161d2bbcf29f",
"name": "Reset email list",
"type": "n8n-nodes-base.googleSheets",
"position": [
1008,
112
],
"parameters": {
"operation": "delete",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1msNLqoZHeImb8laBvKrkNvZHFRwuGiZyTqJvXJjEmjk/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - Lead List"
},
"numberToDelete": "={{ $json.count_Contact_Email }}"
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "cd94b74c-5148-476f-861b-0a83ca6b8b69",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
528
],
"parameters": {
"color": 3,
"width": 1728,
"height": 608,
"content": "# Flow 2: Follow-Up Agent\nSends 3 personalized follow-up emails every 2 days"
},
"typeVersion": 1
},
{
"id": "07b9b253-9c2f-45ae-b7fa-69a28958eff1",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
1168
],
"parameters": {
"color": 5,
"width": 656,
"height": 368,
"content": "# Flow 3: Concierge Agent\nUpdates CRM when someone books a call\n"
},
"typeVersion": 1
},
{
"id": "ee97152c-4f36-4323-adfd-6ef5379a8e70",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
688,
1168
],
"parameters": {
"color": 4,
"width": 896,
"height": 368,
"content": "# Flow 4: No-Show Agent\nEmails leads who miss calls"
},
"typeVersion": 1
},
{
"id": "2f53546d-982c-4d80-af11-d20a00867942",
"name": "Schedule Trigger (Follow Ups)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
64,
752
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "effffea2-866f-4f56-bdc1-9f5266f74b33",
"name": "Get rows from CRM",
"type": "n8n-nodes-base.googleSheets",
"position": [
272,
752
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "true",
"lookupColumn": "Started Sequence?"
},
{
"lookupValue": "false",
"lookupColumn": "Call Scheduled?"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "8f754c06-b0a9-4ff9-a37d-365d95e05dc5",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
480,
752
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "e2b3127f-3fe7-4058-91be-3569f29147c7",
"operator": {
"type": "dateTime",
"operation": "beforeOrEquals"
},
"leftValue": "={{ $('Get rows from CRM').item.json['Sequence Last Date'] }}",
"rightValue": "={{ $now.minus({days: 2}).format('MM-dd-yy') }}"
},
{
"id": "6594059d-56b9-40a9-9495-776a30b1e95d",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $('Get rows from CRM').item.json['Follow Ups'] }}",
"rightValue": 3
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "62991a84-37c9-42d1-b7fd-73c2afe28002",
"name": "Which follow-up phase?",
"type": "n8n-nodes-base.switch",
"position": [
688,
736
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "follow up 1",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "3b83c2a5-79a7-41d4-b77d-65a4083bf067",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $json['Follow Ups'] }}",
"rightValue": 1
}
]
},
"renameOutput": true
},
{
"outputKey": "follow up 2",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "ddf09d9a-91a3-468a-b6fa-352610ae5ee7",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $json['Follow Ups'] }}",
"rightValue": 2
}
]
},
"renameOutput": true
},
{
"outputKey": "follow up 3",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "3f3c3158-f6fa-48cc-a66a-28b19bb0de3a",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $json['Follow Ups'] }}",
"rightValue": 3
}
]
},
"renameOutput": true
}
]
},
"options": {},
"looseTypeValidation": true
},
"typeVersion": 3.3
},
{
"id": "2e0b3a30-d994-49ee-be53-12565523e73f",
"name": "Follow Up 1",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
976,
560
],
"parameters": {
"text": "=Hi [Name],\n\nI wanted to follow up on our recent message about AI solutions. I know your inbox is probably overflowing, so I'll keep this brief.\nMany businesses we work with initially hesitate because they're not sure where AI fits into their current operations. The truth is, the companies seeing the biggest ROI right now aren't the ones with the fanciest tech stacks\u2014they're the ones who started small and scaled strategically.\n\nWhat we're seeing work in 2025:\n\n- Customer service automation reducing response times by 60%\n- Data analysis that used to take days now happening in minutes\n- Personalized customer experiences at scale\n\nI'd love to spend 15 minutes learning about your specific challenges and sharing what might be possible for your team.\n\nWould you be open to a quick conversation?\n\n[Calendar Link]\n\nBest,\nVincent\n\nP.S. No pressure - if the timing isn't right, just let me know when might work better.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Your goal is to replace the placeholders inside the email with the corresponding values from the data below (only where applicable).\n\nAvailable variables:\n\n- Name: {{ $('Get rows from CRM').item.json['First Name'] }} \n\n- Role: {{ $('Get rows from CRM').item.json.Role }}\n\n- Company Name: {{ $('Get rows from CRM').item.json['Company Name'] }}\n\n- Industry: {{ $('Get rows from CRM').item.json['Company Industry'] }}\n\n- Calendar Link: https://calendar.app.google/iSiNxcUzP2ajSMtT8\n\nInstructions:\nOnly output the final email with the placeholders replaced.\nDo not include comments, explanations, or any extra text."
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "c8105904-a3ad-405d-8da8-13753d5b24ed",
"name": "Send First Follow Up",
"type": "n8n-nodes-base.gmail",
"position": [
1328,
560
],
"parameters": {
"sendTo": "={{ $('Get rows from CRM').item.json['Contact Email'] }}",
"message": "={{ $json.text }}",
"options": {
"appendAttribution": false
},
"subject": "Follow Up 1",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "1e75be13-56cc-4137-8f1e-d71c74667f52",
"name": "Update CRM (Follow Up 1)",
"type": "n8n-nodes-base.googleSheets",
"position": [
1536,
560
],
"parameters": {
"columns": {
"value": {
"Follow Ups": "1",
"Contact Email": "{{ $('Get rows from CRM').item.json['Contact Email'] }}",
"Sequence Last Date": "={{ $now.toFormat('MM-dd-yy') }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Address",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Industry",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contact Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Phone(optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contact Phone(optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website (optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Website (optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Started Sequence?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Started Sequence?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sequence Last Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Sequence Last Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Follow Ups",
"type": "string",
"display": true,
"required": false,
"displayName": "Follow Ups",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call Scheduled?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Call Scheduled?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Showed Call?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Showed Call?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sales Transcript ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sales Transcript ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latest/Closed Transcript ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Latest/Closed Transcript ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposal sent?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Proposal sent?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Closed?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Sent? ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Sent? ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Signed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Signed?",
"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": [
"Contact Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "c1d6c670-9386-4b7d-b664-8fd744d422d1",
"name": "Follow Up 3",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
976,
944
],
"parameters": {
"text": "=Hi [Name],\n\nI don't want to be that person who keeps flooding your inbox, so this will be my last message unless you'd like to continue the conversation.\n\nI genuinely believe AI could make a meaningful impact on your business, but I also know timing is everything - and that's completely okay.\n\nIf you ever want to explore what we could do together, my calendar is always open:\n\n[Calendar Link]\n\nWishing you all the best,\nVincent\n\nP.S. If you'd prefer I check back in a few months when things might be less hectic, just reply with \"Later\", and I'll make a note to reach out next quarter.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Your goal is to replace the placeholders inside the email with the corresponding values from the data below (only where applicable).\n\nAvailable variables:\n\n- Name: {{ $('Get rows from CRM').item.json['First Name'] }} \n\n- Role: {{ $('Get rows from CRM').item.json.Role }}\n\n- Company Name: {{ $('Get rows from CRM').item.json['Company Name'] }}\n\n- Industry: {{ $('Get rows from CRM').item.json['Company Industry'] }}\n\n- Calendar Link: https://calendar.app.google/iSiNxcUzP2ajSMtT8\n\nInstructions:\nOnly output the final email with the placeholders replaced.\nDo not include comments, explanations, or any extra text."
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "c90f5478-eddc-4250-a75d-8e6e84e8942e",
"name": "Follow Up 2",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
976,
752
],
"parameters": {
"text": "=Hi [Name],\n\nI wanted to share a quick win that might resonate with you.\n\nMany teams I talk to feel uncertain about where to start with AI - how complex it will be, whether it\u2019s worth the cost, and if it\u2019ll actually make a measurable difference.\n\nWhat we\u2019ve seen is that real progress usually starts small: one workflow, one process, one measurable result. Once that\u2019s in place, scaling becomes easy - and the ROI tends to follow fast.\n\nIf that sounds worth exploring, how about a quick 20-minute chat to discuss what this could look like for your business?\n\n[Calendar Link]\n\nLooking forward to connecting,\nVincent\n\nP.S. Happy to send a case study or example before the call if you\u2019d like a preview.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Your goal is to replace the placeholders inside the email with the corresponding values from the data below (only where applicable).\n\nAvailable variables:\n\n- Name: {{ $('Get rows from CRM').item.json['First Name'] }} \n\n- Role: {{ $('Get rows from CRM').item.json.Role }}\n\n- Company Name: {{ $('Get rows from CRM').item.json['Company Name'] }}\n\n- Industry: {{ $('Get rows from CRM').item.json['Company Industry'] }}\n\n- Calendar Link: https://calendar.app.google/iSiNxcUzP2ajSMtT8\n\nInstructions:\nOnly output the final email with the placeholders replaced.\nDo not include comments, explanations, or any extra text."
}
]
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "75106f00-bd4c-42a9-8d44-f7331d1543a4",
"name": "Send Second Follow Up",
"type": "n8n-nodes-base.gmail",
"position": [
1328,
752
],
"parameters": {
"sendTo": "={{ $('Get rows from CRM').item.json['Contact Email'] }}",
"message": "={{ $json.text }}",
"options": {
"appendAttribution": false
},
"subject": "Follow Up 2",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "83034612-a064-465a-a13d-dea08cb6f3fb",
"name": "Send Third Follow Up",
"type": "n8n-nodes-base.gmail",
"position": [
1328,
944
],
"parameters": {
"sendTo": "={{ $('Get rows from CRM').item.json['Contact Email'] }}",
"message": "={{ $json.text }}",
"options": {
"appendAttribution": false
},
"subject": "Follow Up 3",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "4f6b384c-9256-493f-89da-db62bccbe750",
"name": "Update CRM (Follow Up 2)",
"type": "n8n-nodes-base.googleSheets",
"position": [
1536,
752
],
"parameters": {
"columns": {
"value": {
"Follow Ups": "2",
"Contact Email": "{{ $('Get rows from CRM').item.json['Contact Email'] }}",
"Sequence Last Date": "={{ $now.toFormat('MM-dd-yy') }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Address",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Industry",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contact Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Phone(optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contact Phone(optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website (optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Website (optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Started Sequence?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Started Sequence?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sequence Last Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Sequence Last Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Follow Ups",
"type": "string",
"display": true,
"required": false,
"displayName": "Follow Ups",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call Scheduled?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Call Scheduled?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Showed Call?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Showed Call?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sales Transcript ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sales Transcript ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latest/Closed Transcript ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Latest/Closed Transcript ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposal sent?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Proposal sent?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Closed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Closed?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Sent? ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Sent? ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contract Signed?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contract Signed?",
"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": [
"Contact Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sExI2Z8LlfAWl1ezbldEWwDqX6eBmOUCqaStci96zKY/edit?usp=drivesdk",
"cachedResultName": "[AFT] The Sales Agent - CRM"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "c9bf82f2-0987-4df1-86d1-3da97e8563d8",
"name": "Update CRM (Follow Up 3)",
"type": "n8n-nodes-base.googleSheets",
"position": [
1536,
944
],
"parameters": {
"columns": {
"value": {
"Follow Ups": "3",
"Contact Email": "{{ $('Get rows from CRM').item.json['Contact Email'] }}",
"Sequence Last Date": "={{ $now.toFormat('MM-dd-yy') }}"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "First Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "First Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Last Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Address",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Industry",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Company Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Contact Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Contact Phone(optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Contact Phone(optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website (optional)",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Website (optional)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Started Sequence?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Started Sequence?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sequence Last Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Sequence Last Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Follow Ups",
"type": "string",
"display": true,
"required": false,
"displayName": "Follow Ups",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call Scheduled?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Call Scheduled?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Showed Call?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Showed Call?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sales Transcript ID ",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Sales Transcript ID ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Latest/Closed Transcript ID",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Latest/Closed Transcript ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Proposal sent?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Proposal sent?",
"defaultMatch": false,
"can
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.
gmailOAuth2googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Instead of manually tracking who needs to be emailed next or cross-referencing your calendar with your spreadsheet, this workflow handles the entire outreach lifecycle in the background.
Source: https://n8n.io/workflows/13529/ — 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 workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video p
[](https://youtu.be/sKJAypXDTLA)
This n8n template shows you how to turn outbound sales into a fully automated machine: scrape verified leads, research them with AI, and fire off personalized cold emails while you sleep.
Active job-seekers who apply to 10–30 roles a week and lose track of which application is at what stage. Built for anyone tired of manually updating a spreadsheet every time a recruiter replies — or w
An advanced AI-powered LinkedIn automation workflow built with n8n that generates high-engagement LinkedIn posts using GPT-4o-mini, optionally creates AI-generated visuals with Google Gemini, sends ev