

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-timeUse case type
notificationReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API 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
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.
- 1Click Workflows in the left navigation
- 2Click the green + New button
- 3You'll see the workflow builder with trigger selection
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.
- 1Click 'Select a trigger'
- 2Search for 'HubSpot' and select it
- 3Choose 'New Contact' from the trigger list
- 4Click Continue to proceed
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.
- 1Click 'Connect Account' in the trigger configuration
- 2Log in to HubSpot in the popup window
- 3Click 'Grant access' for the requested permissions
- 4Return to Pipedream after successful authorization
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.
- 1Go to HubSpot Settings > Automation > Workflows
- 2Click 'Create workflow' and select 'Contact-based'
- 3Set trigger to 'Contact is created'
- 4Add action 'Send webhook' and paste Pipedream URL
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.
- 1Create a new contact in HubSpot with test data
- 2Wait 10-15 seconds for the webhook to fire
- 3Check the Pipedream trigger for incoming data
- 4Click 'Use this event' to proceed
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.
- 1Click the + button under the trigger
- 2Search for 'Slack' and select the app
- 3Choose 'Send message to channel' action
- 4Click Continue to configure
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.
- 1Click 'Connect Account' in the Slack configuration
- 2Select your Slack workspace from the list
- 3Click 'Allow' to grant Pipedream permissions
- 4Confirm the connection back in Pipedream
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.
- 1Select #sales from the channel dropdown
- 2Click in the message text field
- 3Use {{ }} syntax to insert HubSpot contact fields
- 4Add formatting and labels for readability
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.
- 1Click + between the HubSpot and Slack steps
- 2Select 'Code' then 'Run Node.js code'
- 3Write code to format the contact data
- 4Return the formatted data using $.send()
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
};
}
});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.
- 1Click the 'Deploy' button in the top right
- 2Create a new contact in HubSpot with realistic data
- 3Wait 30 seconds and check your Slack channel
- 4Verify the message formatting and data accuracy
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
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.
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.
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 scoring — Include HubSpot lead score or custom qualification criteria in Slack messages to help reps prioritize follow-ups.
- →Create deal notifications — Set up a second workflow to notify the team when leads convert to opportunities in HubSpot.
- →Build response tracking — Add Slack reactions or buttons to track which sales rep claims each lead for accountability.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup