Integration BlueprintUse case: deal notificationsUpdated 2026-10-19

Integrating HubSpot with Slack for Real-Time Deal Alerts

Integrating HubSpot's CRM engine with Slack's channel architecture automates real-time deal stage transitions directly to sales reps. By dispatching event-driven webhooks from HubSpot to Slack incoming webhooks or bot endpoints, revops teams eliminate manual deal monitoring, reduce notification latency from hours to under 2 seconds, and ensure pipeline visibility directly within collaborative workspaces.

Explore: CRM ยท Team Communication

Comparison matrix

FeatureHubSpotSlackEdge
Entry-level Paid Pricing$20/month (Sales Hub Starter)$8.75/user/month (Pro plan)Slack
Free Tier AvailabilityFree CRM tools with limited automationFree tier with 90-day message history limitTie
Authentication MethodsOAuth 2.0 or Private App Access TokensBot User OAuth Tokens (xoxb-) or Incoming Webhook URLsTie
API Rate Limits100โ€“190 requests per 10 seconds per accountTiered per method (typically 1 req/sec Tier 1 to 50+ req/sec Tier 4)HubSpot
Native App MarketplaceOver 1,600 certified integrationsOver 2,600 directory appsSlack
Self-Hosting CapabilitySaaS only (Cloud-hosted)SaaS only (Cloud-hosted)Tie
Custom Data ModelsStandard Objects (Contacts/Deals) on Starter; Custom Objects require Enterprise ($1,200+/mo)Custom metadata via message attachments and Datastores (Workflow Builder)HubSpot
UI Notification CustomizationIn-app banner notifications and email alertsRich JSON visual layouts using Block Kit UI builderSlack
Start freeTry HubSpot โ†’Try Slack โ†’

ROI metrics

Hours saved / mo

35

HubSpot / mo

$50

Slack / mo

$88

Break-even

2.4 wks

Annual savings

$19,550

For a 10-person sales team, automating HubSpot deal alerts into Slack reclaims approximately 3.5 hours per rep monthly from CRM status checks, paying for both base plans within 17 days.

Step-by-step setup guide

  1. 1.Create a Slack App and Enable Incoming Webhooks

    Navigate to api.slack.com/apps, click 'Create New App' > 'From scratch', name it 'HubSpot Deal Alerts', select your target workspace, activate 'Incoming Webhooks', and click 'Add New Webhook to Workspace' to generate the Webhook URL (e.g., https://hooks.slack.com/services/T00/B00/XXXX).

    curl -X POST -H 'Content-type: application/json' --data '{"text":"Webhook configured successfully!"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
  2. 2.Provision a HubSpot Private App

    In HubSpot Settings, navigate to Integrations > Private Apps. Create a new Private App named 'Slack Deal Notifier' and grant read access to crm.objects.deals.read, crm.objects.contacts.read, and crm.schemas.deals.read scopes. Copy the resulting Bearer token.

    curl -X GET "https://api.hubapi.com/crm/v3/objects/deals?limit=1" -H "Authorization: Bearer pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -H "Content-Type: application/json"
  3. 3.Define Deal Pipeline Webhook Subscription

    Configure a HubSpot workflow action or Developer Webhook subscription to listen for deal property changes, specifically targeting the dealstage or amount properties to trigger when a deal moves to 'Closed Won'.

    {
      "targetUrl": "https://your-api-gateway.com/hubspot-deals",
      "eventTypeName": "deal.propertyChange",
      "propertyName": "dealstage"
    }
  4. 4.Construct Slack Block Kit Payload in Middleware

    Transform the incoming HubSpot payload into an interactive Slack message format containing Deal Name, Amount, Pipeline Stage, and Deal Owner fields.

    {
      "blocks": [
        {
          "type": "header",
          "text": {
            "type": "plain_text",
            "text": "Deal Won! :tada:"
          }
        },
        {
          "type": "section",
          "fields": [
            {"type": "mrkdwn", "text": "*Deal:* Acme Enterprise SLA"},
            {"type": "mrkdwn", "text": "*Amount:* $45,000 USD"},
            {"type": "mrkdwn", "text": "*Owner:* Sarah Connor"},
            {"type": "mrkdwn", "text": "*Stage:* Closed Won"}
          ]
        }
      ]
    }
  5. 5.Dispatch Formatted Message to Slack Webhook

    Forward the Block Kit payload from your intermediary endpoint (such as AWS Lambda, Cloudflare Workers, or Make) to the Slack Incoming Webhook URL using an HTTP POST request and verify that the response returns status code 200 with body 'ok'.

    curl -X POST -H "Content-Type: application/json" -d '{"text": "New Closed Won Deal: Acme Enterprise SLA - $45,000"}' https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

Webhook payload example

POST /crm/v3/webhooks/callbacks ยท event: contact.creation

{
  "appId": 284192,
  "eventId": 1001,
  "subscriptionId": 592812,
  "portalId": 8472911,
  "occurredAt": 1698150492120,
  "subscriptionType": "contact.creation",
  "attemptNumber": 0,
  "objectId": 12948172,
  "changeSource": "CRM_UI",
  "changeFlag": "NEW"
}

HubSpot: pros & cons

  • โœ… Robust REST v3 API documentation with interactive endpoint testing
  • โœ… Fine-grained Private App OAuth scopes reduce token blast radius
  • โœ… Granular audit trails track deal property modifications by user ID
  • โš ๏ธ Advanced automation workflows require Sales Hub Professional ($500/mo)
  • โš ๏ธ Webhook endpoints must be configured via App Developer accounts or Ops Hub

Slack: pros & cons

  • โœ… Block Kit enables rich data formatting including buttons, sections, and fields
  • โœ… Immediate alert delivery with sub-second message dispatch times
  • โœ… Incoming Webhooks can be created without writing complex authentication code
  • โš ๏ธ Free tier limits workspace visibility to 90 days of message history
  • โš ๏ธ Incoming Webhook URLs post to a single static channel per webhook created

FAQ

Can I route HubSpot notifications to specific Slack channels based on deal size?

Yes. If using HubSpot Operations Hub workflows, use conditional branching logic based on the 'Amount' property to dispatch to different Slack webhook URLs. If using custom middleware, parse the 'amount' field in the incoming request and route the destination payload to the respective channel webhook.

What happens if HubSpot hits the Slack API rate limits?

Slack Incoming Webhooks enforce a rate limit of approximately 1 request per second. If burst updates exceed this, Slack returns an HTTP 429 Too Many Requests response with a 'Retry-After' header indicating the backoff period in seconds. Middleware services should implement an exponential backoff retry queue.

Do I need HubSpot Operations Hub to send deal alerts to Slack?

No. You can use HubSpot's free native Slack integration for standard notifications. However, sending customized JSON payloads to custom Slack webhooks directly from workflows requires Sales Hub or Operations Hub Professional, or a developer app listening to webhook subscriptions.

How do I secure the endpoint receiving HubSpot webhooks?

Validate the 'X-HubSpot-Signature-v3' header included in each POST request. Generate an HMAC-SHA256 hash using your HubSpot Private App client secret, the HTTP method, the request URI, and the raw payload, then perform a constant-time comparison against the header value.

Related integrations & comparisons