Beginner~12 min setupCRM & CommunicationVerified April 2026
HubSpot logo
Slack logo

Deal stage alerts — HubSpot to Slack in Make

Posts a Slack message with deal details whenever a HubSpot deal moves to a new pipeline stage.

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 needing instant deal stage notifications with detailed context

Not ideal for

Teams with under 50 deal changes monthly who prefer simple setup over speed

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 25-person B2B SaaS sales team uses this to notify #deals-pipeline whenever a HubSpot deal moves to 'Proposal Sent' or 'Negotiation' stages. Before automation, the sales manager manually checked pipeline changes twice daily and often missed urgent deals that needed follow-up. Now the team responds to stage changes within minutes instead of hours.

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 Make

Copy the pre-built Make blueprint and paste it straight into Make. 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
Admin access to HubSpot to configure private app integrations
Slack workspace admin permissions to install Make bot
Active deals in HubSpot with defined pipeline stages

Optional

Target Slack channel created for deal notifications

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Deal Namedealname
Deal Stagedealstage
Deal Amountamount
Deal Ownerhubspot_owner_id
2 optional fields▸ show
Close Dateclosedate
Deal Sourcehs_analytics_source

Step-by-Step Setup

1

Dashboard > Create scenario > +

Create new scenario

Start with a blank scenario in Make. This will contain your trigger module and action modules.

  1. 1Click the 'Create a new scenario' button on your Make dashboard
  2. 2Click the large + icon in the center of the canvas
  3. 3Search for 'HubSpot' in the app list
  4. 4Select HubSpot from the results
What you should see: You should see the HubSpot app selected with trigger options displayed.
2

HubSpot module > Watch Events

Set up HubSpot trigger

Configure the trigger to fire when a deal's stage changes. This webhook-based trigger fires instantly when HubSpot detects the change.

  1. 1Select 'Watch Events' from the HubSpot trigger options
  2. 2Click 'Create a webhook' if you don't have one connected
  3. 3Choose 'deal.propertyChange' from the event type dropdown
  4. 4Set the property filter to 'dealstage'
What you should see: The module shows 'deal.propertyChange' selected with dealstage as the monitored property.
Common mistake — Don't use 'Watch Deals' — that only triggers on new deals, not stage changes.
Make
+
click +
search apps
HubSpot
HU
HubSpot
Set up HubSpot trigger
HubSpot
HU
module added
3

HubSpot module > Connection > Add

Connect HubSpot account

Authenticate your HubSpot account to allow Make to receive webhooks. You need admin access to set up webhooks.

  1. 1Click 'Add' next to the Connection field
  2. 2Enter your HubSpot account name
  3. 3Click 'Sign in with HubSpot'
  4. 4Authorize Make to access your HubSpot data
  5. 5Click 'Save' to store the connection
What you should see: Green 'Connected' badge appears next to your HubSpot connection name.
Common mistake — The webhook setup requires HubSpot Professional or Enterprise — Starter plans don't support custom webhooks.
Make settings
Connection
Choose a connection…Add
click Add
HubSpot
Log in to authorize
Authorize Make
popup window
Connected
green checkmark
4

Scenario canvas > Run once

Test HubSpot trigger

Verify the webhook receives data when you change a deal stage. Make needs sample data to configure the next modules.

  1. 1Click 'OK' to save the HubSpot module settings
  2. 2Go to your HubSpot account in another tab
  3. 3Find any deal and change its pipeline stage
  4. 4Return to Make and click 'Run once' on the scenario
What you should see: A green bubble with '1' appears on the HubSpot module, showing it captured the stage change event.
Common mistake — If no data appears, check that webhooks are enabled in HubSpot Settings > Integrations > Private Apps.
Make
▶ Run once
executed
HubSpot
Slack
Slack
🔔 notification
received
5

Canvas > + > HubSpot > Get a Deal

Add HubSpot Get Deal module

The webhook only sends the deal ID, not full deal details. Add a second module to fetch the complete deal record with name, amount, and owner.

  1. 1Click the + button to the right of the HubSpot trigger
  2. 2Search for and select HubSpot again
  3. 3Choose 'Get a Deal' from the actions list
  4. 4Map the Deal ID field from the trigger output
What you should see: A second HubSpot module appears connected to the first, configured to fetch deal details.
6

HubSpot Get Deal module > Properties

Configure deal data retrieval

Specify which deal properties to fetch. You need deal name, amount, stage, and owner for the Slack message.

  1. 1In the Deal ID field, click and select 'objectId' from the trigger data
  2. 2Under Properties, add 'dealname', 'amount', 'dealstage', and 'hubspot_owner_id'
  3. 3Check 'Include associations' to get contact and company data
  4. 4Click 'OK' to save the module
What you should see: The Get Deal module shows the mapped Deal ID and selected properties list.
Common mistake — Use exact property names — 'dealname' not 'deal_name' or HubSpot returns empty values.
7

Canvas > + > Slack > Create a Message

Add Slack module

Configure Slack to post the deal alert. You can send to a channel or DM the deal owner directly.

  1. 1Click + after the Get Deal module
  2. 2Search for and select Slack
  3. 3Choose 'Create a Message' action
  4. 4Select your Slack connection or create a new one
What you should see: Slack module appears with message configuration fields ready to fill.
8

Slack module > Connection > Add

Connect Slack workspace

Authenticate with your Slack workspace. The bot needs permission to post in channels and send DMs.

  1. 1Click 'Add' next to Connection if not already connected
  2. 2Click 'Sign in with Slack'
  3. 3Select your Slack workspace
  4. 4Click 'Allow' to grant Make posting permissions
  5. 5Verify the green connection badge appears
What you should see: Slack connection shows as active with your workspace name displayed.
Common mistake — Make sure the Slack app has permission to post in your target channel — check channel settings if messages fail.
9

Slack module > Text field

Configure Slack message content

Build the notification message with deal details. Include deal name, new stage, amount, and owner for complete context.

  1. 1Set Channel to your target channel (e.g. #deals) or leave blank for DM
  2. 2In Text field, click the function icon to build dynamic content
  3. 3Add: 'Deal moved: {{2.dealname}} → {{2.dealstage}} (${{2.amount}})'
  4. 4Add a new line and include: 'Owner: {{2.hubspot_owner_id}}'
  5. 5Click 'OK' to save the message template
What you should see: Message preview shows the template with HubSpot field mappings inserted.
Common mistake — HubSpot amounts come as strings — wrap with formatNumber() if you need currency formatting.
Message template
🔔 New Lead: {{1.properties.firstname.value}} {{1.properties.lastname.value}}
Email: {{1.properties.email.value}}
Company: {{1.properties.company.value}}
Status: {{1.properties.hs_lead_status.value}}
10

Scenario canvas > Run once

Test complete workflow

Run the full scenario to verify Slack receives properly formatted messages. This confirms all data mapping works correctly.

  1. 1Click 'Run once' at the bottom of the scenario
  2. 2Go to HubSpot and change another deal's stage
  3. 3Check your Slack channel for the notification message
  4. 4Verify all deal details appear correctly in the post
What you should see: Slack shows a message with the deal name, new stage, amount, and owner from your test.
11

Right-click module > Add error handler

Add error handling

Set up error handling for API failures or missing data. This prevents the scenario from breaking when HubSpot or Slack has issues.

  1. 1Right-click each module and select 'Add error handler'
  2. 2Choose 'Break' directive for critical failures
  3. 3Add a 'Sleep' module before retrying failed operations
  4. 4Set retry attempts to 3 with exponential backoff
What you should see: Each module shows an error handler path with break/retry logic configured.
Common mistake — Don't use 'Ignore' for errors — you'll miss failed notifications and lose deal updates.
12

Scenario canvas > Toggle switch > Save

Schedule and activate

Turn on the scenario to monitor deal changes continuously. Webhook-based scenarios run automatically when triggered.

  1. 1Click the toggle switch at the bottom left to 'ON'
  2. 2Set the scenario name to something descriptive like 'HubSpot Deal Alerts'
  3. 3Click 'Save' to store all settings
  4. 4Monitor the scenario dashboard for successful runs
What you should see: Scenario shows as 'Active' with green status indicator on your dashboard.
Common mistake — Confirm your workflow timezone matches your business timezone — n8n uses the instance timezone by default. Also verify the workflow is saved and set to Active, since Schedule Triggers won't fire on inactive workflows.

Drop this into a Make custom function.

JavaScript — Custom Function{{if(get(2; "amount"); formatNumber(get(2; "amount"); "$#,##0"); "Amount TBD")}}
▸ Show code
{{if(get(2; "amount"); formatNumber(get(2; "amount"); "$#,##0"); "Amount TBD")}}

... expand to see full code

{{if(get(2; "amount"); formatNumber(get(2; "amount"); "$#,##0"); "Amount TBD")}}

Scaling Beyond 500+ deal changes/day+ Records

If your volume exceeds 500+ deal changes/day records, apply these adjustments.

1

Batch notifications

Use Make's aggregator to collect multiple stage changes and send digest messages instead of individual alerts. This reduces Slack noise and API calls.

2

Filter critical stages only

Add stage filters to notify only on high-value stages like 'Proposal Sent' or 'Negotiation'. Early-stage movements create notification fatigue without actionable value.

3

Implement rate limiting

Add a 30-second sleep module between Slack posts to avoid hitting Slack's rate limits during bulk deal imports or mass stage updates.

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 Make for this workflow

Use Make for this if you need instant notifications and handle 100+ deal changes per month. The webhook-based trigger fires within seconds of a stage change, unlike Zapier's 5-15 minute polling delay. Make's visual router also handles complex logic — like sending different message formats based on deal value or stage type. Skip Make for basic setups under 50 deals/month where Zapier's simplicity beats Make's learning curve.

Cost

This workflow uses 2-3 operations per deal change: one for the webhook trigger, one to fetch deal details, and one to post to Slack. At 200 deal changes monthly, that's 600 operations total. Make's Core plan ($9/month) includes 10,000 operations, easily covering this volume. Zapier charges $20/month for the same trigger speed and webhook access. N8N costs nothing if self-hosted but requires server maintenance.

Tradeoffs

Zapier beats Make on setup speed — their HubSpot integration includes deal details in the trigger payload, eliminating the second API call. N8N offers better Slack formatting options with native markdown support and thread replies. But Make's error handling is superior for both platforms. You get granular retry logic, exponential backoff, and detailed error logs. When HubSpot's API hits rate limits (common during bulk imports), Make's error handlers prevent scenario breaks.

HubSpot's webhook delivery isn't guaranteed — during high API load, some events get dropped without notification. Build a backup polling scenario that runs hourly to catch missed stage changes. The hubspot_owner_id field returns numeric IDs, not names — you'll need a lookup table or additional API call to get readable owner names. Deal amounts come as strings without currency symbols, so format them manually if you want '$1,500' instead of '1500'.

Ideas for what to build next

  • Add thread replies for deal updatesWhen the same deal changes stages again, reply to the original Slack thread instead of posting a new message. This keeps deal history organized in one conversation.
  • Create conditional formatting by deal valueSend high-value deals ($50k+) to a separate #big-deals channel with @here mentions. Use Make's router to split notifications based on deal amount thresholds.
  • Build a deal closing celebration botAdd a separate trigger for deals moving to 'Closed Won' that posts celebration GIFs and calculates monthly team totals in Slack.

Related guides

Was this guide helpful?
HubSpot + Slack overviewMake profile →