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

How to Send HubSpot Lead Notifications to Slack with Pipedream

Automatically sends a Slack message to #sales when a new contact is created in HubSpot with their name, email, company, and lead source.

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 notifications without missing leads during busy periods or when reps aren't actively monitoring HubSpot.

Not ideal for

Teams that want digest-style notifications or need two-way sync between HubSpot and Slack channels.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person B2B software sales team gets 40-60 new leads per week from website forms, LinkedIn ads, and trade shows. Before automation, reps checked HubSpot every 30-45 minutes and response time averaged 2.3 hours. Now they see leads in Slack within 15 seconds and average response time dropped to 12 minutes.

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 Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 admin access to create workflows and configure webhooks
Slack workspace admin permissions or pre-approved app installation rights
Access to the #sales channel or ability to create new channels for notifications
HubSpot contacts with populated lead source and company fields for meaningful notifications

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Contact Name
Email Address
6 optional fields▸ show
Company Name
Lead Source
Phone Number
Job Title
Industry
HubSpot Contact URL

Step-by-Step Setup

1

Workflows > + New

Create new workflow

Go to pipedream.com and click Workflows in the left sidebar. Click the green + New button in the top right corner. You'll see a blank workflow canvas with 'Select a trigger' at the top. This is where we'll connect HubSpot as the data source.

  1. 1Click Workflows in the left navigation
  2. 2Click the green + New button
  3. 3You'll see the workflow builder with trigger selection
What you should see: You should see a blank workflow canvas with 'Select a trigger' prominently displayed at the top.
2

Trigger > HubSpot > New Contact

Add HubSpot webhook trigger

Click 'Select a trigger' and search for 'HubSpot' in the apps list. Select the HubSpot app, then choose 'New Contact' from the trigger options. This creates an instant webhook that fires every time a contact is added to your HubSpot CRM. Pipedream will generate a unique webhook URL for this trigger.

  1. 1Click 'Select a trigger'
  2. 2Search for 'HubSpot' and select it
  3. 3Choose 'New Contact' from the trigger list
  4. 4Click Continue to proceed
What you should see: You should see the HubSpot trigger configured with a webhook URL displayed in the trigger settings.
Common mistake — The webhook URL won't receive data until you configure it in HubSpot's workflow settings in the next step.
Pipedream
+
click +
search apps
HubSpot
HU
HubSpot
Add HubSpot webhook trigger
HubSpot
HU
module added
3

HubSpot Trigger > Connect Account

Connect HubSpot account

Click 'Connect Account' under the HubSpot trigger. A popup will open asking you to authorize Pipedream to access your HubSpot data. Log in with your HubSpot credentials and grant permissions for contacts, companies, and properties. Make sure you have admin access in HubSpot to complete this step.

  1. 1Click 'Connect Account' in the trigger configuration
  2. 2Log in to HubSpot in the popup window
  3. 3Click 'Grant access' for the requested permissions
  4. 4Return to Pipedream after successful authorization
What you should see: You should see a green 'Connected' status with your HubSpot account email displayed next to it.
Common mistake — If you don't have admin permissions in HubSpot, you'll get a 'permissions denied' error and need to ask your HubSpot admin to complete this step.
Pipedream settings
Connection
Choose a connection…Add
click Add
HubSpot
Log in to authorize
Authorize Pipedream
popup window
Connected
green checkmark
4

HubSpot Settings > Automation > Workflows

Configure HubSpot webhook in CRM

Open HubSpot in a new tab and navigate to Settings > Integrations > Private Apps or Workflows. Create a new workflow that triggers on 'Contact creation' and add a webhook action. Paste the webhook URL from Pipedream into the webhook destination field. Set the method to POST and include contact properties in the payload.

  1. 1Go to HubSpot Settings > Automation > Workflows
  2. 2Click 'Create workflow' and select 'Contact-based'
  3. 3Set trigger to 'Contact is created'
  4. 4Add action 'Send webhook' and paste Pipedream URL
What you should see: HubSpot should show the webhook action as 'Active' and display the Pipedream URL in the webhook configuration.
Common mistake — Make sure to turn ON the HubSpot workflow after saving - new workflows are created in draft mode by default.
5

Pipedream Trigger > Test Events

Test the webhook connection

Go back to Pipedream and create a test contact in HubSpot to verify the webhook works. Add a contact with name, email, and company fields filled out. Within 10-15 seconds, you should see the contact data appear in the Pipedream trigger. Click 'Use this event' to confirm the data structure looks correct.

  1. 1Create a new contact in HubSpot with test data
  2. 2Wait 10-15 seconds for the webhook to fire
  3. 3Check the Pipedream trigger for incoming data
  4. 4Click 'Use this event' to proceed
What you should see: You should see JSON data from HubSpot displaying the contact's properties including firstname, lastname, email, and company.
Common mistake — Copy the webhook URL carefully — it expires if you regenerate it, and any scenarios using the old URL will silently stop working.
Pipedream
▶ Deploy & test
executed
HubSpot
Slack
Slack
🔔 notification
received
6

Add Step > Slack > Send Message to Channel

Add Slack step

Click the + button below the HubSpot trigger to add a new step. Search for 'Slack' in the apps list and select it. Choose 'Send message to channel' as the action type. This will let us post formatted messages to any Slack channel when new leads come in.

  1. 1Click the + button under the trigger
  2. 2Search for 'Slack' and select the app
  3. 3Choose 'Send message to channel' action
  4. 4Click Continue to configure
What you should see: You should see the Slack step added to your workflow with configuration options for channel, message text, and formatting.
Common mistake — Don't choose 'Send direct message' unless you want notifications to go to individual users instead of a channel.
7

Slack Step > Connect Account

Connect Slack workspace

Click 'Connect Account' in the Slack step configuration. Pipedream will open Slack's OAuth flow where you'll authorize access to your workspace. Make sure you're logged into the correct Slack workspace and have permission to add apps. Grant access to channels and messaging permissions.

  1. 1Click 'Connect Account' in the Slack configuration
  2. 2Select your Slack workspace from the list
  3. 3Click 'Allow' to grant Pipedream permissions
  4. 4Confirm the connection back in Pipedream
What you should see: You should see your Slack workspace name displayed with a green 'Connected' status in the step configuration.
Common mistake — If you don't see your workspace, you may need to be a Slack admin or ask an admin to approve the Pipedream app installation.
8

Slack Step > Message Configuration

Configure message content

Set the channel to #sales (or your preferred channel). In the message text field, use HubSpot data from the trigger to build a formatted notification. Include contact name, email, company, and lead source using double curly braces to reference the webhook data fields. Add some basic formatting to make it readable.

  1. 1Select #sales from the channel dropdown
  2. 2Click in the message text field
  3. 3Use {{ }} syntax to insert HubSpot contact fields
  4. 4Add formatting and labels for readability
What you should see: Your message template should show HubSpot field references like {{steps.trigger.event.firstname}} surrounded by explanatory text.
Common mistake — Field names are case-sensitive and must match exactly what HubSpot sends - check your test event data for the exact property names.
9

Add Step > Code > Node.js

Add data transformation step

Click + to add a Node.js code step between HubSpot and Slack. This lets you clean up the data before sending it to Slack. You can format the company name, handle missing fields with fallbacks, and structure the message exactly how you want it to appear in your sales channel.

  1. 1Click + between the HubSpot and Slack steps
  2. 2Select 'Code' then 'Run Node.js code'
  3. 3Write code to format the contact data
  4. 4Return the formatted data using $.send()
What you should see: You should see a code editor with access to the HubSpot trigger data in the steps.trigger.event object.
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.

Add this Node.js code step between HubSpot and Slack to format contact data, handle missing fields, and create direct links to contact records. Paste this in the code editor step.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const contact = steps.trigger.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const contact = steps.trigger.event;
    
    // Format the full name with fallbacks
    const firstName = contact.firstname || '';
    const lastName = contact.lastname || '';
    const fullName = `${firstName} ${lastName}`.trim() || 'Unknown Contact';
    
    // Clean up company name
    const company = contact.company || 'Company not provided';
    
    // Map lead source to readable format
    const sourceMap = {
      'ORGANIC_SEARCH': 'Organic Search',
      'PAID_SEARCH': 'Google Ads',
      'PAID_SOCIAL': 'Social Media Ads',
      'DIRECT_TRAFFIC': 'Direct Website',
      'EMAIL_MARKETING': 'Email Campaign',
      'SOCIAL_MEDIA': 'Social Media'
    };
    
    const leadSource = sourceMap[contact.hs_analytics_source] || contact.hs_analytics_source || 'Unknown';
    
    // Build HubSpot contact URL
    const contactId = contact.hs_object_id;
    const hubspotUrl = `https://app.hubspot.com/contacts/your-hub-id/contact/${contactId}`;
    
    // Format job title with fallback
    const jobTitle = contact.jobtitle || 'Title not provided';
    
    // Create formatted Slack message
    const slackMessage = `🚨 *New Lead Alert*
` +
      `👤 *Name:* ${fullName}\n` +
      `🏢 *Company:* ${company}\n` +
      `📧 *Email:* ${contact.email}\n` +
      `💼 *Title:* ${jobTitle}\n` +
      `🎯 *Source:* ${leadSource}\n` +
      `🔗 <${hubspotUrl}|View in HubSpot>`;
    
    return {
      formattedName: fullName,
      formattedCompany: company,
      formattedSource: leadSource,
      slackMessage: slackMessage,
      hubspotUrl: hubspotUrl
    };
  }
});
10

Deploy > Test Workflow

Test the complete workflow

Click 'Deploy' in the top right to activate your workflow. Create another test contact in HubSpot with different data to verify the end-to-end flow works. Check your Slack channel within 30 seconds - you should see a formatted message with the new lead information. Verify all fields display correctly and links work.

  1. 1Click the 'Deploy' button in the top right
  2. 2Create a new contact in HubSpot with realistic data
  3. 3Wait 30 seconds and check your Slack channel
  4. 4Verify the message formatting and data accuracy
What you should see: You should see a formatted Slack message in #sales containing the contact's name, email, company, and lead source within 30 seconds.
Common mistake — If the message doesn't appear, check the workflow execution log in Pipedream for error details - common issues are missing Slack permissions or malformed message content.

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 Pipedream for this if you need instant webhook processing and want to customize the notification format with code. Pipedream's Node.js code steps let you format contact data, handle missing fields, and build direct HubSpot links that Make and Zapier can't match without clunky workarounds. Skip Pipedream if you're on a tight budget - Make handles the same workflow for $9/month vs Pipedream's $19/month.

Cost

This workflow costs 1 credit per notification. At 200 new leads per month, you'll use 200 credits ($19/month on the Developer plan). Make charges 1 operation per lead for the same volume ($9/month). Zapier burns through 2 tasks per notification (trigger + action) and hits $19/month at just 100 leads. Pipedream sits in the middle but gives you more control.

Tradeoffs

Make's HubSpot trigger fires faster than Pipedream's webhook setup - usually under 5 seconds vs 15-30 seconds. Zapier's Slack formatting tools are more visual than writing code. n8n gives you the same Node.js flexibility for free but requires self-hosting and manual webhook configuration in HubSpot. Power Automate integrates better if you're already using Microsoft 365. But Pipedream's instant webhook processing and built-in error handling make it worth the speed tradeoff.

You'll hit HubSpot's webhook delivery delays during high-traffic periods - notifications can arrive 2-3 minutes late when HubSpot is processing large imports. The Slack API occasionally returns 'channel not found' errors even with correct permissions, requiring workflow retries. Contact deduplication in HubSpot prevents notifications for contacts that match existing records, which confuses teams expecting alerts for every form submission.

Ideas for what to build next

  • Add lead qualification scoringInclude HubSpot lead score or custom qualification criteria in Slack messages to help reps prioritize follow-ups.
  • Create deal notificationsSet up a second workflow to notify the team when leads convert to opportunities in HubSpot.
  • Build response trackingAdd Slack reactions or buttons to track which sales rep claims each lead for accountability.

Related guides

Was this guide helpful?
HubSpot + Slack overviewPipedream profile →