HubSpot is one of the most widely used CRMs in the world - and it already has a decent automation layer built in. So why bother connecting it to n8n? Because HubSpot's native workflows only talk to HubSpot. n8n connects HubSpot to everything else: your billing system, your project management tool, your support desk, your Slack workspace, your data warehouse.

This guide covers eight automation workflows we regularly build for clients using HubSpot as their CRM. Every one solves a real problem that HubSpot's built-in workflows can't touch.

Connecting HubSpot to n8n

n8n has a dedicated HubSpot node with full support for contacts, companies, deals, tickets, and custom properties. Authentication uses OAuth2 - the cleanest option - or a Private App API key if you prefer a simpler setup.

To get started:

The scopes you'll need vary by workflow, but for most use cases: crm.objects.contacts.read/write, crm.objects.deals.read/write, and crm.objects.owners.read cover you for 90% of scenarios.

Workflow 1: New Contact to Multi-Channel Onboarding

When a new contact enters HubSpot, you want more than just an automated email. You want them welcomed across every channel simultaneously - email to the contact, Slack notification to the owner, a task in your PM tool, and a row in your tracking sheet.

Trigger: HubSpot Webhook -- contact.creation Node: HubSpot -- get full contact record + company data Node: Code -- determine lead tier (enterprise / SMB / self-serve) Node: Gmail / SendGrid -- send personalised welcome email Node: Slack -- notify assigned rep with contact summary Node: Notion / Asana -- create onboarding task with due dates Node: Google Sheets -- log to pipeline tracker with timestamp

The tiering step is crucial. An enterprise lead should get a different email, a Slack ping to your senior AE, and a high-priority task. A self-serve signup gets the automated nurture sequence. One trigger, intelligent branching, no manual sorting required.

Workflow 2: Deal Stage Change to Automated Next Steps

Every time a deal moves stages in HubSpot, a chain of actions should follow automatically. Most sales teams do this manually. n8n makes it zero-touch.

Trigger: HubSpot Webhook -- deal.propertyChange (dealstage) Node: Switch -- branch by new deal stage [Proposal Sent] Node: PandaDoc -- generate and send proposal document Node: Slack -- notify rep: "Proposal sent to {company}" [Closed Won] Node: Stripe -- create customer + subscription record Node: Gmail -- send welcome email with onboarding link Node: Notion -- create client project workspace Node: Slack -- post to #wins channel with deal value [Closed Lost] Node: HubSpot -- set re-engage sequence for +90 days Node: Google Sheets -- log to lost deals tracker with reason

The Closed Won branch is where the real value is. The moment a deal closes in HubSpot, a Stripe customer is created, an onboarding email goes out, and a project workspace appears in Notion - all before the rep has even refreshed their browser.

Workflow 3: Lead Score Threshold to Instant Sales Alert

HubSpot's lead scoring is powerful, but its alerting is weak. When a contact crosses a score threshold - indicating high buying intent - your sales rep needs to know immediately, with full context.

Trigger: HubSpot Webhook -- contact.propertyChange (hubspotscore) Node: IF -- filter: new score >= 80 AND previous score < 80 Node: HubSpot -- get contact + associated deals + company Node: HTTP Request -- Clearbit enrich (company size, industry) Node: Code -- build alert payload with score breakdown Node: Slack -- post to #hot-leads with full context summary Node: HubSpot -- create task: "Call contact within 2 hours"

The Clearbit enrichment step turns a score change notification into a full sales brief. Your rep sees company size, industry, estimated ARR, which pages the contact visited, and which emails they opened. They're calling informed, not cold.

Workflow 4: Bidirectional Contact Sync (HubSpot and Other Tools)

If you use HubSpot alongside another tool - an accounting system, a project management platform, a customer success tool - keeping contacts in sync manually is error-prone and time-consuming. n8n handles bidirectional sync reliably.

Trigger: HubSpot Webhook -- contact.propertyChange (any field) Node: Code -- map HubSpot fields to target system fields Node: HTTP Request -- upsert contact in target system (Xero / Pipedrive / etc.) Node: IF -- check if target system returned a new record ID Node: HubSpot -- write back target system ID to custom HubSpot property [Reverse direction - target system to HubSpot] Trigger: Webhook from target system -- contact update event Node: HubSpot -- search contact by email Node: HubSpot -- update contact properties from source data

The key to reliable bidirectional sync is storing the external system's ID as a custom property in HubSpot. This prevents duplicate creation on subsequent updates and lets you look up records by a stable identifier rather than email (which changes).

Workflow 5: Automated Follow-Up Sequences Based on Behaviour

HubSpot Sequences are great for structured outreach, but they don't react to real-time signals. n8n can trigger personalised follow-ups the moment a meaningful event occurs.

Trigger: HubSpot Webhook -- contact.propertyChange (hs_email_last_open_date) Node: HubSpot -- get contact + email engagement history Node: Code -- check: opened email within last 30 min? Node: IF -- has active deal in pipeline? (yes / no branch) [Yes - has deal] Node: HubSpot -- get deal owner Node: Slack -- "Hot signal: {Name} just opened your proposal email" Node: HubSpot -- create task: "Call now while intent is high" [No - nurture contact] Node: HubSpot -- enroll in re-engagement sequence Node: Gmail -- send personalised check-in email 2 hours later

Timing matters enormously in sales. A contact opening your email is a live signal that they're thinking about you right now. A rep who calls within 5 minutes of an email open converts at 3x the rate of one who calls the next day. This workflow makes sub-5-minute response standard.

Workflow 6: Win/Loss Analysis Automation

Understanding why you win and lose deals is gold - but collecting that data consistently is painful. n8n automates the collection and aggregation.

Trigger: HubSpot Webhook -- deal.propertyChange (dealstage = Closed Won/Lost) Node: HubSpot -- get full deal record (value, owner, close date, contact) Node: IF -- Won or Lost? [Won] Node: Gmail -- send win survey to deal contact (Typeform link) Node: Google Sheets -- log to Win Analysis sheet Node: Slack -- post to #wins with deal details [Lost] Node: Gmail -- send brief loss survey to deal owner Node: OpenAI -- if closedreason property set, classify reason category Node: Google Sheets -- log to Loss Analysis sheet with reason category Node: HubSpot -- update deal with categorised loss reason [Both] Node: Code -- update running win rate calculation Node: Google Sheets -- update dashboard metrics tab

The OpenAI classification step is what makes this scalable. Instead of free-text loss reasons that are impossible to aggregate, every "decision went to competitor" or "budget cut" gets mapped to a consistent category. After 30 deals, you have clean data. After 100, you have strategy.

Workflow 7: HubSpot to Data Warehouse Sync

If you're doing any serious reporting or business intelligence, you need your CRM data in a warehouse - not just in HubSpot's dashboards. n8n can run nightly ETL jobs that push clean data to BigQuery, Postgres, or Airtable.

Trigger: Schedule -- daily at 02:00 UTC Node: HubSpot -- get all deals modified in last 24 hours Node: HubSpot -- get all contacts modified in last 24 hours Node: Code -- transform + flatten nested HubSpot objects Node: Code -- deduplicate against existing warehouse records Node: HTTP Request / Postgres -- upsert to target data warehouse Node: Slack -- "Nightly sync complete: 47 deals, 312 contacts updated"

The transformation step is critical. HubSpot's API returns deals with associations as nested arrays. Your warehouse wants flat rows. The Code node in n8n gives you full JavaScript to reshape data exactly as needed - no brittle CSV exports, no third-party ETL tools to pay for.

Workflow 8: Automated Reporting to Stakeholders

Executives and clients don't want to log into HubSpot. They want a clean summary in their inbox every Monday morning. n8n generates and sends it automatically.

Trigger: Schedule -- every Monday at 08:00 Node: HubSpot -- get deals closed last week (won + lost) Node: HubSpot -- get new contacts created last week Node: HubSpot -- get pipeline value by stage Node: Code -- calculate metrics: close rate, avg deal size, pipeline velocity Node: Code -- generate HTML email with metrics table Node: Gmail -- send to stakeholder list with personalised subject Node: Google Sheets -- append weekly metrics to history sheet

The history sheet is the underrated part. After 12 weeks, you have a clean trend line. After a year, you can spot seasonality, measure the impact of process changes, and forecast with real data rather than gut feel.

// Time savings we have measured across clients

Common Mistakes When Connecting HubSpot to n8n

These are the patterns we see trip up teams who are new to HubSpot automation:

Where to Start

If you're new to n8n and HubSpot integration, start with Workflow 2 - the deal stage change automation. It has the highest visible impact (your team sees the win celebrations in Slack, the instant Stripe creation) and gives you confidence that the integration works before you build anything more complex.

From there, Workflow 3 (hot lead alerts) typically delivers the fastest revenue impact. Sales speed matters more than most teams realise - and sub-60-second response time to high-intent signals is a genuine competitive advantage that most HubSpot setups can't achieve natively.

If you want this built and running rather than DIY'd, we do exactly this for agencies and SaaS teams. Get in touch and we'll scope it out.

📚 Further Reading