Intermediate~20 min setupCRM & CommunicationVerified April 2026
HubSpot logo
Slack logo

How to Send New HubSpot Contacts to Slack with N8n

Send instant Slack notifications to #sales with contact details when new leads are created in HubSpot.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

HubSpot for Slack exists as a native integration, but it doesn't support conditional routing or custom message formatting. This guide uses an automation platform for full control. View native option →

Best for

Sales teams that need instant lead notifications and want full control over message formatting

Not ideal for

Teams wanting plug-and-play setup without any technical configuration

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person B2B SaaS startup uses this to notify #sales immediately when website visitors submit contact forms that sync to HubSpot. Before automation, reps checked the CRM every 30 minutes and often missed hot leads from pricing page inquiries. Now they follow up within 5 minutes of form submission, increasing connect rates by 40%.

What Will This Cost?

Drag the slider to your expected monthly volume.

1 op per new contactA busy team with 500 leads/month uses ~500 ops on this workflow.
/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

HubSpot private app with contacts and webhooks scopes
Slack workspace admin access to install N8n app
N8n cloud account or self-hosted instance
Sales channel (#sales) created in Slack

Optional

HubSpot contact properties configured for lead source tracking

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
First Namefirstname
Last Namelastname
Email Addressemail
5 optional fields▸ show
Company Namecompany
Lead Statushs_lead_status
Lead Sourcehs_analytics_source
Phone Numberphone
Websitewebsite

Step-by-Step Setup

1

Dashboard > New Workflow

Create new workflow

Set up a new N8n workflow to handle HubSpot contact notifications. This establishes the foundation for your lead notification system.

  1. 1Click 'New Workflow' in the N8n dashboard
  2. 2Name the workflow 'HubSpot Lead Notifications'
  3. 3Save the empty workflow
What you should see: Empty workflow canvas with the title 'HubSpot Lead Notifications' at the top
2

Canvas > + > HubSpot Trigger

Add HubSpot trigger node

Configure the HubSpot webhook trigger to fire when new contacts are created. This replaces slow polling with instant notifications.

  1. 1Click the '+' button on the canvas
  2. 2Search for 'HubSpot Trigger' in the node list
  3. 3Select 'HubSpot Trigger' from the results
  4. 4Choose 'Contact Created' as the event type
What you should see: HubSpot Trigger node appears with 'Contact Created' selected in the event dropdown
Common mistake — Don't select 'Contact Updated' - it fires on every property change and will spam your team
n8n
+
click +
search apps
HubSpot
HU
HubSpot
Add HubSpot trigger node
HubSpot
HU
module added
3

HubSpot Node > Credentials > New

Connect HubSpot credentials

Link your HubSpot account using a private app token. This gives N8n permission to receive webhook data from your CRM.

  1. 1Click 'Create New Credential' in the HubSpot node
  2. 2Select 'HubSpot Developer API'
  3. 3Paste your HubSpot private app token
  4. 4Click 'Test' to verify the connection
What you should see: Green checkmark appears with 'Connection Successful' message
Common mistake — The token needs 'contacts' and 'webhooks' scopes - check your HubSpot private app settings if connection fails
4

HubSpot Trigger > Listen for Test Event

Set up webhook URL

Generate the webhook URL that HubSpot will call when contacts are created. Copy this URL to configure in HubSpot's webhook settings.

  1. 1Click 'Listen for Test Event' in the HubSpot trigger
  2. 2Copy the webhook URL that appears
  3. 3Switch to your HubSpot account in a new tab
  4. 4Navigate to Settings > Integrations > Private Apps
What you should see: Webhook URL displays in N8n (format: https://your-instance.n8n.cloud/webhook/...)
Common mistake — Copy the webhook URL carefully — it expires if you regenerate it, and any scenarios using the old URL will silently stop working.
5

HubSpot > Settings > Private Apps > Your App > Webhooks

Configure HubSpot webhook

Set up HubSpot to send contact creation events to your N8n webhook. This completes the trigger connection between systems.

  1. 1In HubSpot, click your private app name
  2. 2Go to the 'Webhooks' tab
  3. 3Click 'Create Subscription'
  4. 4Paste the N8n webhook URL
  5. 5Select 'contact.creation' as the event type
  6. 6Click 'Create Subscription'
What you should see: HubSpot shows 'Active' status next to your webhook subscription
Common mistake — Use 'contact.creation' not 'contact.propertyChange' - the latter triggers on every field update
6

N8n > HubSpot Trigger > Test Event

Test the trigger

Verify the webhook connection by creating a test contact in HubSpot. This ensures data flows correctly to N8n.

  1. 1Create a new contact in HubSpot with test data
  2. 2Return to N8n and check if data appears
  3. 3Click 'Use Test Event' if the contact data shows up
  4. 4Expand the data to see available fields
What you should see: Contact data appears in N8n showing properties like firstname, lastname, email, company
Common mistake — If no data appears after 30 seconds, check your webhook URL and HubSpot subscription status
n8n
▶ Run once
executed
HubSpot
Slack
Slack
🔔 notification
received
7

Canvas > + > Slack

Add Slack node

Insert a Slack node to send messages to your sales channel. This transforms the HubSpot data into a formatted notification.

  1. 1Click the '+' button after the HubSpot node
  2. 2Search for 'Slack' in the node menu
  3. 3Select 'Slack' from the results
  4. 4Choose 'Send Message' as the operation
What you should see: Slack node appears connected to HubSpot trigger with 'Send Message' selected
8

Slack Node > Credentials > OAuth2

Connect Slack credentials

Authenticate N8n with your Slack workspace using OAuth. This grants permission to post messages to your channels.

  1. 1Click 'Create New Credential' in the Slack node
  2. 2Select 'Slack OAuth2 API'
  3. 3Click 'Connect my account'
  4. 4Authorize N8n in the Slack popup window
What you should see: Slack credential shows 'Connected' status with your workspace name
Common mistake — You need 'chat:write' permissions - if authorization fails, check your Slack app settings
9

Slack Node > Channel > #sales

Configure message channel

Select your sales channel and set up the notification format. This determines where alerts appear and what information reps see.

  1. 1Select '#sales' from the Channel dropdown
  2. 2Set message type to 'Text'
  3. 3Click in the Text field to open the expression editor
What you should see: Channel field shows '#sales' and text editor opens with expression options
Common mistake — Make sure the N8n app is added to the #sales channel - private channels require explicit invitation
10

Slack Node > Text Field > Expression Editor

Build message template

Create a formatted message with contact details that sales reps need. Use HubSpot field data to populate name, email, company, and lead source.

  1. 1Enter this message template in the text field:
  2. 2🚨 New Lead Alert! Name: {{$node['HubSpot Trigger'].json['firstname']}} {{$node['HubSpot Trigger'].json['lastname']}} Email: {{$node['HubSpot Trigger'].json['email']}} Company: {{$node['HubSpot Trigger'].json['company']}} Lead Source: {{$node['HubSpot Trigger'].json['hs_lead_status']}}
  3. 3Click 'Execute Node' to test the formatting
What you should see: Test message appears in Slack with actual contact data populated in the template
Common mistake — Use exact field names from the HubSpot test data - typos will show blank values in Slack
message template
🔔 New Update: {{firstname}} {{lastname}}
email: {{email}}
company: {{company}}
#sales
🔔 New Update: Jane Smith
Company: Acme Corp
11

Workflow > Save > Activate

Test end-to-end workflow

Verify the complete automation by creating another test contact in HubSpot. This confirms the entire pipeline works in production.

  1. 1Save the N8n workflow
  2. 2Activate the workflow using the toggle switch
  3. 3Create a new contact in HubSpot with different test data
  4. 4Check #sales in Slack for the notification message
What you should see: Slack message appears in #sales within 10-15 seconds with the new contact details
Common mistake — If the message doesn't appear, check the workflow execution log for error details
12

Slack Node > Settings > Error Handling

Set up error handling

Configure failure notifications and retry logic to prevent missed leads. This ensures reliability when Slack or HubSpot have temporary issues.

  1. 1Click 'Settings' on the Slack node
  2. 2Set 'Continue on Fail' to false
  3. 3Add error workflow URL in workflow settings
  4. 4Enable execution retention for 7 days
What you should see: Error handling shows 'Configured' status with retry settings active
Common mistake — Don't set 'Continue on Fail' to true - you'll lose notifications silently if Slack is down

Drop this into an n8n Code node.

JavaScript — Code Node{{$json.firstname ? $json.firstname + ' ' : ''}}{{$json.lastname || 'Unknown'}} - Use this expression for name field to handle contacts with missing first names gracefully
▸ Show code
{{$json.firstname ? $json.firstname + ' ' : ''}}{{$json.lastname || 'Unknown'}} - Use this expression for name field to handle contacts with missing first names gracefully

... expand to see full code

{{$json.firstname ? $json.firstname + ' ' : ''}}{{$json.lastname || 'Unknown'}} - Use this expression for name field to handle contacts with missing first names gracefully

Scaling Beyond 500+ new contacts/day+ Records

If your volume exceeds 500+ new contacts/day records, apply these adjustments.

1

Add rate limiting node

Insert a delay node before Slack to avoid hitting their 1 message per second limit. Set to 1.1 second intervals to prevent API errors during lead spikes.

2

Use Slack threading

Modify the workflow to reply in threads instead of individual messages. This prevents channel flooding during high-volume periods like after webinars or product launches.

3

Implement duplicate detection

Add a filter node to check against recent notifications and prevent duplicate alerts. HubSpot sometimes sends duplicate webhooks during system maintenance windows.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use N8n for this if you want real-time notifications without paying Zapier's premium webhook fees. N8n handles unlimited webhook triggers on the free self-hosted version, and the cloud version includes them at $20/month. You also get full control over message formatting and error handling. Pick Zapier instead if your team needs a 5-minute setup and doesn't mind polling delays - HubSpot's free tier only allows 15-minute intervals.

Cost

This workflow uses 1 execution per new contact. At 200 new leads per month, that's 200 executions total. N8n cloud's Starter plan ($20/month) includes 2,500 executions, so you're well covered. Zapier would cost $30/month for webhook triggers at this volume. Make charges $9/month for 1,000 operations but limits webhook response time. N8n saves you $10/month versus Zapier while giving you better webhook reliability.

Tradeoffs

Zapier wins on setup speed - their HubSpot integration auto-maps common fields and has pre-built Slack templates. Make offers better visual debugging with step-by-step execution logs you can replay. But N8n gives you code nodes for custom formatting, unlimited webhook retention, and no artificial delays between steps. For lead notifications where speed matters, N8n's instant webhook processing beats Zapier's 2-5 minute polling intervals.

HubSpot's webhook subscriptions randomly deactivate if your endpoint returns errors 3 times in a row. One Slack outage can break your entire notification system until you manually resubscribe. N8n's execution logs don't clearly show webhook delivery failures - you'll see the Slack node error but not the HubSpot webhook status. Also, HubSpot contact webhooks fire before custom property calculations finish, so lead scoring fields might be empty in your first notification.

Ideas for what to build next

  • Add deal stage notificationsExtend the workflow to notify when leads become opportunities or move through your sales pipeline stages.
  • Create contact scoring alertsSet up a separate notification for high-value leads based on HubSpot lead scoring thresholds above 75 points.
  • Build follow-up remindersAdd a delay node and second Slack message to remind reps if no HubSpot activity occurs within 2 hours of the initial notification.

Related guides

Was this guide helpful?
HubSpot + Slack overviewn8n profile →