This workflow corresponds to n8n.io template #16290 — we link there as the canonical source.
This workflow follows the Chainllm → Form Trigger 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 →
{
"id": "6Ii0TKRfx0OL6DQG",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Form-Based Lead Qualifier with Plain-English ICP (Claude)",
"tags": [],
"nodes": [
{
"id": "b797e1ad-1df5-4285-9402-f1f7c830cd79",
"name": "Sticky Note - Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
32
],
"parameters": {
"color": 4,
"width": 420,
"height": 752,
"content": "## Form-Based Lead Qualifier with Plain-English ICP (n8n + Claude)\n\n**Who it's for:** You collect inbound form fills and need to know which ones are worth a fast reply.\n\n**What it does:** Claude (or model of your choosing) scores each n8n Form submission against an ICP you write in plain English. Every lead is logged. Leads above your threshold trigger Slack and email alerts.\n\n**How it works:**\n1. An n8n Form captures the lead (either have a link to this form on your website/email or where you see fit)\n2. The Config node holds your ICP, threshold, Slack channel, and alert email.\n3. Claude returns a fit score, tier, reasoning, and suggested next step.\n4. Every lead gets appended to Google Sheets.\n5. An IF node escalates only leads at or above your threshold.\n\n**How to use:**\n- Connect Anthropic, Google Sheets, Slack and Gmail.\n- Replace the Sheet ID and alert email.\n- Edit the ICP and threshold in Config.\n- Tweak the form fields, then turn it on and share the form link."
},
"typeVersion": 1
},
{
"id": "687662ba-88ba-43e1-af7c-f2962f817d65",
"name": "Sticky Note - Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
80
],
"parameters": {
"color": 5,
"width": 220,
"height": 412,
"content": "### Setup\nWrite your ICP and hot-lead threshold in **Config**. Replace the Sheet ID and alert email, then connect Claude, Sheets, Slack and Gmail."
},
"typeVersion": 1
},
{
"id": "ff106f9e-bb0d-4e39-a409-de7e682d04bb",
"name": "Sticky Note - AI",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
80
],
"parameters": {
"color": 7,
"width": 284,
"height": 432,
"content": "### 1. Score with Claude\nReturns JSON: a fit score (0-100), a tier, reasoning, and a suggested next step, all judged against your ICP."
},
"typeVersion": 1
},
{
"id": "ae965b79-ef9b-4660-a1c8-f2f623c92cbe",
"name": "Sticky Note - Route",
"type": "n8n-nodes-base.stickyNote",
"position": [
1344,
80
],
"parameters": {
"color": 7,
"width": 732,
"height": 556,
"content": "### 2. Log everything, escalate the hot ones\nEvery lead goes to the sheet. The IF node only pushes leads at or above your threshold to Slack and email."
},
"typeVersion": 1
},
{
"id": "8b2e104b-a9a0-417b-9813-319d096b79fb",
"name": "Lead Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
304,
352
],
"parameters": {
"options": {},
"formTitle": "Work with us",
"formFields": {
"values": [
{
"fieldLabel": "Name",
"requiredField": true
},
{
"fieldType": "email",
"fieldLabel": "Email",
"requiredField": true
},
{
"fieldLabel": "Company website"
},
{
"fieldType": "dropdown",
"fieldLabel": "Monthly budget",
"fieldOptions": {
"values": [
{
"option": "Under $1k"
},
{
"option": "$1k - $5k"
},
{
"option": "$5k+"
}
]
}
},
{
"fieldType": "textarea",
"fieldLabel": "What do you need help with?",
"requiredField": true
}
]
},
"formDescription": "Tell us a bit about your project and we'll be in touch."
},
"typeVersion": 2.2
},
{
"id": "1d171d3b-8969-4b1d-96c0-0c5c523f4294",
"name": "Config (edit me)",
"type": "n8n-nodes-base.set",
"position": [
624,
352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a1",
"name": "icp_definition",
"type": "string",
"value": "Ideal client: US marketing agency, 5-25 employees, $500K-$5M revenue, running outbound or cold email for clients, with budget of $5k+/mo. Strong negative signals: solo freelancer, under $1k budget, no website, or asking for free work."
},
{
"id": "a2",
"name": "hot_threshold",
"type": "number",
"value": 70
},
{
"id": "a3",
"name": "slack_channel",
"type": "string",
"value": "#hot-leads"
},
{
"id": "a4",
"name": "notify_email",
"type": "string",
"value": "you@example.com"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f64d6887-560c-4201-83e0-c236bc968947",
"name": "Score Lead Fit",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
992,
352
],
"parameters": {
"text": "=You qualify inbound leads against an ideal customer profile.\n\nICP DEFINITION:\n{{ $('Config (edit me)').item.json.icp_definition }}\n\nLEAD SUBMISSION:\nName: {{ $('Lead Form').item.json.Name }}\nEmail: {{ $('Lead Form').item.json.Email }}\nWebsite: {{ $('Lead Form').item.json['Company website'] }}\nBudget: {{ $('Lead Form').item.json['Monthly budget'] }}\nNeed: {{ $('Lead Form').item.json['What do you need help with?'] }}\n\nTASK:\n1. Score fit 0-100 against the ICP.\n2. Assign a tier: hot, warm, or cold.\n3. Give one sentence of reasoning.\n4. Recommend the next action (e.g. 'book a call', 'send case study', 'nurture', 'disqualify').",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.4
},
{
"id": "ddbe2509-2626-4e19-9563-13ea45711693",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
896,
656
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-6",
"cachedResultName": "Claude Sonnet 4.6"
},
"options": {
"temperature": 0.2
}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "8cf63028-4234-4d44-a711-44fa82de657c",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1168,
592
],
"parameters": {
"jsonSchemaExample": "{\n \"fit_score\": 84,\n \"tier\": \"hot\",\n \"reasoning\": \"Mid-size agency, $5k+ budget, explicitly wants cold email built.\",\n \"recommended_action\": \"book a call\"\n}"
},
"typeVersion": 1.2
},
{
"id": "66088e54-b1bf-4f03-8663-d4f470ced7a0",
"name": "Log Lead to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1408,
352
],
"parameters": {
"columns": {
"value": {
"name": "={{ $('Lead Form').item.json.Name }}",
"tier": "={{ $json.output.tier }}",
"email": "={{ $('Lead Form').item.json.Email }}",
"budget": "={{ $('Lead Form').item.json['Monthly budget'] }}",
"website": "={{ $('Lead Form').item.json['Company website'] }}",
"fit_score": "={{ $json.output.fit_score }}",
"reasoning": "={{ $json.output.reasoning }}",
"recommended_action": "={{ $json.output.recommended_action }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "Leads",
"cachedResultName": "Leads"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "3fba5f94-67e6-4f9b-ae09-c346d9db6396",
"name": "Is Hot Lead?",
"type": "n8n-nodes-base.if",
"position": [
1648,
352
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $('Score Lead Fit').item.json.output.fit_score }}",
"rightValue": "={{ $('Config (edit me)').item.json.hot_threshold }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "788d50fd-a771-4d25-ac36-6ad42d4776c9",
"name": "Notify Slack",
"type": "n8n-nodes-base.slack",
"position": [
1888,
256
],
"parameters": {
"text": "=:rotating_light: *Hot lead*, score {{ $('Score Lead Fit').item.json.output.fit_score }}\n{{ $('Lead Form').item.json.Name }} ({{ $('Lead Form').item.json.Email }})\nAction: {{ $('Score Lead Fit').item.json.output.recommended_action }}\nWhy: {{ $('Score Lead Fit').item.json.output.reasoning }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "={{ $('Config (edit me)').item.json.slack_channel }}"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "d9eb7884-fd8a-431f-9053-61348746843e",
"name": "Email Hot Lead Alert",
"type": "n8n-nodes-base.gmail",
"position": [
1888,
480
],
"parameters": {
"sendTo": "={{ $('Config (edit me)').item.json.notify_email }}",
"message": "=New hot lead from your site.\n\nName: {{ $('Lead Form').item.json.Name }}\nEmail: {{ $('Lead Form').item.json.Email }}\nWebsite: {{ $('Lead Form').item.json['Company website'] }}\nBudget: {{ $('Lead Form').item.json['Monthly budget'] }}\nNeed: {{ $('Lead Form').item.json['What do you need help with?'] }}\n\nScore: {{ $('Score Lead Fit').item.json.output.fit_score }} ({{ $('Score Lead Fit').item.json.output.tier }})\nRecommended action: {{ $('Score Lead Fit').item.json.output.recommended_action }}\nReasoning: {{ $('Score Lead Fit').item.json.output.reasoning }}",
"options": {},
"subject": "=Hot lead: {{ $('Lead Form').item.json.Name }} ({{ $('Score Lead Fit').item.json.output.fit_score }})",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "97f8d657-b3fa-48de-927f-4616676a8ec2",
"name": "Sticky Note - Setup1",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
448
],
"parameters": {
"color": 5,
"width": 220,
"height": 348,
"content": "### Model Selection\nCurrently using Claude but feel free to substitute a model of your choosing "
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "c902576f-5a25-4f08-b85c-26e0d2a264eb",
"nodeGroups": [],
"connections": {
"Lead Form": {
"main": [
[
{
"node": "Config (edit me)",
"type": "main",
"index": 0
}
]
]
},
"Is Hot Lead?": {
"main": [
[
{
"node": "Notify Slack",
"type": "main",
"index": 0
},
{
"node": "Email Hot Lead Alert",
"type": "main",
"index": 0
}
]
]
},
"Score Lead Fit": {
"main": [
[
{
"node": "Log Lead to Sheet",
"type": "main",
"index": 0
}
]
]
},
"Config (edit me)": {
"main": [
[
{
"node": "Score Lead Fit",
"type": "main",
"index": 0
}
]
]
},
"Log Lead to Sheet": {
"main": [
[
{
"node": "Is Hot Lead?",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "Score Lead Fit",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Score Lead Fit",
"type": "ai_outputParser",
"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.
anthropicApigmailOAuth2googleSheetsOAuth2ApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow captures inbound leads via an n8n Form, scores each submission against a plain-English ICP using Anthropic Claude, logs results to Google Sheets, and alerts hot leads via Slack and Gmail based on a configurable score threshold. Receives a new submission from an n8n…
Source: https://n8n.io/workflows/16290/ — 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.
Automate your lead intake, scoring, and outreach pipeline. This workflow collects leads from forms, enriches and scores them using Relevance AI, routes them by quality, and triggers the right follow-u
Stop wasting time on leads that will never convert. This workflow scores every inbound form submission 1-10 using Claude AI, then automatically replies and routes based on fit — hot leads get an insta
This workflow monitors a Google Sheets patient intake log, uses Anthropic Claude to decide the right follow-up action and draft an email, sends the message via Gmail, optionally notifies a clinic mana
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 91 nodes.
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.