
Typeform → Vero Lead Intake with Email Validation & Welcome Email
Description
Categories
⚙️ Automation
Nodes Used
n8n-nodes-base.ifn8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.coden8n-nodes-base.veron8n-nodes-base.gmailn8n-nodes-base.slackn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceFree
Views0
Last Updated11/28/2025
workflow.json
{
"id": "uNv72uzhSr4n9JCF",
"meta": {
"instanceId": "7aaad48c714db2d503d009516f7b1f7c2a87eb30bffff4a635c76d7ede586a84"
},
"name": "Typeform → Vero Lead Intake with Email Validation & Welcome Email",
"tags": [],
"nodes": [
{
"id": "3af5dfc3-3b83-416b-8ae1-a671aa37c5c4",
"name": "Typeform Trigger",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
-208,
64
],
"webhookId": "1e94813c-cc5c-4f5b-b77f-cb7da6c74b4c",
"parameters": {
"formId": "rcM5Z5Le",
"onlyAnswers": false,
"simplifyAnswers": false
},
"typeVersion": 1.1
},
{
"id": "26ed47bd-d50f-48e6-8a66-db6274446c6b",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"position": [
16,
64
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "qualificationScore",
"type": "number",
"value": 40
},
{
"id": "id-2",
"name": "welcomeEmailSubject",
"type": "string",
"value": "Welcome to Our Platform!"
},
{
"id": "id-3",
"name": "slackChannel",
"type": "string",
"value": "#leads"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "d9aaefad-caf0-4e65-b15e-a6a6e0786d23",
"name": "Validate Email Format",
"type": "n8n-nodes-base.code",
"position": [
240,
64
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst email = $input.item.json.email || '';\nconst isValidEmail = emailRegex.test(email);\n\nreturn {\n ...($input.item.json),\n isValidEmail,\n validationStatus: isValidEmail ? 'valid' : 'invalid'\n};"
},
"typeVersion": 2
},
{
"id": "94a1f753-e95a-4bd8-84ab-5fab2cd6bdf1",
"name": "Map Contact Fields",
"type": "n8n-nodes-base.set",
"position": [
464,
64
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "email",
"type": "string",
"value": ""
},
{
"id": "id-2",
"name": "firstName",
"type": "string",
"value": "={{ $json.first_name || $json.firstName || '' }}"
},
{
"id": "id-3",
"name": "company",
"type": "string",
"value": "={{ $json.company || '' }}"
},
{
"id": "id-4",
"name": "plan",
"type": "string",
"value": "={{ $json.plan || 'Free' }}"
},
{
"id": "id-5",
"name": "score",
"type": "number",
"value": "={{ $json.score || 50 }}"
},
{
"id": "id-6",
"name": "source",
"type": "string",
"value": "Typeform"
},
{
"id": "id-7",
"name": "consent",
"type": "boolean",
"value": "={{ $json.consent || true }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "789db198-72cd-4bee-9791-3cf4bda24271",
"name": "IF Qualified Lead",
"type": "n8n-nodes-base.if",
"position": [
912,
64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "id-1",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $('Map Contact Fields').item.json.score }}",
"rightValue": "={{ $('Workflow Configuration').first().json.qualificationScore }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7af1c5e5-04fa-4e29-9178-64b19b2f934c",
"name": "Send Welcome Email",
"type": "n8n-nodes-base.gmail",
"position": [
1136,
64
],
"webhookId": "892d5122-4898-4f3f-a388-ca6e41b3d886",
"parameters": {
"sendTo": "={{ $('Typeform Trigger').item.json.form_response.answers[0].email }}",
"message": "=Hi {{ $('Typeform Trigger').item.json.form_response.answers[1].text }},<br><br>Welcome to our platform! We're excited to have you on board.<br><br>Your plan:{{ $('Map Contact Fields').item.json.plan }} <br><br>Best regards,<br>The Team",
"options": {},
"subject": "={{ $('Workflow Configuration').first().json.welcomeEmailSubject }}"
},
"typeVersion": 2.1
},
{
"id": "062bc613-d06e-4b4e-8e71-144bb8bf9f47",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1360,
64
],
"parameters": {
"columns": {
"value": {
"plan": "={{ $('Map Contact Fields').item.json.plan }}",
"email": "={{ $('Typeform Trigger').item.json.form_response.answers[0].email }}",
"score": "={{ $('Map Contact Fields').item.json.score }}",
"action": "welcome_sent",
"status": "={{ $('Validate Email Format').item.json.validationStatus }}",
"company": "={{ $('Typeform Trigger').item.json.form_response.answers[2].text }}",
"firstName": "={{ $('Typeform Trigger').item.json.form_response.answers[1].text }}",
"timestamp": "={{ $now.toISO() }}"
},
"schema": [
{
"id": "timestamp",
"type": "string",
"display": true,
"required": false,
"displayName": "timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "firstName",
"type": "string",
"display": true,
"required": false,
"displayName": "firstName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company",
"type": "string",
"display": true,
"required": false,
"displayName": "company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "plan",
"type": "string",
"display": true,
"required": false,
"displayName": "plan",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "score",
"type": "string",
"display": true,
"required": false,
"displayName": "score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "vero"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "1fZf14pfCSRZV4wQKt0DAvixcDdqLHSonK2BjE8SCNCA"
}
},
"typeVersion": 4.7
},
{
"id": "46eec741-e4e2-4c8f-92d0-bd5538a3c6b1",
"name": "Notify Slack Channel",
"type": "n8n-nodes-base.slack",
"position": [
1584,
64
],
"webhookId": "cc931b90-9188-499f-8fb1-305886889478",
"parameters": {
"text": "=🎉 New qualified lead!\n\n*Email:* {{ $json.email }}\n*Name:* {{ $json.firstName }}\n*Company:* {{ $json.company }}\n*Plan:* {{ $json.plan }}\n*Score:* {{ $json.score }}\n*Action:* Welcome email sent",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "=#general"
},
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.3
},
{
"id": "99c3e1f7-9dfa-4c49-8c4d-2237cca97c08",
"name": "Vero Upsert Profile",
"type": "n8n-nodes-base.vero",
"position": [
688,
64
],
"parameters": {
"id": "={{ $json.email }}",
"additionalFields": {
"email": "={{ $json.form_response.answers[0].email }}"
},
"dataAttributesUi": {
"dataAttributesValues": [
{
"key": "firstName",
"value": "={{ $json.form_response.answers[1].text }}"
},
{
"key": "company",
"value": "={{ $json.form_response.answers[2].text }}"
},
{
"key": "plan",
"value": "={{ $json.plan }}"
},
{
"key": "score",
"value": "={{ $json.score }}"
},
{
"key": "source",
"value": "={{ $json.source }}"
},
{
"key": "consent",
"value": "={{ $json.consent }}"
}
]
}
},
"typeVersion": 1
},
{
"id": "bf465232-ca6f-44db-a9bd-8dcf29ded892",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
-144
],
"parameters": {
"width": 288,
"height": 176,
"content": "## Typeform Trigger\nListens for new Typeform responses from the specified form. When a submission arrives, it passes the raw answers (email, first name, company, score, consent, etc.) to the workflow as JSON for downstream processing."
},
"typeVersion": 1
},
{
"id": "313d8612-da32-44f6-bb7e-a043bfa0a375",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
224
],
"parameters": {
"width": 304,
"height": 176,
"content": "## Workflow Configuration\nCentralizes user-editable variables (e.g., qualificationScore, slackChannel, email subject, sheet name). Keeps all key constants in one place so users can adapt the template without digging into every node."
},
"typeVersion": 1
},
{
"id": "95d23b42-efe2-4d9f-87a4-5859250e89f4",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
-160
],
"parameters": {
"width": 272,
"height": 192,
"content": "## Validate Email Format\nRuns a lightweight regex check against the submitted email address. Adds flags like isValidEmail and a validationStatus message so the workflow can branch or log clear reasons when the email format is invalid."
},
"typeVersion": 1
},
{
"id": "bccb0e67-bcc1-4422-8bbe-d0f0ad538dd4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
224
],
"parameters": {
"width": 256,
"height": 176,
"content": "## Map Contact Fields\nNormalizes Typeform fields into a clean contact payload (e.g., email, firstName, company, plan, score, consent, source). Ensures consistent property names for the CRM and logging layers."
},
"typeVersion": 1
},
{
"id": "63b5ad8f-6fe5-4a29-b0bc-a44de36f847e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
-160
],
"parameters": {
"width": 272,
"height": 192,
"content": "## Vero Upsert Profile\nCreates or updates a Vero customer profile using the contact payload (email as the primary identifier). Syncs attributes such as first name, company, plan, score, source tag, and consent for future segmentation and messaging."
},
"typeVersion": 1
},
{
"id": "a8a3616d-5a28-42de-9c22-bf213542afd0",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
224
],
"parameters": {
"width": 288,
"height": 192,
"content": "## IF Qualified Lead\nCompares the lead’s score to qualificationScore. Routes “qualified” leads into the welcome email + notifications path, while “not qualified” can be handled with alternate logging or silent discard (depending on how you configure the template)."
},
"typeVersion": 1
},
{
"id": "ed9c6afa-cb2a-404e-9812-56a49cddc709",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
-160
],
"parameters": {
"width": 272,
"height": 192,
"content": "## Send Welcome Email\nSends a personalized welcome message to qualified leads. Uses variables from earlier nodes to populate the subject and body (e.g., first name, selected plan), establishing a rapid first-touch after form submission."
},
"typeVersion": 1
},
{
"id": "47205c03-0b41-4b37-9e77-ee0392148e40",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
224
],
"parameters": {
"width": 272,
"height": 192,
"content": "## Log to Google Sheets\nAppends a new row capturing the event details (timestamp, email, name, company, score, validation status, action taken). Builds an auditable activity trail that’s easy to filter, chart, or share with stakeholders."
},
"typeVersion": 1
},
{
"id": "6759b1bc-a853-445b-82f7-69071e6535c2",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1504,
-144
],
"parameters": {
"width": 272,
"height": 176,
"content": "## Notify Slack Channel\nPosts a concise summary of the qualified lead to the configured Slack channel. Gives your team instant visibility (who, company, score, action taken) without opening Vero, Gmail, or Sheets."
},
"typeVersion": 1
},
{
"id": "f8e115a2-18f7-4836-907a-197ca986e3b2",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-640,
144
],
"parameters": {
"color": 5,
"width": 336,
"height": 240,
"content": "## Workflow Overview\nThis workflow captures new leads from a Typeform submission, validates the email address, enriches and normalizes the fields, and then upserts the contact into Vero. Based on a configurable qualification score threshold, qualified leads automatically receive a personalized welcome email, are logged to a Google Sheet for reporting, and trigger a Slack notification for your team."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "28981280-bc73-4702-ac7a-6f8bc140a2c8",
"connections": {
"Typeform Trigger": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"IF Qualified Lead": {
"main": [
[
{
"node": "Send Welcome Email",
"type": "main",
"index": 0
}
]
]
},
"Map Contact Fields": {
"main": [
[
{
"node": "Vero Upsert Profile",
"type": "main",
"index": 0
}
]
]
},
"Send Welcome Email": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Vero Upsert Profile": {
"main": [
[
{
"node": "IF Qualified Lead",
"type": "main",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Notify Slack Channel",
"type": "main",
"index": 0
}
]
]
},
"Validate Email Format": {
"main": [
[
{
"node": "Map Contact Fields",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Validate Email Format",
"type": "main",
"index": 0
}
]
]
}
}
}