Automated Lead Qualification with Typeform, HubSpot, and Gmail
Automate your lead qualification process by connecting Typeform submissions to HubSpot. This workflow creates new contacts, updates their lifecycle stage based on interest, and sends a personalized follow-up email via Gmail.
Overview
Automates lead nurturing by capturing Typeform leads, creating HubSpot contacts, and sending targeted Gmail follow-ups based on user interest.
🧠 Description & Use Case
This workflow automates the process of capturing and qualifying new leads from a Typeform submission. It creates a contact in HubSpot, checks if the lead is interested in your services, and if so, updates their status and sends a personalized follow-up email via Gmail.
🔄 How It Works:
-
Trigger: Capture Lead from Typeform
- The workflow starts automatically whenever a new response is submitted to your specified Typeform form.
-
Format Data
- The
Setnode cleans up the incoming data from Typeform, assigning the answers to clear, usable variables likeform_firstname,form_email, andform_interest.
- The
-
Create Contact in HubSpot
- The
create new contactHubSpot node takes the formatted data and creates a new contact record in your CRM.
- The
-
Qualify the Lead
- The
lead interestedIF node checks the lead's answer to the qualification question (e.g., "Are you currently looking to scale your visual content?").
- The
-
Nurture Interested Leads (True Path)
- If the lead expressed interest, the workflow:
- Updates the contact's lifecycle stage in HubSpot to "Opportunity" using the
update lead stagenode. - Sends a personalized follow-up email via the
send informationGmail node, providing more details and a link to schedule a call.
- Updates the contact's lifecycle stage in HubSpot to "Opportunity" using the
- If the lead expressed interest, the workflow:
-
End for Unqualified Leads (False Path)
- If the lead did not express interest, the workflow simply stops, ensuring your sales team only focuses on qualified prospects.
✅ Real-World Use Cases:
- Sales Automation: Automatically populate your CRM with new leads and kick off the sales process for those who are a good fit, saving your sales team valuable time.
- Marketing Campaign Follow-up: Use this workflow to manage leads from a specific marketing campaign form, ensuring swift and relevant communication.
- Onboarding Funnel: Tailor the initial onboarding experience by sending different resources based on a new user's stated interests or needs.
- Event Registration: Process sign-ups from an event registration form and send targeted information to attendees based on their responses.
Instructions
Basic steps
- Download workflow JSON
- Import into n8n
- Configure node parameters as needed
- Test and enable the workflow
💡 Tips
After importing, verify all connectors and credentials match your environment.
Preview
Workflow Visualization
Nodes
create new contact
hubspot
update lead stage
hubspot
NoOp
noOp
Set values
set
Typeform Trigger
typeformTrigger
lead interested
if
send information
gmail
Statistics
View full JSON structure
{
"nodes": [
{
"name": "create new contact",
"type": "n8n-nodes-base.hubspot",
"position": [
-300,
1200
],
"parameters": {
"email": "={{$json[\"form_email\"]}}",
"resource": "contact",
"additionalFields": {
"industry": "={{$json[\"form_department\"]}}",
"lastName": "={{$json[\"form_lastname\"]}}",
"firstName": "={{$json[\"form_firstname\"]}}",
"companyName": "={{$json[\"form_companyname\"]}}"
}
},
"credentials": {
"hubspotApi": "hubspot_nodeqa"
},
"typeVersion": 1
},
{
"name": "update lead stage",
"type": "n8n-nodes-base.hubspot",
"position": [
100,
1100
],
"parameters": {
"email": "={{$node[\"create new contact\"].json[\"properties\"][\"email\"][\"value\"]}}",
"resource": "contact",
"additionalFields": {
"lifeCycleStage": "opportunity"
}
},
"credentials": {
"hubspotApi": "hubspot_nodeqa"
},
"typeVersion": 1
},
{
"name": "NoOp",
"type": "n8n-nodes-base.noOp",
"position": [
100,
1300
],
"parameters": {},
"typeVersion": 1
},
{
"name": "Set values",
"type": "n8n-nodes-base.set",
"position": [
-500,
1200
],
"parameters": {
"values": {
"string": [
{
"name": "form_firstname",
"value": "={{$json[\"First up, what's your name?\"]}}"
},
{
"name": "form_lastname",
"value": "={{$json[\"And your surname, [field:fda1954c-f7a3-4fd3-a8dc-dcad5160bab5]?\"]}}"
},
{
"name": "form_department",
"value": "={{$json[\"And in which department do you work, [field:fda1954c-f7a3-4fd3-a8dc-dcad5160bab5]?\"]}}"
},
{
"name": "form_companyname",
"value": "={{$json[\"Great! Now what company are you from?\"]}}"
},
{
"name": "form_email",
"value": "={{$json[\"Just a couple more questions left! What's your email address?\"]}}"
}
],
"boolean": [
{
"name": "form_interest",
"value": "={{$json[\"And are you currently looking to scale your visual content?\"]}}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "Typeform Trigger",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
-700,
1200
],
"webhookId": "97eb74c8-156c-4329-8679-37b69533f709",
"parameters": {
"formId": "RPueloJC"
},
"credentials": {
"typeformApi": "typeform"
},
"typeVersion": 1
},
{
"name": "lead interested",
"type": "n8n-nodes-base.if",
"position": [
-100,
1200
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$node[\"Set values\"].json[\"form_interest\"]}}",
"value2": true
}
]
}
},
"typeVersion": 1
},
{
"name": "send information",
"type": "n8n-nodes-base.gmail",
"position": [
300,
1100
],
"parameters": {
"toList": [
"={{$json[\"properties\"][\"email\"][\"value\"]}}"
],
"message": "=Hello {{$json[\"properties\"][\"firstname\"][\"value\"]}},\n\nI'm glad to hear you're interested in our services. You can schedule a call with me here: [calendly_link].\nUntil then, check out this presentation about how we can help your business: [presentation_link].\nLooking forward to talking to you!\n\nBest,\nTeam",
"subject": "So you're interested in growing your business",
"resource": "message",
"additionalFields": {}
},
"credentials": {
"gmailOAuth2": "gmail"
},
"typeVersion": 1
}
],
"connections": {
"Set values": {
"main": [
[
{
"node": "create new contact",
"type": "main",
"index": 0
}
]
]
},
"lead interested": {
"main": [
[
{
"node": "update lead stage",
"type": "main",
"index": 0
}
],
[
{
"node": "NoOp",
"type": "main",
"index": 0
}
]
]
},
"Typeform Trigger": {
"main": [
[
{
"node": "Set values",
"type": "main",
"index": 0
}
]
]
},
"update lead stage": {
"main": [
[
{
"node": "send information",
"type": "main",
"index": 0
}
]
]
},
"create new contact": {
"main": [
[
{
"node": "lead interested",
"type": "main",
"index": 0
}
]
]
}
}
}Actions
Technical Specs
Compatibility
License
This workflow template follows MIT license, you can freely use, modify and distribute.
Please comply with relevant third-party service terms when using.