Form to CRM Follow-up
Module 05 · business · beginner
learner.json
In n8n, copy this file and paste it onto the canvas, or use Import from File.
{
"name": "05 - Form to CRM Follow-up",
"nodes": [
{
"parameters": {
"formTitle": "Work with me",
"formDescription": "Tell me about your project and I'll get back to you within 24 hours.",
"formFields": {
"values": [
{ "fieldLabel": "Name", "requiredField": true },
{ "fieldLabel": "Email", "fieldType": "email", "requiredField": true },
{ "fieldLabel": "Company" },
{
"fieldLabel": "What do you need help with?",
"fieldType": "dropdown",
"fieldOptions": { "values": [{ "option": "Automation" }, { "option": "AI agent" }, { "option": "Integration" }, { "option": "Something else" }] },
"requiredField": true
},
{
"fieldLabel": "Budget",
"fieldType": "dropdown",
"fieldOptions": { "values": [{ "option": "Under $1k" }, { "option": "$1k-$5k" }, { "option": "Over $5k" }] },
"requiredField": true
},
{ "fieldLabel": "Details", "fieldType": "textarea" }
]
},
"options": {
"path": "work-with-me",
"appendAttribution": false,
"respondWithOptions": {
"values": { "formSubmittedText": "Thanks! Check your inbox, I've sent you a confirmation." }
}
}
},
"id": "m05-form",
"name": "Contact Form",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.3,
"position": [0, 100],
"webhookId": "course-05-form"
},
{
"parameters": {
"assignments": {
"assignments": [
{ "id": "n1", "name": "name", "value": "={{ $json['Name'].trim() }}", "type": "string" },
{ "id": "n2", "name": "first_name", "value": "={{ $json['Name'].trim().split(' ')[0] }}", "type": "string" },
{ "id": "n3", "name": "email", "value": "={{ $json['Email'].trim().toLowerCase() }}", "type": "string" },
{ "id": "n4", "name": "company", "value": "={{ ($json['Company'] ?? '').trim() }}", "type": "string" },
{ "id": "n5", "name": "need", "value": "={{ $json['What do you need help with?'] }}", "type": "string" },
{ "id": "n6", "name": "budget", "value": "={{ $json['Budget'] }}", "type": "string" },
{ "id": "n7", "name": "details", "value": "={{ $json['Details'] ?? '' }}", "type": "string" },
{ "id": "n8", "name": "priority", "value": "={{ $json['Budget'] === 'Over $5k' ? 'high' : 'normal' }}", "type": "string" },
{ "id": "n9", "name": "status", "value": "new", "type": "string" },
{ "id": "n10", "name": "submitted_at", "value": "={{ $now.toISO() }}", "type": "string" }
]
},
"options": {}
},
"id": "m05-normalize",
"name": "Normalize Lead",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [220, 100]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": { "__rl": true, "mode": "url", "value": "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit" },
"sheetName": { "__rl": true, "mode": "name", "value": "CRM" },
"columns": {
"mappingMode": "defineBelow",
"value": {
"email": "={{ $json.email }}",
"name": "={{ $json.name }}",
"company": "={{ $json.company }}",
"need": "={{ $json.need }}",
"budget": "={{ $json.budget }}",
"priority": "={{ $json.priority }}",
"status": "={{ $json.status }}",
"details": "={{ $json.details }}",
"submitted_at": "={{ $json.submitted_at }}"
},
"matchingColumns": ["email"],
"schema": [
{ "id": "email", "displayName": "email", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "name", "displayName": "name", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "company", "displayName": "company", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "need", "displayName": "need", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "budget", "displayName": "budget", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "priority", "displayName": "priority", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "status", "displayName": "status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "details", "displayName": "details", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true },
{ "id": "submitted_at", "displayName": "submitted_at", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }
]
},
"options": {}
},
"id": "m05-crm",
"name": "Save to CRM",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [440, 100]
},
{
"parameters": {
"sendTo": "={{ $('Normalize Lead').item.json.email }}",
"subject": "=Got it, {{ $('Normalize Lead').item.json.first_name }}! Next steps for your {{ $('Normalize Lead').item.json.need.toLowerCase() }} project",
"emailType": "html",
"message": "=<p>Hi {{ $('Normalize Lead').item.json.first_name }},</p>\n<p>Thanks for reaching out about <b>{{ $('Normalize Lead').item.json.need.toLowerCase() }}</b>{{ $('Normalize Lead').item.json.company ? ' for ' + $('Normalize Lead').item.json.company : '' }}. I've got your details and will reply personally within 24 hours.</p>\n<p>To make our first call useful, reply to this email with:</p>\n<ul><li>The tools you use today</li><li>The task that takes your team the most time</li></ul>\n<p>Talk soon,<br>Ian</p>",
"options": { "appendAttribution": false }
},
"id": "m05-welcome",
"name": "Send Welcome Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [660, 100]
},
{
"parameters": { "amount": 2, "unit": "days" },
"id": "m05-wait",
"name": "Wait 2 Days",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [880, 100],
"webhookId": "course-05-wait"
},
{
"parameters": {
"sendTo": "={{ $('Normalize Lead').item.json.email }}",
"subject": "=Quick follow-up, {{ $('Normalize Lead').item.json.first_name }}",
"emailType": "html",
"message": "=<p>Hi {{ $('Normalize Lead').item.json.first_name }},</p>\n<p>Just following up on your {{ $('Normalize Lead').item.json.need.toLowerCase() }} request. Would a 20-minute call this week work? Reply with a time that suits you.</p>\n<p>Ian</p>",
"options": { "appendAttribution": false }
},
"id": "m05-followup",
"name": "Send Follow-up",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [1100, 100]
}
],
"connections": {
"Contact Form": { "main": [[{ "node": "Normalize Lead", "type": "main", "index": 0 }]] },
"Normalize Lead": { "main": [[{ "node": "Save to CRM", "type": "main", "index": 0 }]] },
"Save to CRM": { "main": [[{ "node": "Send Welcome Email", "type": "main", "index": 0 }]] },
"Send Welcome Email": { "main": [[{ "node": "Wait 2 Days", "type": "main", "index": 0 }]] },
"Wait 2 Days": { "main": [[{ "node": "Send Follow-up", "type": "main", "index": 0 }]] }
},
"pinData": {},
"settings": { "executionOrder": "v1" }
}