Notify Slack when a HubSpot deal over $50K is created using n8n

low complexityCost: $0-24/mo

Prerequisites

Prerequisites
  • n8n instance (cloud or self-hosted)
  • HubSpot private app token with crm.objects.deals.read scope
  • Slack app with Bot Token (chat:write scope)

Why n8n?

n8n gives you webhook-based delivery (alerts within seconds) at zero ongoing cost when self-hosted. The HubSpot Trigger node listens for deal.creation events, so you don't need to poll — new deals are detected instantly. The visual workflow editor makes it easy to add extra logic like owner name resolution or routing to different channels based on deal size.

The trade-off is initial setup. You need to deploy n8n (Docker or npm) and configure HubSpot credentials. If you're already running n8n for other automations, adding this workflow takes under 15 minutes. If not, consider Zapier for the fastest setup.

How it works

  • HubSpot Trigger node listens for deal.creation events via webhook — fires within seconds of a new deal
  • HTTP Request node fetches the full deal record (name, amount, owner) since the trigger only sends the deal ID
  • IF node checks whether the amount exceeds your threshold (e.g., $50,000)
  • HTTP Request node resolves the owner ID to a name via the Owners API
  • Slack node posts a Block Kit message with deal details and a direct link to the HubSpot record

Step 1: Add HubSpot Trigger

Add a HubSpot Trigger node:

  • Event: Deal Created

This fires for every new deal. You'll filter by amount in the next step.

Step 2: Fetch deal details

Add an HTTP Request node:

  • Method: GET
  • URL: https://api.hubapi.com/crm/v3/objects/deals/{{ $json.objectId }}
  • Authentication: HubSpot credential
  • Query params: properties=dealname,amount,dealstage,hubspot_owner_id,pipeline

Step 3: Filter by amount

Add an IF node:

  • Condition: {{ parseFloat($json.properties.amount || '0') }} greater than 50000

Only deals over $50K proceed to the Slack step.

Configurable threshold

Store the threshold in a workflow variable or static data so you can change it without editing the IF node: $getWorkflowStaticData('global').dealThreshold || 50000.

Step 4: Resolve owner name

Add an HTTP Request to get the owner's name:

  • URL: https://api.hubapi.com/crm/v3/owners/{{ $json.properties.hubspot_owner_id }}

Step 5: Send Slack alert

Add a Slack node:

  • Channel: #executive-deals or #sales-leadership
  • Message Type: Block Kit
{
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "🎯 *New Large Deal Created*\n*{{ $('Fetch Deal').first().json.properties.dealname }}*\nAmount: *${{ parseFloat($('Fetch Deal').first().json.properties.amount).toLocaleString() }}*\nOwner: {{ $('Fetch Owner').first().json.firstName }} {{ $('Fetch Owner').first().json.lastName }}"
      }
    },
    {
      "type": "context",
      "elements": [
        {
          "type": "mrkdwn",
          "text": "<https://app.hubspot.com/contacts/YOUR_PORTAL_ID/deal/{{ $('Fetch Deal').first().json.id }}|View in HubSpot>"
        }
      ]
    }
  ]
}

Step 6: Activate

  1. Test by creating a deal over $50K in HubSpot
  2. Verify the Slack alert
  3. Toggle to Active

Troubleshooting

Common questions

Do deals under $50K count as n8n executions?

Yes. Every new deal triggers the workflow, and the IF node evaluates it — that counts as 1 execution even if the deal is filtered out. On the free self-hosted plan, this doesn't matter (unlimited executions). On n8n Cloud, consider adding a pre-filter in the HubSpot Trigger settings if your deal volume is high.

Can I alert different channels based on deal size?

Yes. Replace the single IF node with a Switch node that routes to different Slack channels: $50-100K to #sales-leadership, $100K+ to #executive-deals. Each branch gets its own Slack node with the appropriate channel.

How quickly do alerts arrive after deal creation?

The HubSpot Trigger uses webhooks, so alerts typically arrive within 1-5 seconds of deal creation. This is significantly faster than polling-based approaches (Zapier, Make) which check every 1-15 minutes.

Cost

  • n8n Cloud: Only counts as 1 execution when a deal is created and passes the filter. Deals under $50K stop at the IF node but still count as 1 execution.

Looking to scale your AI operations?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.