Hunter + HubSpot: qualify leads and log outreach
Your form fills are coming in. Great. Then the messy part starts: you copy emails into tools, guess which leads are worth a follow-up, and hope you didn’t just send outreach to an address that will bounce. It’s tedious, and it quietly damages deliverability.
This kind of HubSpot lead automation hits marketing managers first, but sales reps and agency owners feel it too. You want faster follow-up, fewer bad emails in your CRM, and a clear record of what was sent. No duct-tape spreadsheets.
This workflow qualifies leads right after they submit your form, sends outreach only when the lead is a fit, and logs everything in HubSpot. Below is what it does, what you get out of it, and how to tailor it without turning this into a big technical project.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Hunter + HubSpot: qualify leads and log outreach
flowchart LR
subgraph sg0["n8n Form Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>n8n Form Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if the email is valid", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Email is not valid, do nothing", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Score lead with MadKudu"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/hunter.png' width='40' height='40' /></div><br/>Verify email with Hunter"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Not interesting enough", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "if customer fit score 60", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Send outreach email", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set keys", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/hubspot.svg' width='40' height='40' /></div><br/>Record engagement in HubSpot"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/hubspot.svg' width='40' height='40' /></div><br/>HubSpot"]
n10 --> n8
n8 --> n7
n8 --> n9
n0 --> n4
n3 --> n6
n4 --> n1
n6 --> n10
n6 --> n5
n1 --> n3
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n6 decision
class n3 api
classDef customIcon fill:none,stroke:none
class n0,n3,n4,n9,n10 customIcon
The Problem: leads get followed up late (or not at all)
Form leads are only “hot” for a short window, but most teams treat them like a batch job. Someone checks the inbox later, exports a CSV, or manually creates a contact, then tries to decide if the person is worth emailing. Meanwhile, low-quality addresses slip in and bounce, which hurts your sender reputation over time. And the worst part is the lack of a clean timeline: half the outreach lives in Gmail, half in someone’s memory, and HubSpot ends up incomplete or wrong.
It adds up fast. Here’s where the friction usually shows up.
- Bad or risky emails get into HubSpot, so you spend time cleaning contacts instead of nurturing them.
- Leads get “scored” in someone’s head, which means follow-up quality depends on who is on duty.
- Outreach goes out late because the process requires too many handoffs between form, inbox, and CRM.
- Even when you do email quickly, the activity often isn’t logged, so reporting and attribution become guesswork.
The Solution: verify, score, email, and log automatically
This workflow starts the moment someone submits your form. First, it runs the email through Hunter’s verification so you can avoid bounces and obvious junk. If the email looks valid, it calls MadKudu to score the lead (fit scoring), then compares that score to a threshold you control. Only leads that clear the bar move forward. From there, the workflow checks HubSpot to see if the contact already exists, maps the right fields, sends your outreach email via Gmail, and logs the engagement back into HubSpot so your CRM history stays truthful.
The workflow begins with form intake in n8n, then email verification in Hunter. Next comes MadKudu scoring and a simple “fit/not fit” decision. Finally, HubSpot is updated and Gmail outreach is dispatched, with the email activity recorded so you can see it later.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get 20 form leads a day. Manually, you might spend about 5 minutes per lead verifying the email, checking fit, adding/updating HubSpot, then sending an email, which is roughly 1.5 hours daily. With this workflow, the “human time” is basically just the lead submitting the form, then you reviewing the HubSpot timeline when you want to. The automation runs in the background and typically finishes in a minute or two per lead, so you get that hour-plus back on busy days.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Hunter for email verification and status checks
- MadKudu to score lead fit automatically
- Gmail to send your outreach email
- HubSpot to look up contacts and log engagement
- Hunter API key (get it from your Hunter dashboard)
Skill level: Intermediate. You’ll connect a few accounts, set a lead-score threshold, and paste in your email subject/body.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Form submission kicks it off. A new lead arrives through the n8n form trigger (your embedded form or a hosted form URL). That submission becomes the single source of truth for the rest of the workflow.
Email verification happens immediately. Hunter checks the email status, then an “is this valid?” rule decides what to do next. If the email is risky or invalid, the workflow stops there so you don’t pollute HubSpot or send outreach you’ll regret later.
Lead scoring separates “fit” from “not now.” MadKudu is called via HTTP request, and the workflow compares the returned score against your threshold. Low-fit leads can be safely ignored (or handled in a different branch you add later), while high-fit leads go to HubSpot and Gmail.
HubSpot and Gmail get updated in one go. The workflow looks up the contact in HubSpot, maps the right fields, sends your outreach email in Gmail, then logs the outreach back to HubSpot so the timeline stays complete.
You can easily modify the fit threshold to match your pipeline goals based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form so new lead submissions start the workflow.
- Add the Form Intake Trigger node as your trigger.
- Set Path to
0bf8840f-1cc4-46a9-86af-a3fa8da80608. - Set Form Title to
Contact usand Form Description toWe'll get back to you soon. - Add a form field labeled
What's your business email?.
What's your business email? so expressions in downstream nodes resolve correctly.Step 2: Verify Lead Email with Hunter
Validate incoming emails before scoring and routing.
- Add Hunter Email Verification after Form Intake Trigger.
- Set Operation to
emailVerifier. - Set Email to
={{ $json['What\'s your business email?'] }}. - Credential Required: Connect your
hunterApicredentials.
Step 3: Gate Invalid Emails and Score the Lead
Only valid emails proceed to scoring; invalid ones stop.
- Add Validate Email Status after Hunter Email Verification.
- Configure the condition with Left Value
={{ $json.status }}, Operationequals, and Right Valuevalid. - Connect the false output to Invalid Email Halt to stop invalid records.
- Connect the true output to Score Lead via MadKudu.
- In Score Lead via MadKudu, set URL to
=https://api.madkudu.com/v1/persons?email={{ $json.email }}. - Credential Required: Connect your
httpHeaderAuthcredentials.
$json.email from the Hunter response, not the raw form label.Step 4: Route by Fit Score and Fetch HubSpot Contact
Qualify leads by score, then pull contact details from HubSpot.
- Add Check Fit Score Threshold after Score Lead via MadKudu.
- Set the condition to Left Value
={{ $json.properties.customer_fit.score }}, Operationgt, and Right Value60. - Connect the false output to Low Fit Outcome.
- Connect the true output to Lookup Contact in HubSpot.
- In Lookup Contact in HubSpot, set Email to
={{ $json.email }}and Authentication tooAuth2. - Credential Required: Connect your
hubspotOAuth2Apicredentials.
Step 5: Compose Email Payload and Send + Log in Parallel
Prepare the outreach message and simultaneously send the email and log it in HubSpot.
- Add Map Email Fields after Lookup Contact in HubSpot.
- Set html to
=Hello, Thank you for your interest. We can help you. Schedule a 30-minute call here: [YOUR_LINK] Regards, Automation Team. - Set subject to
Next steps. - Set to to
={{ $json.properties.email.value }}and id to={{ $json.vid }}. - Map Email Fields outputs to both Dispatch Outreach Email and Log Engagement in HubSpot in parallel.
- In Dispatch Outreach Email, set Send To to
={{ $json.to }}, Subject to={{ $json.subject }}, and Message to={{ $json.html }}. - Set Sender Name to
Automation Teamand disable Append Attribution. - Credential Required: Connect your
gmailOAuth2credentials. - In Log Engagement in HubSpot, set Type to
emailand Resource toengagement. - Set Metadata → html to
={{ $json.html }}, subject to={{ $json.subject }}, and toEmail to={{ $json.to }}. - Set Metadata → fromEmail to
[YOUR_EMAIL]and Additional Fields → associations → contactIds to={{ $json.id }}. - Credential Required: Connect your
hubspotOAuth2Apicredentials.
[YOUR_LINK] and [YOUR_EMAIL] with real values before activating, or outreach and logging will be incomplete.Step 6: Test and Activate Your Workflow
Run an end-to-end test to confirm validation, scoring, and outreach are working.
- Click Execute Workflow and submit the Form Intake Trigger form with a valid business email.
- Verify Hunter Email Verification returns
status: validand that Check Fit Score Threshold routes based on the score. - Confirm the qualified path reaches Dispatch Outreach Email and Log Engagement in HubSpot in parallel.
- Check Gmail for the sent message and HubSpot for the engagement record tied to the contact ID.
- When testing is complete, toggle the workflow to Active to run in production.
Common Gotchas
- HubSpot OAuth credentials can expire or lack scopes. If things break, check your connected account status in n8n credentials and confirm the HubSpot app has contact read/write permissions first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30–60 minutes once your accounts are ready.
No. You’ll mostly connect credentials and edit a few fields. The only “techy” part is pasting API keys and choosing your score threshold.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Hunter and MadKudu usage costs, which depend on how many leads you process.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you probably should. You can change the threshold in the “Check Fit Score Threshold” decision, or even swap MadKudu out entirely if you already score leads another way. Common tweaks include raising the score for enterprise campaigns, lowering it for high-volume lead magnets, and adding a separate branch for “medium fit” leads that get a softer email.
Usually it’s expired OAuth credentials or missing scopes. Reconnect HubSpot in n8n, then confirm your HubSpot app has permission to read and write contacts and to log engagement activity. If it fails only on busy days, rate limits can also show up, so spacing requests slightly (or batching) helps.
A typical small-business setup can handle hundreds of leads a day without drama, as long as your Hunter and MadKudu plans support the volume.
Often, yes, because this workflow has multiple decision points (email validity, fit threshold, existing contact lookup) and you may want branching without paying extra for every path. n8n also gives you the option to self-host, which is a big deal if you have heavy lead volume. Another advantage is how comfortably n8n handles HTTP calls, which matters for MadKudu scoring. Zapier or Make can still be fine for a simpler version, especially if you only need “form submit → send email.” If you’re on the fence, Talk to an automation expert and map it to your exact lead flow.
Once this is running, lead qualification and outreach logging stop being a daily chore. Your follow-up gets faster, your HubSpot history stays clean, and you can spend your attention on the leads that actually deserve it.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.