Blog / Automation

How to Build an Automated Lead Intake & Follow-Up System with n8n (The Workflow That Does the Work While You Sleep)

Every service business leaks revenue through slow lead follow-up. Someone fills in your contact form at 8pm on a Friday — and by the time you respond Monday morning, they've already booked someone else. This guide shows you how to build a fully automated intake system with n8n that responds instantly, creates CRM contacts, and notifies your team the moment a lead comes in. No code required. Mostly.

Brendan Andrew Chase

Brendan Andrew Chase

June 21, 2026  ·  16 min read  ·  Automation

What We're Building — and Why It Matters

Speed-to-lead is one of the most consistently underestimated variables in service business sales. Studies from Harvard Business Review put the ideal follow-up window at under five minutes — after that, the chances of connecting with a prospect drop by roughly 80%. Most businesses respond within hours, if not days. The ones responding in under a minute are almost always doing it with automation.

n8n is an open-source workflow automation platform — think Zapier, but self-hosted, far more flexible, and with no per-task pricing that punishes you for automating heavily. It connects hundreds of apps through a visual node-based editor and lets you add logic, conditions, loops, and AI processing without writing traditional code.

The workflow we're going to build does the following, automatically, every time someone submits your contact form:

  • Captures the lead data via webhook the instant the form is submitted
  • Runs the enquiry through an AI model to score and categorise it
  • Creates a new contact and deal in your CRM (HubSpot in this example)
  • Sends the lead a personalised, human-sounding email response within seconds
  • Posts a notification to your Slack (or email, or both) so your team knows immediately
  • Logs every lead to a Google Sheet with timestamp, score, and source

This isn't a niche automation for large enterprises. It's practical and achievable for any service business — a roofing company, a digital agency, a consultant, a trades business. If you're spending money on Google Ads or any paid channel, the speed and quality of your first response is directly connected to your return on that spend.

Why n8n over Zapier or Make?

Zapier charges per task. If your workflow runs 6 steps on 500 leads a month, that's 3,000 tasks — which can run to $50–$150/month at mid-tier plans, and much more as you scale. n8n's self-hosted version is free (you pay for the server, typically $5–$10/month on a VPS). The cloud version has a flat monthly fee regardless of task volume. For high-frequency automations, n8n is substantially cheaper and more powerful.

The Full Workflow at a Glance

Before we step through each node, here's the complete picture of what we're building. Each box is a node in n8n — a discrete step that does one thing and passes data to the next.

Webhook Trigger
AI: Score & Categorise
IF: Qualified?
YES →
HubSpot: Create Contact
HubSpot: Create Deal
Both paths:
Gmail: Send Email
Slack: Notify Team
Sheets: Log Row

The conditional branch in the middle is important — you probably don't want to create a CRM deal for every tyre-kicker. The AI scoring step lets you set a threshold: only leads that look like genuine commercial enquiries get pushed into HubSpot. Low-quality or irrelevant submissions still get logged and notified, but they skip the CRM creation step to keep your pipeline clean.

Step 1: The Trigger — Catching Leads the Moment They Come In

Every n8n workflow starts with a trigger node — the event that kicks everything off. For lead intake, you want a Webhook node. This gives you a unique URL that your contact form can POST data to the instant someone submits it.

In n8n, add a Webhook node, set the HTTP method to POST, and copy the generated URL. Then in your contact form tool (Gravity Forms, Typeform, WPForms, or even a custom HTML form), add this URL as the form's webhook or notification endpoint. Most form tools have this built in under "Notifications" or "Integrations."

What Your Webhook Receives

When the form submits, n8n receives the form data as a JSON payload — something like this:

{
  "name": "Sarah Thompson",
  "email": "sarah@example.com",
  "phone": "+1 555 0192",
  "message": "Hi, I need a quote for a commercial cleaning contract —
              we have 3 office units across the city.",
  "source": "google-ads",
  "page": "/contact"
}

Each field becomes accessible in every subsequent node via n8n's expression syntax — for example, {{ $json.email }} to reference the email field. Simple enough in principle. We'll come back to where this gets fiddly.

Step 2: Score and Categorise the Lead with AI

This is where the workflow gets genuinely intelligent. Add an OpenAI node (or use n8n's built-in AI Agent node) and write a system prompt that instructs the model to analyse the incoming message and return a structured score.

Your prompt might look something like this:

"You are a lead qualification assistant. Analyse the following enquiry and return a JSON object with these fields: score (1–10), category (commercial / residential / unknown), urgency (high / medium / low), and reason (one sentence). Score based on commercial value signals, budget indicators, urgency language, and specificity of the request. Return only valid JSON, no additional text."

The AI response then passes forward through the workflow. An IF node checks whether score >= 6 — if yes, the lead is qualified and flows into CRM creation. If not, it skips straight to email and logging.

This step alone saves hours of triage every week. Instead of manually reading through enquiries to figure out which ones are worth your time, the workflow hands you pre-scored leads with a category and urgency flag. Paired with the right conversion tracking setup, you can even start to see which lead sources produce the highest-scoring enquiries — not just the most.

Step 3: Create the CRM Contact Automatically

For leads that pass the scoring threshold, the next step is creating a contact (and optionally a deal) in your CRM. n8n has native nodes for HubSpot, Salesforce, Pipedrive, and most major CRMs.

Add a HubSpot: Create Contact node, connect it to your HubSpot account, and map the fields from your webhook data:

  • First name / last name — parsed from the name field using a Set node or expression
  • Email{{ $json.email }}
  • Phone{{ $json.phone }}
  • Lead source — passed from the form's hidden source field
  • AI score — stored as a custom HubSpot property (you'll need to create this in HubSpot first)

Follow this with a HubSpot: Create Deal node, linking the deal to the contact you just created, setting the deal stage to "New Enquiry" and populating the deal name from the enquiry message summary.

This is where the time savings compound

Without this automation, a new lead means manually copying name, email, and notes into your CRM — and that only happens if someone remembers to do it. In busy periods, leads slip through. With this workflow, every qualified enquiry is in your CRM pipeline within three seconds of submission, with source attribution intact. If you later want to track which leads converted into revenue, the data is already there — which is exactly what makes CRM-connected ROAS tracking possible.

Step 4: Send a Personalised Follow-Up Email

This is the step that makes the most visible difference to prospects. Add a Gmail node (or SMTP node if you use a non-Google mail provider) set to "Send Email." The key here is using the lead's data — and optionally the AI node's output — to write an email that doesn't feel automated.

A basic email body using n8n expressions:

Subject: Re: Your enquiry — Extra Large Marketing


Hi {{ $('Webhook').item.json.name.split(' ')[0] }},


Thanks for getting in touch — I've received your message and I'll come back to you with a full response within a few hours.


In the meantime, feel free to browse our case studies to get a sense of the kind of work we do.


Best,
Brendan
Extra Large Marketing Digital

You can go further and use a second AI call to generate a custom opening sentence based on the enquiry content — something like "I can see you're looking at [category of service] — that's an area we have a lot of experience with." When done well, this reads as a genuine personal response and dramatically improves first-impression conversion.

Step 5: Notify Your Team on Slack

The email handles the prospect. The Slack notification handles your team. Add a Slack node, connect it to your workspace, and configure a message to post to a dedicated #new-leads channel:

🔔 New Lead

Name: Sarah Thompson

Email: sarah@example.com

Score: 8/10 (Commercial · High urgency)

Source: Google Ads

Message: Needs quote for 3-unit commercial cleaning contract

CRM: View in HubSpot →

Your team gets all the context they need in a single glance — no logging into three different systems to piece together who just enquired and what they want. If you're a solo operator, this notification goes to your phone as a Slack or email push — instant awareness of every new lead without being glued to your inbox.

Step 6: Log Everything to Google Sheets

Even with a CRM in place, a flat Google Sheet log is invaluable for reporting, export, and analysis. Add a Google Sheets: Append Row node and map a new row for each lead:

Timestamp Name Email Source AI Score Category CRM Created
2026-06-21 09:14 Sarah Thompson sarah@… Google Ads 8 Commercial Yes

Over time, this sheet becomes a searchable audit trail of every lead your business ever received, when it came in, where it came from, and whether it was pushed to the CRM. Useful for monthly reporting, diagnosing gaps, and understanding your lead volume trends without needing to pull CRM reports.

Where It Gets Tricky — The Honest Part

Everything above sounds fairly straightforward, and in theory it is. The n8n canvas makes it look like you're just connecting boxes. In practice, there are a number of places where this workflow will stop working and leave you staring at error logs trying to figure out why.

OAuth2 Credentials for Every Service

To connect Gmail, HubSpot, Slack, and Google Sheets, you need to set up OAuth2 credentials for each one individually. This means creating API apps inside each platform's developer console, generating client IDs and secrets, configuring redirect URIs, setting the correct scopes, and authorising the connection inside n8n. Each platform does this slightly differently. HubSpot requires a private app with specific scopes enabled. Google requires a verified OAuth consent screen before your Gmail credentials will work reliably. Slack requires a bot token with the right permissions assigned. Getting any one of these wrong — a missing scope, an incorrect redirect URI — produces an authentication error that gives you very little to go on.

Webhook Security

Your webhook URL is publicly accessible — which means anyone who finds it can POST data to your workflow. Without authentication, someone could spam your CRM with thousands of fake leads. Proper setup involves adding a secret header that your form tool sends and n8n verifies before processing. This requires configuring both ends correctly and adding a header-validation step at the start of the workflow.

n8n Expression Syntax Is Unforgiving

Referencing data in n8n uses a specific expression syntax — and it changes depending on whether you're referencing the previous node, a specific node by name, or data from several steps back. A reference like {{ $json.name }} works in some contexts, but in others you need {{ $('Webhook').item.json.name }}. Get it wrong and the field arrives empty — no error, just a blank value silently passed through. This is a common cause of emails going out with "Hi ," instead of a name, and CRM contacts being created with missing data.

The AI Node Returns Inconsistent JSON

Language models don't always return perfectly formatted JSON. Even with a prompt that says "return only valid JSON," you'll occasionally get a response wrapped in markdown code fences, or with a trailing comment, or in a slightly different structure. Your workflow needs a validation step to parse and sanitise the AI output before the IF node tries to read the score from it — otherwise the whole workflow errors out when a lead comes in at 2am and no one notices until the morning.

Error Handling and Retries

External APIs fail. HubSpot returns a 429 rate-limit error. Gmail has a temporary authentication hiccup. Google Sheets hits a quota limit. Without error handling branches on each node, a single API failure silently kills the entire workflow for that lead. Building in proper error catching — with retry logic, fallback paths, and error notifications — roughly doubles the complexity of the workflow. But without it, you'll have leads that were never logged, emails that were never sent, and no idea it happened.

Testing Before You Go Live

n8n has a test execution mode where you can trigger a workflow manually and step through the nodes. This works well for checking logic, but testing the live webhook requires your form tool to actually POST data to your n8n instance. If you're running n8n locally, that means setting up a tunnel (typically ngrok) so the external form tool can reach your local server. If you're running n8n on a VPS, that's fine — but setting up the server, configuring SSL, and keeping it maintained is its own task on top of building the workflow itself.

The honest summary

This workflow is absolutely buildable. It works well once it's set up correctly. But "set up correctly" involves credential management across five platforms, expression syntax debugging, AI output validation, error handling architecture, and proper hosting. Most people who attempt it get 80% of the way there and then hit a wall when the last 20% requires knowledge they don't have — and that's exactly where most of the debugging time goes.

What This Workflow Is Worth to Your Business

Let's quantify it. If your average job value is $1,500 and your close rate from qualified enquiries is 30%, each qualified lead is worth roughly $450 in expected revenue. If slow follow-up costs you two of those per month — a very conservative estimate for most service businesses — that's $900 a month in revenue leakage from a problem that's entirely solvable.

The workflow also eliminates manual CRM data entry. For a business receiving 30–50 leads a month, that's typically 2–4 hours of admin per month reclaimed. Time that should be spent on billable work, not copying email addresses into HubSpot.

And it compounds. Once your leads are being logged consistently with source attribution, you can start to build the data layer needed to understand your real cost-per-acquisition at the channel level — which is the foundation of any serious paid advertising programme. That's a topic covered in more depth in the article on why real ROAS matters for service businesses.

If you're already running workflow automation across other parts of your business, this kind of lead-to-CRM pipeline is typically the highest-ROI place to start.

Need Someone to Build It For You?

I build n8n automations for service businesses and agencies as part of my workflow automation freelance work. The workflow described in this article typically takes 6–10 hours to build properly — including credential setup, error handling, testing, and documentation so you can maintain it yourself afterwards.

My rate is $100 per hour. For a full lead intake workflow like this, you're looking at a one-time investment of $600–$1,000 for a system that works indefinitely, saves hours of admin every month, and stops leads from going cold before you've had a chance to respond.

I also build more complex AI-powered automation workflows — if you want to extend this system with AI-generated quote summaries, automatic follow-up sequences, or integrations with more complex platforms, that's all doable too.

Get Your Lead Intake Automation Built

Describe what you're trying to automate and I'll come back to you with a scope, timeline, and fixed quote. No obligation — just a straight answer on what it takes.

Frequently Asked Questions

Do I need to know how to code to use n8n?

Not for most nodes — n8n is a visual drag-and-drop editor and the majority of steps are configured through forms, not code. However, you'll need to learn n8n's expression syntax to pass data between nodes, and some steps — particularly around OAuth2 setup and error handling — require working through API documentation for each service you're connecting. It's closer to "low code" than "no code" for a workflow of this complexity.

How much does n8n cost to run?

n8n's self-hosted version is free and open source — you pay only for the server it runs on, typically $5–$10/month on a basic VPS. n8n Cloud starts at around $20/month for low workflow execution volumes. Unlike Zapier or Make, n8n doesn't charge per task, which makes it significantly cheaper for high-frequency automations. The OpenAI API calls for the AI scoring step cost fractions of a cent each at typical volumes.

Can this work with forms other than Typeform?

Yes — the webhook trigger works with any form tool that supports webhook notifications, which includes Gravity Forms, WPForms, Tally, JotForm, Formidable, and custom HTML forms. It also works with Typeform's native n8n integration. The key is that the form tool needs to be able to POST JSON data to a URL when the form is submitted.

Can this be built with Salesforce or Pipedrive instead of HubSpot?

Yes. n8n has native nodes for Salesforce, Pipedrive, Zoho CRM, and many others. The workflow logic is the same — only the CRM nodes and their field mapping change. Some CRMs have more complex authentication setups than others. If you're using a CRM not natively supported by n8n, you can use the HTTP Request node to call the CRM's REST API directly.

How long does it take to build this?

For an experienced n8n builder, a production-ready version of this workflow — with error handling, proper credential management, testing, and documentation — takes around 6–10 hours. For someone learning n8n from scratch, it's more realistic to budget 20–40 hours, accounting for time spent on OAuth2 troubleshooting, expression syntax, debugging API errors, and figuring out the hosting setup. If you'd rather have it built in a few days and just hand it over ready to use, get in touch.

What other workflows can n8n automate?

The use cases are broad: automated client onboarding sequences, invoice generation and payment chasing, social media scheduling and cross-posting, internal reporting pipelines, e-commerce order processing, support ticket routing, and more complex systems like AI agent workflows that handle multi-step decision-making autonomously. If a task involves moving data between apps on a trigger, n8n can almost certainly automate it.

Brendan Andrew Chase

Brendan Andrew Chase

Founder, Extra Large Marketing Digital. Freelance marketing automation consultant specialising in n8n, Google Ads, NetSuite integrations, and analytics. Based in Malta.