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

How to Send HubSpot Meeting Notifications to Slack with N8n

Automatically send Slack DMs to assigned reps when prospects book meetings in HubSpot, including meeting details and pre-meeting answers.

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 that want instant meeting notifications and have technical resources to maintain N8n workflows.

Not ideal for

Non-technical teams that need a quick setup and don't want to manage webhook configurations.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person B2B software company uses this to notify sales reps immediately when prospects book demos through HubSpot scheduling links. Before automation, reps checked their calendars manually and often missed prep time for same-day meetings. Now they get Slack DMs within 15 seconds of booking with prospect context and pre-meeting questions, giving them time to research and prepare.

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.

HubSpot Professional or Enterprise account with webhook access
N8n instance running (cloud or self-hosted)
Slack workspace admin permissions to create app integrations
HubSpot API key with meetings and owners read permissions
Matching email addresses between HubSpot owners and Slack users

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Meeting Start TimestartDateTime
Meeting Titletitle
HubSpot Owner IDhubspot_owner_id
Prospect Emailattendees[0].email
3 optional fields▸ show
Meeting Durationduration
Meeting Linkmeeting_link
Custom Questionsproperties.custom_field_*

Step-by-Step Setup

1

Dashboard > + > New Workflow

Create New Workflow

Start a fresh N8n workflow specifically for HubSpot meeting notifications. This workflow will trigger whenever a meeting gets scheduled and send details to the assigned rep.

  1. 1Click the + button in your N8n dashboard
  2. 2Select 'Create new workflow'
  3. 3Name it 'HubSpot Meeting Notifications'
What you should see: You should see a blank workflow canvas with a single gray trigger node.
2

Trigger Node > Webhook

Add HubSpot Webhook Trigger

Set up a webhook trigger to catch meeting booking events from HubSpot in real-time. Webhooks fire instantly when meetings are booked, unlike polling triggers that check every few minutes.

  1. 1Click the trigger node
  2. 2Search for and select 'Webhook'
  3. 3Choose 'GET' as the HTTP method
  4. 4Copy the webhook URL that appears
What you should see: You'll see a webhook URL starting with your N8n instance domain plus a random path.
Common mistake — Don't use POST method here — HubSpot sends meeting data via GET parameters for this webhook type.
n8n
+
click +
search apps
HubSpot
HU
HubSpot
Add HubSpot Webhook Trigger
HubSpot
HU
module added
3

HubSpot Settings > Integrations > Webhooks

Configure HubSpot Webhook

Tell HubSpot to send meeting booking events to your N8n webhook. This requires admin access to your HubSpot account settings.

  1. 1Log into HubSpot and go to Settings > Integrations > Webhooks
  2. 2Click 'Create subscription'
  3. 3Paste your N8n webhook URL in the Target URL field
  4. 4Select 'Meetings' as the object type
  5. 5Check 'meeting.created' event type
What you should see: HubSpot shows a green 'Active' status next to your webhook subscription.
Common mistake — Select only 'meeting.created' — choosing 'meeting.updated' will fire on every meeting edit and spam your workflow.
4

N8n Workflow > Webhook Node > Test

Test Webhook Reception

Verify that N8n receives HubSpot meeting data correctly. Book a test meeting to see the actual data structure you'll work with.

  1. 1Go back to N8n and click 'Listen for calls' on the webhook node
  2. 2Book a test meeting in HubSpot
  3. 3Return to N8n and click 'Stop listening'
What you should see: The webhook node should show a green checkmark with sample meeting data including objectId, meetingId, and timestamp.
Common mistake — If no data appears after 30 seconds, check your HubSpot webhook status — it may show error details there.
n8n
▶ Run once
executed
HubSpot
Slack
Slack
🔔 notification
received
5

Workflow > + > HubSpot > Get > Meeting

Add HubSpot Node for Meeting Details

Fetch complete meeting information from HubSpot's API. The webhook only sends basic IDs — you need a separate API call to get meeting time, prospect name, and custom questions.

  1. 1Click the + button after your webhook node
  2. 2Search for and add 'HubSpot' node
  3. 3Select 'Get' operation
  4. 4Choose 'Meeting' as the resource
  5. 5Map 'objectId' from webhook data to 'Meeting ID' field
What you should see: You should see meeting details like startDateTime, title, and attendees in the node output.
Common mistake — Use 'objectId' not 'meetingId' from the webhook — they're different values and meetingId won't work here.
6

Workflow > + > Set

Extract Assigned Rep

Pull the HubSpot owner (assigned rep) from the meeting data to determine who gets the Slack notification. The owner ID maps to a HubSpot user.

  1. 1Add a 'Set' node after the HubSpot node
  2. 2Create a new field called 'assignedRep'
  3. 3Map it to '{{ $node["HubSpot"].json["hubspot_owner_id"] }}'
  4. 4Add another field 'prospectEmail' mapped to attendee email
What you should see: The Set node output shows assignedRep as a HubSpot user ID number and prospectEmail as the prospect's email address.
7

Workflow > + > HubSpot > Get > Owner

Get HubSpot Owner Details

Convert the HubSpot owner ID into actual user information including email address. You'll need this email to match with Slack users later.

  1. 1Add another HubSpot node
  2. 2Select 'Get' operation and 'Owner' resource
  3. 3Map the assignedRep field to 'Owner ID'
  4. 4Test the node to see owner details
What you should see: Owner node shows firstName, lastName, email, and other details for the assigned rep.
Common mistake — Some HubSpot accounts have owners without email addresses — add error handling for this case later.
8

Workflow > + > Slack > Get User by Email

Find Slack User

Match the HubSpot owner's email to their Slack user ID. Slack DMs require user IDs, not email addresses.

  1. 1Add a Slack node after the owner lookup
  2. 2Choose 'Get User by Email' operation
  3. 3Map the owner's email to the email field
  4. 4Test to confirm it returns a Slack user object
What you should see: Slack node returns user data including the Slack user ID needed for DM sending.
Common mistake — This fails if the HubSpot owner email doesn't match their Slack email exactly — case sensitivity matters.
9

Workflow > + > Set > Expression Editor

Format Meeting Message

Build the Slack DM content with meeting details, prospect info, and any pre-meeting questions. Use N8n's expression editor to combine data from multiple nodes.

  1. 1Add another Set node to build the message
  2. 2Create a field called 'slackMessage'
  3. 3Use this template: 'New meeting booked with {{ $node["HubSpot"].json["title"] }} on {{ $node["HubSpot"].json["startDateTime"] }}'
  4. 4Add prospect email and any custom meeting properties
What you should see: The message field shows formatted text with actual meeting data filled in.
Common mistake — HubSpot dates come in ISO format — you may want to format them using N8n's date functions for readability.
10

Workflow > + > Slack > Post Message

Send Slack DM

Deliver the formatted notification as a direct message to the assigned rep. This creates a private notification that won't clutter team channels.

  1. 1Add a final Slack node
  2. 2Select 'Post Message' operation
  3. 3Set channel to the Slack user ID from step 8
  4. 4Map your formatted message to the text field
What you should see: The Slack node shows a successful message post with a timestamp and message ID.
11

Node Settings > On Error > Continue

Add Error Handling

Set up error catching for common failure points like missing owners or Slack users not found. This prevents the workflow from breaking silently.

  1. 1Click the settings gear on each node
  2. 2Set 'On Error' to 'Continue' for non-critical nodes
  3. 3Add an IF node after Slack user lookup to check if user exists
  4. 4Add a fallback notification to a general channel if DM fails
What you should see: Nodes show 'Continue on Fail' in their settings and you have conditional logic for missing users.
Common mistake — Don't set webhook node to 'Continue on Fail' — you want to know if the trigger itself breaks.
12

Workflow > Save & Activate

Test Full Workflow

Run an end-to-end test by booking another meeting and verifying the complete notification flow. Check that all data appears correctly in Slack.

  1. 1Save the workflow and activate it
  2. 2Book a test meeting assigned to a known rep
  3. 3Check that the rep receives a Slack DM
  4. 4Verify all meeting details appear correctly in the message
What you should see: The assigned rep gets a Slack DM within 10-15 seconds with properly formatted meeting information.
Common mistake — Test with a real meeting, not the webhook test data — some fields may be missing or different in test mode.

Drop this into an n8n Code node.

Copy this template{{ DateTime.fromISO($node['HubSpot'].json['startDateTime']).toFormat('MMM d, h:mm a') }}
▸ Show code
{{ DateTime.fromISO($node['HubSpot'].json['startDateTime']).toFormat('MMM d, h:mm a') }}

... expand to see full code

{{ DateTime.fromISO($node['HubSpot'].json['startDateTime']).toFormat('MMM d, h:mm a') }}

Scaling Beyond 200+ meetings/day+ Records

If your volume exceeds 200+ meetings/day records, apply these adjustments.

1

Batch Meeting Lookups

Use N8n's batch processing to fetch multiple meetings per API call instead of individual requests. HubSpot allows up to 100 meeting IDs per batch request, reducing API usage by 99%.

2

Queue Processing

Add a Redis or database queue between the webhook and Slack notifications. This prevents API rate limits and lets you handle bursts of simultaneous bookings without failures.

3

Cache Owner Data

Store HubSpot owner to Slack user mappings in N8n's global variables instead of looking up each time. Owner assignments change rarely but get looked up for every meeting notification.

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 the per-execution costs of cloud platforms. N8n's webhook triggers fire instantly when meetings are booked, and you can run unlimited executions on a self-hosted instance. The code nodes let you format meeting times and handle HubSpot's quirky API responses exactly how you want. Skip N8n if you need this running in 10 minutes — the HubSpot webhook setup takes longer than a simple Zapier connection.

Cost

This workflow uses about 6 operations per meeting booking: webhook trigger, HubSpot meeting lookup, owner lookup, Slack user lookup, message formatting, and Slack message send. At 50 meetings per month, that's 300 executions total. N8n cloud charges nothing for the first 5,000 executions, so you're free until you hit 800+ meetings monthly. Zapier would cost $20/month for the same volume since you need multiple steps. Make.com handles it free up to 1,000 operations.

Tradeoffs

Zapier wins on setup speed — their HubSpot integration includes a 'New Meeting Booked' trigger that works without webhook configuration. Make has better built-in date formatting functions, so you don't need custom expressions to make HubSpot timestamps readable. But N8n gives you complete control over the message format and error handling. You can add complex logic like different message templates for different meeting types or fallback notifications when Slack users don't exist.

HubSpot's webhook sends duplicate events about 20% of the time, especially for recurring meetings. You'll need to track processed meeting IDs to avoid double notifications. The API sometimes returns meetings without assigned owners if they were booked through certain calendar integrations — your workflow needs to handle empty owner fields gracefully. HubSpot's meeting properties API paginates custom questions, so if you have more than 100 pre-meeting form fields, you'll need N8n's loop nodes to fetch them all.

Ideas for what to build next

  • Add Meeting RemindersCreate a follow-up workflow that sends Slack reminders 15 minutes before each meeting using N8n's schedule trigger and the meeting start time.
  • Log to Google SheetsTrack all meeting notifications in a spreadsheet for sales reporting. Include prospect company, rep name, meeting time, and whether they showed up.
  • Send Prep ResearchAutomatically look up the prospect's company in your CRM or database and include relevant context in the Slack notification to help reps prepare better.

Related guides

Was this guide helpful?
HubSpot + Slack overviewn8n profile →