Back to journal
Integrations & Tools

Push HubSpot Deals to Slack: A Build Guide

Learn how to send HubSpot deal alerts to Slack step by step — from native workflows to custom webhooks — so your team never misses a critical pipeline move.

Tommy Rush
Push HubSpot Deals to Slack: A Build Guide
Share

If your sales team lives in Slack but your pipeline data lives in HubSpot, you already know the problem: deals move through stages, but the people who need to act on those moves only find out hours later — or not at all. The fix is straightforward: send HubSpot deal alerts to Slack in real time, so reps, managers, and ops people get the right signal the moment it matters.

This guide walks through three distinct build paths, from the simplest no-code setup to a more robust webhook-based approach. Pick the one that matches your team's technical comfort level and notification needs.


Why Sales Pipeline Slack Notifications Actually Change Behavior

Before getting into the build, it's worth being clear about what you're solving. HubSpot is a system of record. Slack is where decisions happen. When those two systems are disconnected, the friction shows up as:

  • Deals sitting at a stage too long because no one realized the stage changed
  • Finance learning about a closed-won deal from a rep's verbal update instead of a system trigger
  • Management reviewing a pipeline report that's a day out of date

Routing deal stage alerts from HubSpot directly into Slack channels eliminates that lag. It also creates a lightweight audit trail inside the conversation where action actually gets taken — you can see the alert, the discussion, and the follow-up in the same thread.


Three Build Paths

Path 1: HubSpot's Native Slack Integration (No-Code)

HubSpot has a native Slack app you can install directly from the HubSpot App Marketplace. This is the fastest way to get basic deal notifications running without writing a single line of code.

What it does well:

  • Sends notifications when a deal owner is mentioned or assigned
  • Lets reps receive deal summaries on demand by querying HubSpot from Slack
  • Requires no technical setup beyond OAuth authorization

What it doesn't do:

  • It is not designed to push arbitrary workflow-triggered messages to a shared Slack channel. It is primarily user-centric — notifications go to individual users, not channels, unless you use the workflow action described below.

Setup steps:

  1. In HubSpot, go to the App Marketplace and search for "Slack."
  2. Click Install and authorize the connection to your Slack workspace.
  3. Map your HubSpot users to their corresponding Slack users during setup.
  4. In HubSpot Workflows (Sales Hub Professional or higher), you can now add a "Send Slack notification" action that posts to a specific channel.

For teams on the right HubSpot tier, this is the cleanest path. The workflow action lets you define exactly what triggers the notification — deal stage change, deal value threshold, close date approaching — and exactly which Slack channel receives it.


Path 2: HubSpot Workflows + Zapier or Make (No-Code, More Flexible)

If you're on a lower HubSpot tier or need more control over the message format, connecting HubSpot to Slack through a middleware platform like Zapier or Make gives you considerably more flexibility.

How the connection works:

  • HubSpot triggers: deal stage changed, deal created, deal property updated, deal amount exceeds a value
  • Middleware: filters, formats, and routes the data
  • Slack action: posts a formatted message to a channel or DM

Building this in Zapier:

  1. Create a new Zap. Set the trigger app to HubSpot and choose "Deal Stage Changed" (or whichever property you want to monitor).
  2. Connect your HubSpot account and test the trigger to pull in sample deal data.
  3. Add a Filter step if needed — for example, only continue if the new stage is "Closed Won" or the deal amount is above a certain value.
  4. Add a Slack action: "Send Channel Message."
  5. Map the HubSpot deal fields into the Slack message body. Useful fields to include: deal name, associated company, deal owner, deal amount, new stage, close date, and a direct link to the deal record in HubSpot.
  6. Test and activate.

Building this in Make (formerly Integromat):

Make's visual canvas gives you more conditional logic. For example, you can build a scenario that routes closed-won deals to #sales-wins, deals entering negotiation to #deal-review, and stalled deals to a manager's DM — all in one scenario using a Router module.

  1. Add a HubSpot "Watch CRM Objects" module set to Deals.
  2. Set the filter criteria for which changes should proceed.
  3. Connect a Router with multiple branches, each leading to a different Slack channel or recipient.
  4. Format messages using Make's text functions to include relevant deal details.

Message formatting tip: Use Slack's Block Kit structure if you want rich, formatted cards rather than plain text. Both Zapier and Make support sending raw JSON to Slack's chat.postMessage API, which lets you add bold text, dividers, and action buttons.


Path 3: HubSpot Webhooks + Custom Endpoint (Code-Based)

For teams with a developer available — or agencies building this for clients at scale — direct HubSpot webhooks offer the most control, lowest latency, and no per-task fees from middleware platforms.

Architecture overview:

HubSpot sends an HTTP POST to a URL you define whenever a subscribed event occurs. Your endpoint receives that payload, applies any business logic, and calls Slack's API to post the message.

Step 1: Create a Slack App and Incoming Webhook

  1. Go to api.slack.com/apps and create a new app.
  2. Under "Incoming Webhooks," activate the feature and add a new webhook URL tied to the target channel.
  3. Copy the webhook URL — this is what your endpoint will POST to.

Step 2: Build the Receiving Endpoint

A minimal Node.js example using Express:

import express from 'express';
import fetch from 'node-fetch';

const app = express();
app.use(express.json());

const SLACK_WEBHOOK_URL = process.env.SLACK_WEBHOOK_URL;

app.post('/hubspot-webhook', async (req, res) => {
  const events = req.body;

  for (const event of events) {
    if (event.subscriptionType === 'deal.propertyChange'
        && event.propertyName === 'dealstage') {

      const message = {
        text: `Deal stage updated`,
        blocks: [
          {
            type: 'section',
            text: {
              type: 'mrkdwn',
              text: `*Deal ID ${event.objectId}* moved to stage \`${event.propertyValue}\``
            }
          }
        ]
      };

      await fetch(SLACK_WEBHOOK_URL, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(message)
      });
    }
  }

  res.sendStatus(200);
});

app.listen(3000);

This is intentionally minimal. In production, you'd enrich the event with a HubSpot API call to pull the deal name, amount, and owner before building the Slack message.

Step 3: Register the Webhook in HubSpot

  1. In HubSpot, go to Settings > Integrations > Private Apps (or use a developer account).
  2. Create a private app with the crm.objects.deals.read scope.
  3. Under Webhooks, add a subscription for deal.propertyChange with propertyName set to dealstage.
  4. Set the target URL to your deployed endpoint.

Step 4: Deploy and Secure

Deploy the endpoint to any Node-compatible host. Validate incoming requests using the HubSpot signature header (X-HubSpot-Signature) to ensure the payload genuinely came from HubSpot.


Choosing the Right Build Path

Requirement Best Path
Need it running today, no developer Path 1 (native) or Path 2 (Zapier/Make)
Need custom routing to multiple channels Path 2 (Make with Router) or Path 3
High message volume, cost sensitivity Path 3 (webhooks)
Rich message formatting (Block Kit) Path 2 with raw JSON or Path 3
Closed-won Slack notification only Path 1 or Path 2 with filter
Multi-client or agency deployment Path 3

What to Include in Your Deal Alert Messages

Regardless of which path you choose, the content of the alert matters as much as the trigger. A message that just says "Deal stage changed" creates noise. A message that says:

Acme Corp — $28,000 — moved to Proposal Sent Owner: Jordan M. | Close date: June 15 View deal in HubSpot

...creates action. At minimum, include the deal name, company, amount, deal owner, new stage, and a direct link back to the record.

For closed-won notifications specifically, consider posting to a public channel like #wins with a format your whole team can celebrate. For deal-at-risk or stalled alerts, route those to a private channel or directly to the manager.


Common Mistakes to Avoid

Triggering on every property change. If you subscribe to all deal updates rather than specific stage changes, you'll flood the Slack channel and people will start ignoring it. Be deliberate about which events warrant a notification.

Missing the enrichment step. HubSpot webhook payloads contain IDs, not names. If you skip the API call to fetch the deal record, your message will show "Deal 12345678" instead of "Acme Corp."

Not testing edge cases. What happens if a deal is deleted mid-stage? What if the deal amount is null? Build your message templates defensively so missing fields don't cause broken alerts.

Sending to the wrong channel. A closed-lost notification in #sales-wins is at best awkward, at worst demoralizing. Use filters and routing logic to match message type to destination channel.


Conclusion

Setting up HubSpot deal alerts in Slack is one of the highest-leverage integrations a sales-driven team can build. It doesn't require a complex technical infrastructure — for many teams, a HubSpot workflow action or a Zapier connection is enough to get meaningful, real-time pipeline visibility flowing into the channels where decisions actually happen. For teams with higher volume or more complex routing needs, the webhook-based approach gives full control over what gets sent, when, and to whom.

If you'd like help designing and building this integration — or wiring it into a broader sales ops automation stack — schedule a conversation about your workflow to talk through what your team needs.

Explore this topic further

Jump into the journal with one of the themes from this article.

If this article maps to a real workflow problem, let’s build the fix.

Intuitional works with teams that need better systems, cleaner handoffs, and AI or automation used with discipline.

Run the workflow ROI calculator