How to Set Up Automated Deal Stage Alerts in a CRM

Step-by-step guide to configuring automated deal stage alerts in HubSpot, Pipedrive, and custom PostgreSQL CRMs. Covers stage-change triggers, time-in-stage stall detection, deal-value threshold routing, and a reusable alert routing matrix.

Automated deal stage alerts are CRM notifications that trigger when a deal changes stages, sits in one stage too long, or crosses a dollar threshold. They push the right information to the right person through Slack, email, or SMS so pipeline problems surface before prospects go cold.

Most sales teams don't find out a deal is stalled until after the prospect has gone cold. Automated deal stage alerts in a CRM fix that by pushing the right notification to the right person the moment a deal changes stage, sits too long, or crosses a value threshold. This guide walks you through setting up all three trigger types in HubSpot, Pipedrive, and a custom PostgreSQL-backed CRM using n8n.

Key Takeaways
  • In our experience building CRM alert systems, three trigger types cover 90% of real-world deal alert needs: stage-change, time-in-stage (stall detection), and deal-value threshold.
  • HubSpot deal-based workflows require the Professional tier at $90/seat/month (billed annually); Starter-tier users cannot create them at all.
  • HubSpot's re-enrollment setting is off by default for deal workflows, which silently breaks time-in-stage alerts after one fire.
  • A custom PostgreSQL CRM with n8n can combine stage, value, and time conditions in a single rule with no middleware cost.
  • Since March 2026, Rain Automation's AgentOS CRM has logged 592 automated outreach enrollments triggered by deal-stage entry, converting 5 leads without manual stage monitoring.

Why Most CRM Alert Setups Fail

The problem is not that teams skip alerts entirely. It's that they configure one trigger type, assume it covers everything, and don't realize the gaps until a $15k deal dies in silence. Alerts fail for three specific reasons: wrong trigger type, wrong recipient, or wrong channel.

A stage-change trigger tells you when a deal moves forward. But it won't tell you when a deal stops moving. A time-in-stage trigger catches the stall, but it won't flag that a $50k deal just entered your pipeline and needs VP-level eyes immediately. You need all three trigger types working together.

In my experience building custom CRMs for small sales teams, the most common failure mode is a time-based alert that fires exactly once and never again. The team thinks it's working. It ran on day one. But the re-enrollment setting was off, so every subsequent stalled deal passes through undetected. More on that specific gotcha below.

The Three Trigger Types for Deal Stage Alerts

Every deal alert system needs three trigger types: stage-change (a deal moved), time-in-stage (a deal stopped moving), and deal-value threshold (a deal's dollar amount demands different routing). Here's how they compare.

Trigger Type When It Fires Typical Use Case HubSpot Native Pipedrive Native Custom CRM
Stage-change Deal moves from Stage A to Stage B Notify deal owner that a proposal was accepted Yes (Professional+) Yes (Growth+) Yes (webhook or DB trigger)
Time-in-stage (stall) Deal sits in one stage beyond a threshold (e.g., 7 days) Alert manager that a qualified deal hasn't advanced Partial (requires workaround) Partial (visual indicator only; Slack routing requires Zapier middleware) Yes (scheduled query)
Deal-value threshold Deal amount crosses a dollar figure Route high-value deals to VP for review Yes (Professional+) Partial (single condition) Yes (IF node with multi-condition logic)

The AgentOS pipeline we built ships a 6-stage seller pipeline (First Contact, Nurturing, Preparing to List, Property Listed, In Contract, Closed) with every non-terminal stage eligible to trigger an automated alert when a deal stalls or advances. Every weekly forecast the system generates includes an average of 4 deal-stage risk alerts, surfacing problems like a buyer stalled in pre-approval for 34 days or zero showings logged in 30 days (source: AgentOS pipeline_forecasts, 22 forecasts, February to August 2026).

How to Choose the Right Notification Channel

The channel you send an alert through matters as much as the trigger itself. Slack DMs work for urgent deal-owner actions, email works for audit trails and async review, and SMS works for high-value deals that need a response within minutes. Pick the channel before you build the workflow.

Here's the decision logic:

  • Slack DM to deal owner: Urgent, requires action today. Examples: deal stalled 7+ days, new deal assigned.
  • Slack channel post (e.g., #sales or #wins): Team visibility. Examples: deal closed won, deal moved to negotiation.
  • Email to manager/VP: Async review, audit trail needed. Examples: high-value deal entered pipeline, deal lost after proposal.
  • SMS to deal owner: Reserved for deals above your highest threshold where response time directly affects close probability.

I always tell clients: if every alert goes to the same Slack channel, you've built a noise machine, not an alert system. Route by urgency and value. The matrix below gives you a reusable framework for that routing.

Step 1: Set Up Stage-Change Alerts

A stage-change alert fires when a deal moves from one named pipeline stage to another, notifying the right person through the right channel instantly. This is the most common trigger type and the easiest to configure.

HubSpot (Professional Tier Required)

HubSpot deal-based workflows require the Professional tier at $90/seat/month (billed annually). Starter-tier users cannot create deal-based workflows at all. If you're on Starter, you'll need a third-party tool like n8n or Zapier to trigger alerts from HubSpot deal changes.

Disclosure: Some links in this post, including links to n8n, are affiliate links. We may earn a commission if you purchase through these links, at no additional cost to you.

For Professional users:

  1. Go to Automation > Workflows > Create workflow > Deal-based
  2. Set enrollment trigger: "Deal stage is any of [Proposal Sent]"
  3. Add action: "Send internal email notification" or "Send Slack notification" (requires HubSpot-Slack integration)
  4. Set the recipient to the deal owner using the "Deal owner" property token
  5. Save and turn on

Pipedrive (Growth Plan or Higher)

Pipedrive's Workflow Automation handles stage-change alerts natively, but requires the Growth plan or higher (not available on Lite):

  1. Go to Automations > Create automation
  2. Trigger: "Deal is updated" with condition "Stage changed to [Proposal]"
  3. Action: "Send Slack message" via Pipedrive's Dealbot integration, or "Send email" to the deal owner
  4. For more complex routing (different channels by deal value), use Zapier's Pipedrive-Slack template as middleware

Custom PostgreSQL CRM with n8n

If you're running a custom CRM on PostgreSQL, you can trigger stage-change alerts with an n8n webhook workflow:

  1. Webhook node: Receives a POST from your application when a deal record's stage column changes
  2. IF node: Checks new_stage value (e.g., equals "Proposal")
  3. Slack node (true branch): Posts a DM to the deal owner with deal name, amount, and new stage
  4. Email node (false branch): Sends a summary email for non-urgent stage transitions

This is how we built the AgentOS outreach system. When an FSBO lead enters the pipeline, the CRM fires a 3-step AI-written email sequence automatically: day 0 is a market analysis offer, day 7 is a listing-specific improvement tip, and day 14 is a soft close with local price comparison data. No manual scheduling.

Step 2: Set Up Time-in-Stage Stall Alerts

A time-in-stage alert fires when a deal sits in the same pipeline stage longer than a defined threshold, catching deals that are quietly dying before your team notices. This is the trigger type least covered by competitors and the one that saves the most revenue.

HubSpot (the Re-enrollment Gotcha)

HubSpot does not have a native "time in stage" trigger. You need a workaround:

  1. Create a custom date property called "Stage Entry Date" on the Deal object
  2. Build a separate workflow that stamps the current date into "Stage Entry Date" whenever the deal stage changes
  3. Build a second workflow with enrollment trigger: "Stage Entry Date is more than 7 days ago" AND "Deal stage is any of [Proposal Sent]" AND "Deal is open"
  4. Add a delay, then the notification action

Now the critical part. Go to Workflow Settings > Re-enrollment and enable "Allow contacts to re-enroll in this workflow." HubSpot Community threads are full of teams who set up stall alerts, watched them fire once on the initial batch, and assumed the system was working. It wasn't. Re-enrollment is off by default for deal-based workflows. Without it, your stall alert fires on day one for existing deals and never triggers again for new deals that meet the criteria later. This single setting is responsible for more broken stall-detection workflows than any other configuration issue in HubSpot.

Pipedrive (Deal Rotting as a Visual Indicator)

Pipedrive has a built-in "deal rotting" feature that flags stalled deals visually. Here's how to set it up:

  1. Open the pipeline view (go to Deals > Board view)
  2. Click the pencil/edit icon on the pipeline header to open pipeline settings
  3. Enable "Rotting in (days)" and set per-stage thresholds (e.g., Proposal: 7 days, Negotiation: 14 days)
  4. Rotting deals appear visually marked in red in the pipeline view

Pipedrive's rotting feature is a visual indicator only. You cannot use a deal's rotting status as a native automation trigger. Per Pipedrive's own documentation: "you can't use a deal's rotting time with automations." To route stall-based alerts to Slack or email, you have two options:

  • Use Zapier as middleware: Set up a Zapier zap that monitors deals matching Pipedrive's rotting filter on a schedule and sends a Slack message via the Slack action. This adds Zapier subscription cost but works reliably.
  • Use a "Deal inactivity" automation (Growth plan+): Pipedrive's Workflow Automation supports a trigger that fires after a configurable number of days without any logged activity on a deal. This isn't tied to the rotting feature, but it achieves a similar result. Create an automation with trigger "Deal inactivity" > set the inactivity period > action "Send Slack message" or "Send email."

In my experience, Pipedrive's deal rotting is the most turnkey stall-detection visual tool in any SMB CRM (Zoho offers a similar extension). The limitation is that you can't combine rotting status with deal value in a single rule. A $500 rotten deal and a $50k rotten deal get the same visual flag, and routing them differently requires external middleware.

Custom PostgreSQL CRM with n8n (the Full Node Sequence)

This is the architecture Rain uses in custom CRM builds, and it does not appear in any of the top 10 search results for this topic. Here's the exact n8n node sequence for PostgreSQL-based stall detection:

  1. Schedule Trigger node: Runs every morning at 8:00 AM
  2. Postgres node: Executes the query:
SELECT id, name, amount, stage, stage_updated_at
FROM deals
WHERE stage_updated_at < NOW() - INTERVAL '7 days'
  AND stage = 'Proposal'
  AND closed_at IS NULL;
  1. IF node: Checks amount > 10000
  2. Branch A (true, high-value): Slack node sends a DM to VP Sales with deal name, amount, days stalled, and deal owner name
  3. Branch B (false, standard-value): Slack node sends a DM to the deal owner only

This five-node workflow replaces what would take two separate HubSpot workflows, a custom date property, and a re-enrollment configuration to achieve. And it handles the multi-condition logic (stage + time + value) in a single flow with no middleware.

Here's what real stall alerts look like in production. From our AgentOS pipeline forecasts: "Single client in pre-approval stage for 34 days, financing approval stalled" and "0 showings in the last 30 days, no tours scheduled." Each alert pairs with a concrete next-step prompt, like "Accelerate pre-approval client by coordinating with lender this week" (source: AgentOS pipeline_forecasts, anonymized).

Step 3: Set Up Deal-Value Threshold Alerts

A deal-value threshold alert fires when a deal's dollar amount crosses a defined figure, routing high-value opportunities to senior team members who need visibility. This is the trigger type that prevents your VP from learning about a $50k deal three weeks after it entered the pipeline.

HubSpot

  1. Create a deal-based workflow with enrollment filter: "Deal amount is greater than 10000"
  2. Add a branch: IF deal stage is "Proposal Sent" > send internal email to VP Sales distribution list
  3. Add a second branch: IF deal stage is "Closed Won" > post to #wins Slack channel

HubSpot handles value thresholds well within Professional-tier workflows. The limitation appears when you try to combine a value condition with a time-in-stage condition. That requires the two-workflow workaround described above.

Pipedrive

Pipedrive's Workflow Automation supports deal value conditions:

  1. Trigger: "Deal is created" or "Deal is updated"
  2. Condition: "Deal value is greater than 10000"
  3. Action: Send email or Slack notification

The limitation: Pipedrive cannot combine deal value + stage + time-in-stage in a single native automation rule. If you need "deal value > $10k AND stage = Proposal AND days in stage > 7," you'll need Zapier or Make as middleware, adding approximately $20-50/month in tool cost.

Custom CRM

The n8n workflow described above already handles this. The IF node after the Postgres query checks amount > 10000 and branches accordingly. You can add as many conditions as your business needs without extra tooling or middleware subscriptions. That's the core advantage of a custom CRM build.

The Deal Alert Routing Matrix

The routing matrix answers the question every team skips: who gets which alert, through which channel, and under what condition. Copy this table and adapt the dollar thresholds and channel choices to your pipeline.

Stage Deal Value Alert Recipient Channel Timing
Proposal Sent Under $5,000 Deal owner Email (daily digest) Next business morning
Proposal Sent $5,000 to $10,000 Deal owner Slack DM Immediate
Proposal Sent Over $10,000 Deal owner + VP Sales Slack DM to owner, email to VP Immediate
Any stage, stalled 7+ days Under $10,000 Deal owner Slack DM 8:00 AM daily
Any stage, stalled 7+ days Over $10,000 Deal owner + VP Sales Slack DM to both 8:00 AM daily
Closed Won Any value #wins channel Slack channel post Immediate
Closed Lost Over $5,000 Manager Email with loss reason Immediate
Deal owner unassigned Any value Sales manager (fallback) Slack DM Immediate

Two rules to prevent alert fatigue:

  • De-duplication: Don't re-fire the same stall alert for the same deal if nothing has changed since the last alert. Add a last_alert_sent_at column (or HubSpot custom property) and skip deals where the last alert was sent within 48 hours.
  • Fallback recipients: If the deal owner field is empty or the user is deactivated, route to the sales manager. Silent failures here mean lost deals.

Since March 2026, our AgentOS CRM has logged 592 automated sequence enrollments across active tenants. Five converted directly from system-triggered outreach, with 8 replies captured for human follow-up, all without the agent manually monitoring deal stages (source: AgentOS outreach_enrollments, March to August 2026, 0.85% conversion rate).

Testing Your Alert Configuration Before Going Live

Run every alert through a test deal before you turn it on for your team. A broken alert is worse than no alert, because it creates false confidence that someone is watching the pipeline.

Here are the red flags that your alerts are broken and the steps to verify each trigger type:

  • Stall alerts fired on initial setup but never again (re-enrollment is off)
  • All alerts go to the same Slack channel regardless of deal value
  • Deal owner receives alerts for deals they don't own (wrong property token)
  • Notification goes to a deactivated user or archived Slack channel
  • Time-in-stage alert uses "created date" instead of "stage entry date"

Testing checklist:

  1. Create a test deal with a known value (e.g., $15,000) and assigned owner
  2. Move the test deal to the target stage and verify the stage-change alert fires within 60 seconds
  3. Wait for the stall threshold (or temporarily set it to 1 day for testing) and confirm the time-in-stage alert fires
  4. Change the deal value above and below your threshold to verify routing changes
  5. Remove the deal owner and confirm the fallback recipient receives the alert
  6. In HubSpot: check Workflow > Performance tab to see if the test deal enrolled and completed
  7. In n8n: check the Executions panel to verify the workflow ran and each node produced the expected output

When Your CRM Can't Handle Multi-Condition Alert Rules

If you need an alert that combines stage + value + time-in-stage in a single rule, HubSpot Professional requires a two-workflow workaround and Pipedrive requires Zapier or Make as middleware. A custom CRM handles all three conditions in one five-node n8n workflow with no added cost. That's the practical gap.

Here's what hits the wall in off-the-shelf CRMs:

  • HubSpot Professional ($90/seat/month, billed annually) can filter by stage OR value in a single workflow, but combining both with a time-based delay requires a custom date property and a second linked workflow. Starter-tier users are locked out of deal workflows entirely.
  • Pipedrive handles stage-change and deal-rotting visuals natively, but combining stall detection with a value threshold for automated routing requires external middleware.
  • Both platforms cap the number of active workflows on lower tiers, which becomes a constraint as your pipeline grows.

Picture this: you've got a 6-stage pipeline, three value tiers, and you want different routing for each combination. That's 18 potential alert rules. In HubSpot, you're building and maintaining 18 workflows (or a complex branching tree). In a custom PostgreSQL CRM with n8n, it's one scheduled query with conditional branches.

We build exactly this kind of system for small sales teams whose alert needs have outgrown their CRM's native capabilities. If your current setup can't combine the conditions you need, or you're paying for middleware just to route alerts correctly, check out our services or get in touch and we'll scope what a custom build looks like for your pipeline.

Firms in professional services, such as law practices, consultancies, and agencies, often need additional trigger types beyond deal-stage changes, including retainer balance thresholds, matter conflict flags, and client engagement health scores. Rain's guide to CRM automation for professional services firms covers how those triggers get designed and wired into a custom pipeline.

Also worth reading: CRM Deal Stage Alerts: What HubSpot Can't Do and When to Build Custom covers the specific limitation boundaries in more detail.

Frequently Asked Questions

How do I get notified when a deal changes stages in HubSpot?

Create a deal-based workflow in HubSpot (requires Professional tier at $90/seat/month, billed annually). Set the enrollment trigger to "Deal stage is any of [your target stage]" and add an internal email or Slack notification action. Starter-tier users need a third-party tool like n8n or Zapier to trigger deal-stage alerts.

Can Pipedrive send Slack alerts when a deal moves stages?

Yes. Use Pipedrive's built-in Workflow Automation (Growth plan or higher) with a "Deal is updated" trigger filtered to stage changes, then connect the Dealbot Slack integration as the action. For routing logic based on deal value, add Zapier as middleware between Pipedrive and Slack.

How do I set up a stalled deal alert in my CRM?

Use a time-in-stage trigger. In Pipedrive, enable "deal rotting" per stage from the pipeline editor for visual flagging, then add Zapier or a "Deal inactivity" automation for Slack routing. In HubSpot, create a custom "Stage Entry Date" property and build a workflow filtering deals where that date exceeds your threshold. In a custom CRM, run a scheduled SQL query checking stage_updated_at against your stall interval.

What triggers a deal stage alert?

Three trigger types cover most use cases: (1) stage-change triggers fire when a deal moves between named stages, (2) time-in-stage triggers fire when a deal sits in one stage past a threshold, and (3) deal-value threshold triggers fire when a deal's amount crosses a dollar figure. Combining all three provides complete pipeline coverage.

Can I send different CRM alerts to different people based on deal value?

Yes, but platform support varies. HubSpot Professional workflows support branching by deal amount. Pipedrive supports value conditions but cannot combine them with time-in-stage natively. A custom PostgreSQL CRM with n8n handles multi-condition routing (stage + value + time) in a single workflow without middleware.

What is deal rotting in Pipedrive?

Deal rotting is Pipedrive's built-in stall-detection feature. You set a time threshold per pipeline stage (e.g., 7 days for Proposal, 14 days for Negotiation) by editing the pipeline from the board view. Deals that exceed the threshold turn red in the pipeline view. Rotting is a visual indicator only and cannot be used as a native automation trigger.

Disclaimer: CRM pricing and feature availability referenced in this post reflect publicly available information as of August 2026. Tier requirements and per-seat costs may change. Verify current pricing on each vendor's website before making purchasing decisions.