Home/Integrations/n8n + HubSpot
Integration

n8n + HubSpot integration: every lead in, deduped, assigned.

The pipeline we build most often. Leads arrive from forms and ad platforms, get cleaned and enriched, land in HubSpot as one clean record, and the right rep hears about it in Slack within seconds.

The problem this solves

Most HubSpot instances we open are not short of leads. They are short of trustworthy leads: the same person exists three times with different capitalisation, half the records have no company or source, and the sales team has quietly stopped believing the pipeline because nobody knows which deals are real.

That is not a HubSpot problem. It is what happens when leads enter through five different doors — website form, Meta lead ad, LinkedIn, a spreadsheet someone imports, a rep typing it in — with no single gate in front of the CRM. The fix is one automated intake path that every lead has to pass through.

The build

What the workflow actually does

Eight steps between a submitted form and a rep with context. Every one of them logged.

01

Capture the lead, whatever the source

A single n8n webhook endpoint accepts your site form, while Meta Lead Ads, LinkedIn and Google Sheets flow into the same workflow through their own trigger nodes. One intake path, many doors.

02

Normalise before anything else touches it

Lowercase and trim the email, strip UTM junk, format the phone number to E.164, split a full name into first and last, and reject obvious spam. Bad data is cheapest to fix here.

03

Look up the contact in HubSpot first

A HubSpot search by email decides the entire rest of the run. Found means update, not found means create. This one step is what eliminates duplicate records permanently.

04

Enrich what the form did not ask for

Company domain, size, industry and location pulled from an enrichment API or inferred from the email domain, so your reps are not googling the prospect before the first call.

05

Score against your actual ideal customer

A scoring step you define: company size, industry fit, budget signal, page path the lead came from. The score decides routing, not a rep's gut feel at 5pm.

06

Write one clean record to HubSpot

Create or update the contact, associate it with the right company, set lifecycle stage, and write the original source and campaign into custom properties so attribution actually survives.

07

Create the deal and route it

High scores open a deal in the correct pipeline and stage, assigned by territory or round-robin. Low scores go to a nurture list instead of wasting a rep's morning.

08

Notify the rep with the context, not just a name

A Slack or email alert with the score, the enrichment, the page they converted on, and a direct link to the HubSpot record. Plus a timeline note in HubSpot explaining why the lead was routed the way it was.

The parts people skip, and regret

Dedupe by search, not by hope

HubSpot's create-or-update endpoint deduplicates on email and that covers the common case. It does not help when the same human submits as ana@acme.com on Monday and a.petrovic@acme.com on Friday. If that matters to you, the workflow needs a second search on phone or company domain and a merge branch. Decide this up front, because retro-merging thousands of contacts is genuinely painful.

Write the source into a custom property

HubSpot's own original-source tracking is coarse. If you want to know that a deal came from a specific Meta ad set or a specific blog post, capture it at intake and write it to your own properties. Do this on day one; you cannot backfill attribution you never recorded.

Give the workflow an error path

A lead lost to a 429 response is a lead lost forever, and you will not notice. Every pipeline we ship has an attached error workflow: retry with backoff, then on final failure store the raw payload and alert a human. Leads queue up rather than evaporating.

Rate limits are real

HubSpot enforces per-second and daily API limits that vary by subscription tier — the current numbers are in HubSpot's API usage guidelines. Batch imports need throttling or they will trip them; the fix is a Split In Batches node with a wait, not a faster server.

Bidirectional sync, when you need it

Everything above pushes into HubSpot. The reverse direction — HubSpot as the trigger — is where the compounding value tends to be. Using the HubSpot Trigger node, a deal moving to Closed Won can provision the customer's account, kick off onboarding emails, create the project in your delivery tool and post to a revenue channel, without anyone remembering to do it.

Our rule of thumb: build the inbound pipeline first and let it run for two weeks, then add outbound triggers once you trust the data going in. Bidirectional sync on top of dirty data just spreads the mess faster.

What you get on handover

  • The workflow running on your own n8n instance, self-hosted or cloud, that you own outright
  • Workflow JSON in a repository, so every change is reviewable and reversible
  • A written map of what triggers what, which HubSpot properties are written, and where the error path goes
  • The first live runs monitored with us watching, before you are on your own
  • No retainer. If you never want to speak to us again, the system keeps running

If you are still deciding on the platform underneath this, the n8n vs Zapier comparison covers the cost maths, and n8n vs Make covers the closer call.

FAQ

n8n and HubSpot, answered

Does n8n have a native HubSpot node?

Yes. n8n ships a HubSpot node covering contacts, companies, deals, tickets, engagements and lists, plus a HubSpot Trigger node for webhook-driven flows. Anything the node does not expose is reachable through an authenticated HTTP Request node against the HubSpot API.

How do you stop duplicate contacts in HubSpot?

Search before you write. Every workflow we build looks the contact up by email first, then either updates the existing record or creates a new one. HubSpot's create-or-update endpoint handles the simple case, but if you match on phone or a custom ID you need an explicit search step and a branch.

Can n8n update HubSpot deal stages automatically?

Yes. A common pattern is a scheduled or webhook-triggered workflow that reads a signal such as a booked meeting, a payment, or a reply, then moves the associated deal to the matching stage and writes a note to the timeline so the rep sees why it moved.

Do I need HubSpot's paid Operations Hub for this?

No, and that is often the point. Operations Hub's programmable automation and data-sync features are powerful but priced per seat and tier. An n8n instance sitting alongside a lower HubSpot tier can do most of the same custom sync and enrichment work.

How long does an n8n to HubSpot integration take to build?

A single clean pipeline — form or ad lead in, dedupe, enrich, create or update contact, create deal, notify the rep — is typically a few days of build and testing. Multi-source setups with scoring and bidirectional sync take one to two weeks.

What happens when the HubSpot API rate-limits or fails?

The workflow should not silently drop the lead. We attach an error workflow that retries with backoff, and on final failure writes the raw payload to a holding store and alerts, so nothing is lost and the record can be replayed once the API recovers.

One clean record per human

Ready to stop cleaning up your CRM by hand?

Book a free call. We will map your current lead sources on the call and show you exactly where the duplicates are coming from.

Book a free call