This workflow follows the Form Trigger → 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": "74e0d9d8-9a05-4bf6-82a1-7c7c6b488ac7",
"name": "n8n Form Trigger",
"type": "n8n-nodes-base.formTrigger",
"position": [
380,
420
],
"parameters": {
"path": "0bf8840f-1cc4-46a9-86af-a3fa8da80608",
"options": {},
"formTitle": "Contact us",
"formFields": {
"values": [
{
"fieldLabel": "What's your business email?"
}
]
},
"formDescription": "We'll get back to you soon"
},
"typeVersion": 2
},
{
"id": "86956707-6a69-465e-b73e-e49bfb6fa252",
"name": "Check if the email is valid",
"type": "n8n-nodes-base.if",
"position": [
800,
420
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "54d84c8a-63ee-40ed-8fb2-301fff0194ba",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "valid"
}
]
}
},
"typeVersion": 2
},
{
"id": "15991bbc-77c7-405f-8d8d-aeb5693b8eed",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
220
],
"parameters": {
"color": 5,
"width": 547,
"height": 158,
"content": "### \ud83d\udc68\u200d\ud83c\udfa4 Setup\n1. Add you **MadKudu**, **Hunter**, and **Email** credentials \n2. Set the email where you want the alert\n3. Click the Test Workflow button, enter your email and check the Slack channel\n4. Activate the workflow and use the form trigger production URL to collect your leads in a smart way "
},
"typeVersion": 1
},
{
"id": "0a1d7df3-d536-4530-a3f1-d374bb645738",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
560
],
"parameters": {
"color": 7,
"width": 162,
"height": 139,
"content": "\ud83d\udc46 You can exchange this with any form you like (*e.g. Typeform, Google forms, Survey Monkey...*)"
},
"typeVersion": 1
},
{
"id": "694b79a4-878e-4014-8975-8b81fa10f556",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
480
],
"parameters": {
"color": 7,
"width": 162,
"height": 84,
"content": "\ud83d\udc46 Adjust the fit as you see necessary"
},
"typeVersion": 1
},
{
"id": "e843b7e4-631a-4679-952e-3f4f3ef4592d",
"name": "Email is not valid, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
1140,
560
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9e20efa9-add0-4109-8e83-67fd9ed6e2f9",
"name": "Score lead with MadKudu",
"type": "n8n-nodes-base.httpRequest",
"position": [
1140,
320
],
"parameters": {
"url": "=https://api.madkudu.com/v1/persons?email={{ $json.email }}",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "1e0c1e73-b027-481c-a560-379e7c609b8e",
"name": "Verify email with Hunter",
"type": "n8n-nodes-base.hunter",
"position": [
600,
420
],
"parameters": {
"email": "={{ $json['What\\'s your business email?'] }}",
"operation": "emailVerifier"
},
"credentials": {
"hunterApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1769cddc-e479-4816-8807-b2c1a7cd72c3",
"name": "Not interesting enough",
"type": "n8n-nodes-base.noOp",
"position": [
1680,
460
],
"parameters": {},
"typeVersion": 1
},
{
"id": "f01ed0bd-e198-47d0-95de-cf15ff04be75",
"name": "if customer fit score > 60",
"type": "n8n-nodes-base.if",
"position": [
1380,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c23d7b34-a4ae-421f-bd7a-6a3ebb05aafe",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.properties.customer_fit.score }}",
"rightValue": 60
}
]
}
},
"typeVersion": 2
},
{
"id": "f500ad36-3f4c-4c3e-aadc-ab014be7cb7d",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
1680,
160
],
"parameters": {
"sendTo": "mutasem@n8n.io",
"message": "=Got a hot lead for you {{ $json.properties.first_name }} {{ $json.properties.last_name }} from {{ $json.company.properties.name }} ({{ $json.company.properties.domain }}) based out of {{ $json.company.properties.location.state }}, {{ $json.company.properties.location.country }}.\n\n\n{{ $('Score lead with MadKudu').item.json.properties.customer_fit.top_signals_formatted }}",
"options": {},
"subject": "=\u2b50 Hot lead alert: {{ $json.properties.first_name }} {{ $json.properties.last_name }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "b47b0249-fa84-42b8-b7c5-0e204bc35db4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
40
],
"parameters": {
"color": 7,
"width": 162,
"height": 84,
"content": "\ud83d\udc47\ud83c\udffd Update the email to send to"
},
"typeVersion": 1
}
],
"connections": {
"n8n Form Trigger": {
"main": [
[
{
"node": "Verify email with Hunter",
"type": "main",
"index": 0
}
]
]
},
"Score lead with MadKudu": {
"main": [
[
{
"node": "if customer fit score > 60",
"type": "main",
"index": 0
}
]
]
},
"Verify email with Hunter": {
"main": [
[
{
"node": "Check if the email is valid",
"type": "main",
"index": 0
}
]
]
},
"if customer fit score > 60": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
],
[
{
"node": "Not interesting enough",
"type": "main",
"index": 0
}
]
]
},
"Check if the email is valid": {
"main": [
[
{
"node": "Score lead with MadKudu",
"type": "main",
"index": 0
}
],
[
{
"node": "Email is not valid, do nothing",
"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.
gmailOAuth2httpHeaderAuthhunterApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow streamlines lead qualification by capturing form submissions and instantly verifying email addresses to ensure only genuine prospects advance through your sales pipeline, saving time on chasing invalid contacts. It's ideal for marketing teams or sales professionals handling inbound leads via web forms, particularly those integrated with tools like Gmail for notifications. The key step involves using Hunter to verify the email's validity right after submission, followed by scoring the lead with MadKudu to prioritise high-potential opportunities.
Use this workflow when you receive high volumes of form leads and need automated validation to focus efforts on real prospects, such as during email campaigns or webinar sign-ups. Avoid it for low-volume or highly customised qualification processes where manual review adds value. Common variations include adding Gmail alerts for verified leads or integrating with your CRM for seamless data transfer.
About this workflow
Hunter Form. Uses formTrigger, stickyNote, noOp, httpRequest. Event-driven trigger; 12 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
Hunter Form. Uses stickyNote, formTrigger, noOp, httpRequest. Event-driven trigger; 15 nodes.
Discord Hunter. Uses formTrigger, googleSheets, gmail, discord. Event-driven trigger; 12 nodes.
This workflow is built for agencies, freelancers, and local service businesses who want to automate prospecting. If you sell services to local businesses -- web design, SEO, bookkeeping, HVAC -- this
This workflow is a powerful, two-phase system designed to automate the entire passive candidate sourcing and engagement cycle.
Email form. Uses hunter, formTrigger, sendGrid, stopAndError. Event-driven trigger; 17 nodes.