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

How to Send HubSpot Form Alerts to Slack with N8n

Forward HubSpot form submissions to specific Slack channels instantly when someone submits a demo request, contact form, or newsletter signup.

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

Teams needing custom form routing logic or handling 500+ monthly submissions where Zapier gets expensive.

Not ideal for

Simple setups wanting all forms in one channel - Zapier's plug-and-play approach is faster here.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person B2B SaaS company routes demo requests to #sales, pricing inquiries to #revenue, and support questions to #customer-success. Before automation, their ops person manually checked HubSpot 4-5 times daily and demo requests sat unnoticed for 3-4 hours during busy periods. Now sales reps respond within 15 minutes because notifications hit Slack instantly.

What Will This Cost?

Drag the slider to your expected monthly volume.

/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.

Admin access to HubSpot account with forms already created
Permission to install apps in your Slack workspace
N8n instance running (cloud or self-hosted) with webhook access
Active HubSpot forms receiving real submissions to test with

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Contact Emailcontact.email
Form Nameform.name
HubSpot Contact IDcontact.vid
3 optional fields▸ show
Contact Namecontact.firstname
Company Namecontact.company
Form Page URLform.pageUrl

Step-by-Step Setup

1

Workflows > New > Add Node > HubSpot

Create new N8n workflow

Start a fresh workflow to capture HubSpot form submissions. This will be the container for your entire automation chain.

  1. 1Click 'New Workflow' from your N8n dashboard
  2. 2Click the gray plus icon to add your first node
  3. 3Select 'HubSpot' from the app list
  4. 4Choose 'HubSpot Trigger' from the node options
What you should see: You should see a HubSpot trigger node in your workflow canvas with configuration options on the right panel.
2

Node Settings > Credentials > HubSpot OAuth2

Connect HubSpot account

Authenticate your HubSpot account so N8n can receive form submission webhooks. You'll need admin access to create the webhook.

  1. 1Click 'Create New' under Credentials
  2. 2Select 'HubSpot OAuth2 API' as the credential type
  3. 3Click 'Connect my account' and authorize N8n
  4. 4Copy the generated webhook URL from the trigger node
What you should see: Green 'Connected' status appears and you see a unique webhook URL starting with your N8n instance domain.
Common mistake — Don't use 'HubSpot API Key' auth - webhooks require OAuth2 scope permissions that API keys don't provide.
n8n settings
Connection
Choose a connection…Add
click Add
HubSpot
Log in to authorize
Authorize n8n
popup window
Connected
green checkmark
3

HubSpot Settings > Data Management > Workflows

Configure HubSpot webhook

Set up HubSpot to send form submission data to your N8n webhook. This creates the trigger that starts your automation.

  1. 1In HubSpot, go to Settings > Integrations > Private Apps
  2. 2Create a new private app with 'forms' read scope
  3. 3Navigate to Settings > Data Management > Properties
  4. 4Go to Workflows > Create workflow > Form submission trigger
  5. 5Paste your N8n webhook URL as the endpoint
What you should see: HubSpot shows 'Webhook active' status and you can see test events in the webhook settings.
Common mistake — HubSpot form webhooks fire immediately on submit, before any validation - you'll get spam submissions too.
4

Workflow > HubSpot Trigger > Listen for Test Event

Test webhook reception

Verify N8n receives form data correctly by submitting a test form. This confirms your webhook connection works.

  1. 1Submit a test entry on one of your HubSpot forms
  2. 2Return to N8n and click 'Listen for Test Event' on the trigger
  3. 3Check that form data appears in the node output panel
  4. 4Verify fields like email, form name, and submission time are present
What you should see: The trigger node shows sample JSON data with form fields, contact info, and HubSpot IDs in the output panel.
Common mistake — Copy the webhook URL carefully — it expires if you regenerate it, and any scenarios using the old URL will silently stop working.
n8n
▶ Run once
executed
HubSpot
Slack
Slack
🔔 notification
received
5

Add Node > Logic > IF

Add form filter logic

Create conditional logic to route different forms to different Slack channels. Without this, every form goes everywhere.

  1. 1Add an 'IF' node after the HubSpot trigger
  2. 2Set condition to 'String' > 'Equal' comparison
  3. 3Use expression {{$node['HubSpot Trigger'].json['form']['name']}} for the field
  4. 4Enter your target form name like 'Demo Request Form' as the value
What you should see: The IF node shows True/False output branches, with your form name condition visible in the node title.
Common mistake — Form names are case-sensitive and include spaces - copy exact text from HubSpot form settings, don't guess.
HubSpot
HU
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Slack
SL
notified
6

Add Node > Slack > Send Message

Configure Slack connection

Connect your Slack workspace so N8n can post messages to channels. You'll need permission to install apps in Slack.

  1. 1Add a Slack node to the 'True' branch of your IF statement
  2. 2Select 'Send Message' as the Slack operation
  3. 3Click 'Create New' under Credentials
  4. 4Choose 'Slack OAuth2 API' and authorize the connection
What you should see: Slack node shows green connected status and dropdown menus populate with your workspace channels.
7

Slack Node > Parameters > Channel

Set target Slack channel

Choose which channel receives form notifications. Different form types should route to different channels for organization.

  1. 1Click the Channel dropdown in the Slack node
  2. 2Select your target channel like '#sales-leads' or '#marketing'
  3. 3Alternatively, use expression mode to set channel dynamically
  4. 4Test that the channel appears correctly in the node preview
What you should see: Channel name displays in the Slack node configuration with a # prefix for public channels or @ for DMs.
Common mistake — Private channels won't appear in the dropdown unless your Slack app is already a member of that channel.
8

Slack Node > Parameters > Message

Format notification message

Design the Slack message content using form data from HubSpot. Include key details like contact info and form type.

  1. 1Click in the Message text field and enable expression mode
  2. 2Build message template with form data: 'New {{$node['HubSpot Trigger'].json['form']['name']}} submission'
  3. 3Add contact details: 'Email: {{$node['HubSpot Trigger'].json['contact']['email']}}'
  4. 4Include submission link: 'View in HubSpot: {{$node['HubSpot Trigger'].json['contact']['profile-url']}}'
What you should see: Message preview shows your template with sample data filled in, including clickable HubSpot links.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
9

Node Actions > Copy > Paste

Add multiple form branches

Create separate routing for different form types. Each form type should have its own IF condition and Slack destination.

  1. 1Copy your existing IF + Slack node chain
  2. 2Change the second IF condition to match a different form name
  3. 3Update the Slack channel to the appropriate destination
  4. 4Connect both IF nodes to the same HubSpot trigger
What you should see: Your workflow shows multiple parallel branches, each handling a different form type with its own Slack channel.
Common mistake — Each IF branch needs its own Slack node - you can't reuse the same node for multiple channels.
10

Workflow > Activate Toggle

Test end-to-end workflow

Submit actual forms to verify each routing path works correctly. Test both positive matches and unmatched forms.

  1. 1Activate the workflow using the toggle in the top right
  2. 2Submit test entries on each of your target forms
  3. 3Check that messages appear in the correct Slack channels
  4. 4Verify message formatting and HubSpot links work properly
What you should see: Slack notifications appear in correct channels within 30 seconds of form submission, with properly formatted contact details.
Common mistake — Forms not matching any IF condition will be ignored - add a catch-all branch if you want notifications for all forms.

Drop this into an n8n Code node.

Copy this template{{$node['HubSpot Trigger'].json['contact']['email'] || 'No email'}} || {{$node['HubSpot Trigger'].json['contact']['phone'] || 'No phone'}}
▸ Show code
{{$node['HubSpot Trigger'].json['contact']['email'] || 'No email'}} || {{$node['HubSpot Trigger'].json['contact']['phone'] || 'No phone'}}

... expand to see full code

{{$node['HubSpot Trigger'].json['contact']['email'] || 'No email'}} || {{$node['HubSpot Trigger'].json['contact']['phone'] || 'No phone'}}

Scaling Beyond 500+ form submissions/month+ Records

If your volume exceeds 500+ form submissions/month records, apply these adjustments.

1

Add execution delays

Insert 200ms delay nodes between Slack posts to avoid rate limits. HubSpot allows 100 API calls per 10 seconds - spacing prevents batch submission overload.

2

Batch similar notifications

Use N8n's scheduler to collect submissions hourly and send digest messages instead of individual alerts. Reduces execution count by 80% and prevents Slack channel noise.

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 need custom filtering logic or handle 500+ form submissions monthly. The code nodes let you build complex routing rules like geographic targeting or lead scoring that Zapier can't match. Skip N8n if you just want basic 'all forms to one channel' setup - Zapier's HubSpot trigger is more reliable for simple use cases.

Cost

This workflow burns through 2-3 N8n executions per form submission (trigger + IF logic + Slack post). At 200 forms/month, that's 600 executions total. N8n's starter plan includes 5,000 executions for $20/month, so you're well covered. Zapier charges $30/month for the same volume, and Make costs $25/month but limits you to 10,000 operations.

Tradeoffs

Zapier wins on setup speed - their HubSpot integration auto-maps form fields without JSON expressions. Make handles high-volume better with built-in rate limiting and error queues that N8n lacks. But N8n's flexibility crushes both platforms when you need conditional logic. Want different message formats per form type? Easy with code nodes. Geographic routing based on IP data? Build it yourself instead of hoping for a pre-built filter.

HubSpot's webhook delivery isn't guaranteed - they retry failed webhooks only 3 times before giving up permanently. If your N8n instance goes down for maintenance, you'll miss submissions during that window. Form spam will trigger your automation too since HubSpot fires webhooks before validation. The contact profile URLs in webhook data expire after 30 days, so don't rely on them for long-term tracking.

Ideas for what to build next

  • Add lead scoring notificationsCreate a follow-up automation that posts to Slack when HubSpot calculates a high lead score for form submitters.
  • Build form abandonment alertsSet up tracking for users who start but don't complete forms, then notify sales teams about warm leads to follow up with.
  • Create submission loggingRoute all form data to Google Sheets or Airtable for backup tracking and analytics that persist beyond HubSpot's data retention.

Related guides

Was this guide helpful?
HubSpot + Slack overviewn8n profile →