Building a Lead Capture System with n8n and Typeform
What You’ll Need
- n8n Cloud or self-hosted n8n
- Hetzner VPS or Contabo VPS for self-hosting
- Namecheap if you need a custom domain
- Typeform account (free tier works)
- A spreadsheet tool like Google Sheets or Airtable (optional but recommended)
Table of Contents
- Why Typeform + n8n Is a Game-Changer
- Setting Up Your Typeform
- Connecting n8n to Typeform
- Building the Lead Capture Workflow
- Adding Data Validation and Filtering
- Storing Leads in Google Sheets
- Sending Automated Follow-Up Emails
- Testing and Deploying
- Getting Started
Why Typeform + n8n Is a Game-Changer
I’ve been building automation workflows for three years now, and the combination of Typeform and n8n Cloud is hands-down one of the most cost-effective ways to capture, validate, and nurture leads without touching a single line of code—well, almost.
Here’s the reality: most teams either pay $50–200/month for marketing automation platforms that feel bloated, or they cobble together Zapier, Make.com, and custom scripts that break after every update. With n8n, you own your workflow completely. No surprise pricing. No feature limits based on your plan tier.
When a lead fills out your Typeform, n8n instantly captures that data, validates it, stores it wherever you want, and triggers follow-up actions—all in a single, unified workflow. If you’re already looking to optimize your stack, check out our guide on 5 n8n Workflows That Replace $200/Month in SaaS Tools to see how many other platforms you can retire.
Setting Up Your Typeform
First, let’s create the form that’ll capture your leads. I’m going to keep it simple for this guide—name, email, phone, and a company field.
Log into Typeform and click Create a new form. Choose the Blank template. Here’s what to add:
Field 1: Full Name
- Question type: Short text
- Question: “What’s your full name?”
- Make it required
Field 2: Email Address
- Question type: Email
- Question: “What’s your email address?”
- Make it required
Field 3: Phone Number
- Question type: Phone number
- Question: “What’s your phone number?”
- Optional
Field 4: Company
- Question type: Short text
- Question: “What company are you with?”
- Optional
Field 5: How did you hear about us?
- Question type: Multiple choice
- Options: Google, LinkedIn, Referral, Other
- Make it required
Once you’ve built the form, click Share and grab the public link. You’ll also need your Typeform API token, which you can get from your account settings under API & Apps → Personal tokens. Create a new token and copy it—you’ll need this in n8n.
Connecting n8n to Typeform
Now let’s set up n8n Cloud to listen for new Typeform responses. If you’re self-hosting, the steps are identical—just deploy n8n on a Hetzner VPS or Contabo VPS first.
Log into n8n and create a new workflow. Start by dragging in a Webhook node—this is how n8n will receive data from Typeform in real-time.
In the Webhook node:
- Set HTTP Method to POST
- Copy the webhook URL (you’ll need this in Typeform)
- Leave Authentication as None for now (we’ll secure it later if needed)
Now, head back to Typeform. Go to your form’s Settings → Integrations → Webhooks. Paste your n8n webhook URL and select which events to trigger on—choose Response completed.
Next, add a Typeform node in n8n to pull historical responses. Click the + icon to add a new node, search for Typeform, and select the Typeform trigger node.
Create a new Typeform credential:
- Paste your API token
- Test the connection
Select your form from the dropdown. This node will trigger whenever a new response is submitted.
Building the Lead Capture Workflow
Here’s the actual workflow we’re going to build. I’ll walk you through each node.
Node 1: Typeform Trigger This is your entry point. It fires whenever someone submits the form.
Node 2: Parse the Response Add a Set node to extract and structure the data:
{
"full_name": "{{ $json.form_response.answers[0].text }}",
"email": "{{ $json.form_response.answers[1].email }}",
"phone": "{{ $json.form_response.answers[2].phone_number }}",
"company": "{{ $json.form_response.answers[3].text }}",
"source": "{{ $json.form_response.answers[4].choice.label }}",
"submission_id": "{{ $json.form_response.token }}",
"submitted_at": "{{ $json.form_response.submitted_at }}"
}
This restructures the Typeform response into clean, usable data.
💡 Fast-Track Your Project: Don’t want to configure this yourself? I build custom n8n pipelines and bots. Message me with code SYS3-HUGO.
Adding Data Validation and Filtering
Not every submission is a qualified lead. Let’s add validation to filter out bad data.
Add an If node after your Set node:
// Check if email exists and is valid
$json.email && $json.email.includes('@')
// AND check if name is at least 2 characters
&& $json.full_name && $json.full_name.length >= 2
If the condition is true, the workflow continues. If false, it stops—you can optionally send a data quality error notification.
For additional filtering, you might want to check against your existing customer database. Use another If node to query a database and mark duplicates:
// Example: Skip if email already in database
!$json.existing_customer
When you’re building more complex workflows like this, exploring The Best Free APIs for Building Automation Workflows in 2026 can help you integrate additional validation services without cost.
Storing Leads in Google Sheets
Now let’s save every valid lead to a spreadsheet. Add a Google Sheets node.
Set up your Google credentials:
- Click Authenticate
- Select your Google account
- Choose or create a new spreadsheet
In the Google Sheets node:
- Document ID: Paste your spreadsheet ID (from the URL)
- Sheet: Select the sheet name (e.g., “Leads”)
- Columns: Map each field:
Column A: full_name → {{ $json.full_name }}
Column B: email → {{ $json.email }}
Column C: phone → {{ $json.phone }}
Column D: company → {{ $json.company }}
Column E: source → {{ $json.source }}
Column F: submitted_at → {{ $json.submitted_at }}
This creates a permanent record of every lead your form captures.
Sending Automated Follow-Up Emails
The real power of this system is automation. Let’s send a personalized welcome email the moment someone becomes a lead.
Add a Send Email node (or use Gmail if you want to send from your Gmail account):
Configure it like this:
To: {{ $json.email }}
From: noreply@yourcompany.com
Subject: Welcome, {{ $json.full_name }}! Here's what's next
For the email body, use HTML:
<h2>Hey {{ $json.full_name }},</h2>
<p>Thanks for filling out our form! We saw you're with <strong>{{ $json.company }}</strong> and heard about us through <strong>{{ $json.source }}</strong>.</p>
<p>Here's what happens next:</p>
<ul>
<li>Our team will review your information</li>
<li>You'll get a personalized demo within 24 hours</li>
<li>We'll answer any questions you have</li>
</ul>
<p>In the meantime, <a href="https://yourcompany.com/resources">check out our resources</a>.</p>
<p>Cheers,<br/>The Team</p>
If you want to take this further and automate email sequences, our guide on Automate Your Email Newsletter with n8n and Claude shows how to generate personalized content at scale using AI.
Testing and Deploying
Before you go live, test the entire workflow. Click Execute Workflow and fill out your Typeform manually. Watch each node execute in real-time:
- The Typeform trigger fires
- Data is parsed and structured
- Validation checks pass
- Lead is added to Google Sheets
- Welcome email is sent
If any step fails, n8n will show you the exact error. Common issues:
- Invalid email format → Typeform should validate this, but n8n double-checks
- Google Sheets authentication expired → Re-authenticate
- Email sending fails → Check your email provider’s SMTP credentials
Once everything works, click Activate to turn on the workflow. It’s now live and listening for new Typeform submissions 24/7.
Getting Started
You’re ready to capture leads like a pro. Here’s your checklist:
- Create your Typeform with the fields you need
- Set up n8n Cloud (or self-host on Hetzner VPS )
- Connect Typeform’s API to n8n
- Build the workflow following the steps above
- Test thoroughly before activating
- Monitor your Google Sheets for leads rolling in
From here, you can expand: add Slack notifications, integrate with your CRM, score leads based on company size, or trigger different workflows based on which “source” they selected.
Outsource Your Automation
Don’t have time? I build production n8n workflows, WhatsApp bots, and fully automated YouTube Shorts pipelines. Hire me on Fiverr — mention SYS3-HUGO for priority. Or DM at chasebot.online .
Want to automate this yourself?
Start with n8n Cloud (free tier available) or self-host on a Hetzner VPS for full control.
📬 Get Weekly Automation Tips
One email per week with tutorials, tools, and workflows. No spam, unsubscribe anytime.