n8n Sales Pipeline Automation: Webhooks, CRM Sync & Lead Scoring
If you run sales operations, n8n sales automation gives you the flexibility to build a custom lead-to-close pipeline without paying per workflow execution or locking into a single CRM vendor. By combining n8n's Webhook node, HTTP Request node, and Code node, you can capture leads from any landing page, sync them to your CRM of choice, score them automatically, and trigger personalized follow-up sequences — all running on your own infrastructure. Here is how to wire it together.
Why n8n Works for Sales Pipeline Automation
Most sales teams start with a CRM that includes basic automation — lead assignment, email templates, maybe a pipeline view. But those built-in automations break as soon as you need to:
- Capture leads from a custom landing page that is not natively integrated with your CRM.
- Score leads based on data that lives outside the CRM — company size from Clearbit, engagement from email opens, industry from enrichment APIs.
- Sync lead activity across multiple tools simultaneously (CRM plus Slack plus Google Sheets).
- Route leads differently based on territory, product interest, or lead source without writing custom CRM scripts.
n8n solves all of these because it is a general-purpose automation engine, not a CRM add-on. The Community Edition (which powers every n8nautomation.cloud instance) includes everything you need out of the box:
- 400-plus pre-built integration nodes for common CRMs, email tools, and analytics platforms.
- The HTTP Request node — your escape hatch for any REST API that lacks a dedicated node.
- The Code node — run JavaScript to transform data, calculate scores, or parse complex API responses.
- No per-workflow pricing — you pay one flat fee for the instance, then run unlimited workflows and unlimited executions.
That last point matters more than most tutorials admit. If you are capturing hundreds of leads per day and running follow-up sequences on each one, per-execution pricing from tools like Zapier or Make adds up to hundreds of dollars monthly. A managed n8n instance runs everything under a single predictable cost.
Capturing Leads via Webhook from Any Landing Page
The first step in any sales pipeline is getting lead data into the system. Instead of relying on native integrations that may or may not exist for your landing page tool, use the Webhook node. It accepts HTTP requests from any source.
Here is the setup:
- Add a Webhook node to your workflow canvas.
- Set the HTTP Method to POST.
- Set the Path to
/lead-capture(or any descriptive slug). - Under Response Mode, select "Last Node" — this sends back the final output of the workflow as the HTTP response to the form.
- Activate the workflow. n8n generates a unique webhook URL that looks like
https://yourname.n8nautomation.cloud/webhook/lead-capture.
Now configure your landing page form — whether you use Unbounce, Carrd, Webflow, or a raw HTML form — to POST to that webhook URL. The payload should include the fields you need for scoring and routing:
{
"email": "lead@example.com",
"name": "Jane Doe",
"company": "Acme Corp",
"company_size": 250,
"industry": "SaaS",
"product_interest": "Enterprise"
}Test it with curl before connecting the live form:
curl -X POST https://yourname.n8nautomation.cloud/webhook/lead-capture \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com","name":"Test User","company":"TestCo","company_size":100,"industry":"SaaS","product_interest":"Enterprise"}'If the workflow executes without errors, the webhook returns the final node output. You are now capturing leads from any form, on any platform, with zero additional middleware.
Tip: Use the Webhook node's Response Data setting to control what gets sent back to the form. For a landing page, returning a simple {"status": "success"} message is cleaner than returning the full workflow output. Set it via the node options panel.
Syncing Leads to Your CRM with the HTTP Request Node
Once the webhook captures a lead, the next step is pushing that data into your CRM. Whether you use HubSpot, Salesforce, Zoho CRM, Pipedrive, or a self-hosted solution like EspoCRM or Twenty, the HTTP Request node handles it without requiring a dedicated integration node.
Here is the pattern:
- Add an HTTP Request node after the Webhook node on the canvas.
- Set Method to POST — most CRM APIs use POST for creating contacts.
- Enter the CRM's API endpoint for creating contacts. For example:
- HubSpot:
https://api.hubapi.com/crm/v3/objects/contacts - Pipedrive:
https://api.pipedrive.com/v1/persons - Zoho CRM:
https://www.zohoapis.com/crm/v2/Contacts
- HubSpot:
- Set Authentication to "Generic Credential" or "Header Auth" depending on your CRM's requirements, then configure the API key or OAuth token.
- In the Body, map the incoming webhook fields to the CRM's expected field names using n8n's expression syntax:
{{ $json.email }},{{ $json.name }}, and so on.
Example body for HubSpot:
{
"properties": {
"email": "{{ $json.email }}",
"firstname": "{{ $json.name.split(' ')[0] }}",
"lastname": "{{ $json.name.split(' ').slice(1).join(' ') }}",
"company": "{{ $json.company }}",
"hs_lead_status": "new"
}
}The expression syntax lets you transform data inline — splitting full names into first and last, formatting phone numbers, or concatenating address fields — all without a separate Code node.
Scoring Leads Automatically with the Code Node
Raw lead data is useful, but scoring it transforms a flat list of names into a prioritized pipeline. Use n8n's Code node to assign a score based on the fields your webhook captured.
Add a Code node after the HTTP Request node and use JavaScript:
const lead = $input.first().json;
let score = 0;
// Score by company size
if (lead.company_size >= 500) {
score += 40;
} else if (lead.company_size >= 100) {
score += 25;
} else {
score += 10;
}
// Score by industry
const highValueIndustries = ['SaaS', 'FinTech', 'Healthcare'];
if (highValueIndustries.includes(lead.industry)) {
score += 30;
}
// Score by product interest
if (lead.product_interest === 'Enterprise') {
score += 30;
} else if (lead.product_interest === 'Professional') {
score += 15;
}
return {
...lead,
lead_score: score,
lead_tier: score >= 70 ? 'hot' : score >= 40 ? 'warm' : 'cold'
};This gives every incoming lead a numeric score between 10 and 100 and a human-readable tier label. You can adjust the thresholds, add penalty criteria (leads from free email domains lose 10 points), or pull enrichment data from a third-party API before scoring — the Code node runs arbitrary JavaScript, so any scoring model you can write, n8n can execute.
Routing Leads with the Switch Node for Follow-Up Sequences
Once leads are scored, route them to different follow-up paths using the Switch node. This replaces the manual triage that sales reps typically do every morning.
- Add a Switch node after the Code node.
- Set Mode to "Expression".
- In the expression field, enter:
{{ $json.lead_tier }} - Define three output routes:
hot,warm, andcold.
Now wire each route to the appropriate action nodes:
- Hot leads — score 70 or higher: Send a Slack message to the sales team channel with lead details and a link to the CRM record. Also send a personalized email to the lead using the Email node or a transactional email service like Resend, SendGrid, or SMTP.
- Warm leads — score between 40 and 69: Add to a drip email sequence. Use the Schedule Trigger node or a Wait node to space follow-ups over several days — day 1 introduction, day 3 case study, day 7 check-in.
- Cold leads — score below 40: Append to a Google Sheet for future re-engagement campaigns. No immediate follow-up required, but the data is preserved for email blasts or retargeting audiences.
The Slack notification for hot leads is the most impactful piece of this pipeline. Sales reps see a message in their team channel within seconds of the lead submitting the form:
🚀 Hot Lead Alert!
Name: Jane Doe
Company: Acme Corp (250 employees)
Industry: SaaS
Score: 70/100
View in CRM: [link]This turns a passive lead capture form into an active sales alert system. Reps stop checking spreadsheets and start responding to notifications — which directly improves response time and conversion rates.
Tip: Use the Slack node's Block Kit Builder to format the alert message with buttons that link directly to the CRM record. A "View Lead" button reduces the friction of switching between Slack and the CRM browser tab.
Monitoring Your Sales Pipeline with n8n Logs
When you are running multiple workflows that handle lead capture, CRM sync, scoring, and notifications, debugging becomes critical. A failed webhook or a dropped API call means a lost lead — and you often do not know it happened until a rep asks why a hot lead never appeared.
Every n8nautomation.cloud instance includes a built-in Logs viewer that shows detailed execution data for every workflow run. You can see:
- Which node failed and the exact error message returned by the API.
- The complete payload that came through the webhook — useful for verifying field mapping.
- HTTP response codes from CRM API calls — a 400 or 401 tells you the credential or payload is wrong.
- The output of the Code node at each scoring step, so you can verify the logic produces the expected tier.
Without logs, diagnosing a failed lead sync means adding temporary Code nodes that log to console and hoping you catch the error before the execution data is garbage-collected. With the Logs viewer, you can inspect any execution retroactively — even ones from last week.
This is especially valuable for n8n sales automation because lead data is time-sensitive. If the CRM sync fails at 2 PM, you want to know by 2:01 PM, not discover it during the next weekly pipeline review.
Putting It All Together
The entire pipeline — webhook capture, CRM sync, lead scoring, routing, and notification — fits in a single n8n workflow with five nodes:
- Webhook node — captures the incoming lead payload from your landing page.
- HTTP Request node — creates the contact record in your CRM via its REST API.
- Code node — calculates the lead score and assigns a tier based on your scoring criteria.
- Switch node — routes the lead to the correct follow-up path based on the tier.
- Slack / Email / Google Sheets nodes — execute the appropriate follow-up action for each tier.
That is it. No middleware, no additional SaaS subscriptions, no per-lead fees. The instance runs 24/7 on n8nautomation.cloud with automatic backups, instant setup, and the built-in Logs viewer — you deploy once and the pipeline runs continuously.
If you already have an n8n instance running elsewhere, the migration tool transfers your workflows in seconds. Provide the old instance URL and API key, point it to your new n8nautomation.cloud instance, and the workflows move over with their triggers, expressions, and node configurations intact. You reconnect credentials on the new instance for security, but the logic — webhook paths, scoring expressions, routing rules — transfers as-is.