Send a Slack alert when a HubSpot deal changes stage using Zapier
Prerequisites
- Zapier account (Free plan works for this 2-step Zap)
- HubSpot account connected to Zapier via OAuth
- Slack workspace connected to Zapier
Why Zapier?
Zapier is the fastest path to working alerts. If you've never built an automation before, you can have this running in under 10 minutes. There's no server to host, no code to write, and the HubSpot trigger handles stage detection natively — including resolving stage names to labels, which other approaches require an extra API call for.
The trade-off is cost. Zapier's per-task pricing means every stage change counts against your monthly quota. On the Free plan (100 tasks/month), that's fine for small teams. But a busy pipeline with 20+ stage changes per day will push you to the Professional plan at $30/mo. If cost is a concern and you're comfortable with a visual builder, consider n8n (free self-hosted) or Make (lower per-operation pricing).
How it works
- HubSpot "Updated Deal Stage" trigger fires whenever a deal enters a specific stage (or any stage, if left unfiltered) — Zapier polls HubSpot every 1-15 minutes depending on your plan
- Trigger data includes the deal name, amount, stage label, and HubSpot object ID — no separate API call needed for deal details
- Slack "Send Channel Message" action posts the formatted alert to your chosen channel with deal details and a direct HubSpot link
Step 1: Set up the HubSpot trigger
Create a new Zap. Choose HubSpot as the trigger:
- Trigger event: Updated Deal Stage
- Pipeline: Select your pipeline (e.g., "Sales Pipeline")
- Stage: Leave blank to trigger on ANY stage change, or select a specific stage
"Updated Deal Stage" fires when a deal enters the specified stage. If you leave the stage blank, it fires on every stage transition. Zapier polls HubSpot every 1-2 minutes (Professional plan) or 15 minutes (Free plan).
Step 2: Configure additional properties
In the trigger setup, under Additional Properties to Retrieve, add:
dealnameamountdealstagehubspot_owner_id
Without this, you'll only get the deal ID in your Slack message.
This is the #1 gotcha with HubSpot on Zapier. If you don't explicitly add properties to retrieve, your trigger data will be mostly empty. Always check "Additional Properties to Retrieve."
Step 3: Send Slack notification
Add a Slack action:
- Action event: Send Channel Message
- Channel:
#sales-pipeline - Message Text:
🔄 *Deal Stage Changed*
*{{dealname}}* moved to *{{dealstage}}*
Amount: ${{amount}}
<https://app.hubspot.com/contacts/YOUR_PORTAL_ID/deal/{{hs_object_id}}|View in HubSpot>Step 4: Test and publish
- Click Test on each step
- Verify the Slack message contains the right deal info
- Turn the Zap On
Limitations
- Stage names: Zapier's trigger returns the stage label (not just the ID), so you don't need a separate pipeline lookup — unlike the n8n and code approaches.
- Polling delay: 1-15 minutes depending on plan. Not truly instant.
- No filtering: The Free plan doesn't support Filter steps. To trigger only on specific stages, select the stage in the trigger config (but you'll need a separate Zap per stage).
Troubleshooting
Common questions
How many Zapier tasks does this use per month?
Each deal stage change consumes 1 task. If you add a Filter step (Professional plan), that's 2 tasks per stage change — the trigger counts as one task even if the filter stops the Zap from continuing. A team with 10 deals changing stage daily would use about 300 tasks/month (or 600 with a filter). The Free plan's 100-task limit works for low-volume pipelines; beyond that, you'll need Professional at $30/mo.
Can I send alerts to multiple Slack channels based on the stage?
Yes, but you'll need Zapier's Paths feature (Professional plan or higher). Add a Paths step after the trigger — one path for "moved to Negotiation" that posts to #sales-alerts, another for "Closed Won" that posts to #wins. Alternatively, create separate Zaps for each stage/channel combination, which works on any plan.
What are the limitations of Zapier's HubSpot trigger?
The "Updated Deal Stage" trigger doesn't include the previous stage — you only get the new stage. If you need "moved FROM Proposal Sent TO Negotiation" logic, you'll need to store the previous state externally (e.g. in a Zapier Storage step). Also, Zapier doesn't support HubSpot webhooks directly — it polls, so there's a 1-15 minute delay depending on your plan tier.
Should I use Zapier or Make for this?
Zapier is simpler — the HubSpot trigger returns stage labels directly, so you don't need a separate pipeline lookup. Make requires more setup but costs less at scale (1,000 free credits/month vs. 100 free tasks). If you're only automating this one workflow and want the easiest setup, Zapier wins. If you're building multiple automations, Make's pricing is more favorable.
Cost
- Free plan: Works for a simple 2-step Zap (trigger + Slack). 100 tasks/month.
- Professional plan: $29.99/mo if you need filters, formatting, or faster polling.
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.