Nudge Dynamics 365 deal owners about stale pipeline in Slack
Every weekday morning, an agent reviews your open Dynamics 365 pipeline and privately DMs each rep only the deals that need attention today.
Every weekday at 8am in my workspace timezone, audit my open sales pipeline in Microsoft Dynamics 365 and privately nudge each deal owner in Slack about the deals that are going stale. Use a cron trigger: Dynamics 365 does not offer a poll or webhook trigger on this platform, so the schedule fires the run and the workflow pulls the pipeline itself.
Start with Dynamics 365 Query Records against the opportunity table to pull every open opportunity. Filter to open deals with statecode eq 0, and select at least name, opportunityid, _ownerid_value, estimatedvalue, estimatedclosedate, salesstagecode, stepname and modifiedon. Order by estimatedvalue descending. Request formatted-value annotations so you get readable owner names and stage labels instead of raw option-set numbers, and page through @odata.nextLink until you have the full pipeline rather than only the first page.
Then exercise judgement over that list rather than applying one blunt rule. The signals that matter: a deal with no modification for 14 or more days has gone quiet; a deal whose estimated close date is already in the past, or falls within the next 7 days while the deal is still sitting in an early sales stage, is not going to land on time; and a high-value deal that has slipped backwards a stage is the most urgent of all. Weigh these together with deal value, so a large deal that is mildly stale can outrank a tiny deal that is badly stale. Do not flag a deal just because it is new, and do not flag a late-stage deal that is clearly still moving.
Use Retrieve Record to pull fuller detail on anything that looks risky before you write about it, so the reasons you give are grounded in the actual record rather than guessed from a list row. For the riskiest deals it is also worth querying related activity records for that opportunity to confirm whether the silence is real or whether someone has logged a call or email that did not touch the deal record itself. If auditing is enabled in the environment, the change history is the reliable way to confirm a backwards stage move or a close date that has been pushed repeatedly. Where you cannot establish history, say the deal looks stalled rather than asserting it regressed. Never invent a reason.
Group the flagged deals by owner. Resolve each owner from _ownerid_value with Retrieve Record against the systemuser table to get their full name and internalemailaddress. Then map each owner to a Slack account: use Slack List Users to find the workspace member whose profile email matches the owner's Dynamics email, use Open a Conversation to get that person's DM channel, and use Send a Message to deliver the nudge. If no Slack account matches an owner's email, skip the DM rather than messaging the wrong person, and note the unmatched owner in the leadership summary so it can be corrected.
Each DM should be short and immediately actionable: a one-line opener, then the owner's flagged deals ranked most urgent first, capped at the top five so it stays readable. Give each deal its name, its value, its close date, one plain sentence on why it was flagged, and one concrete suggested next step for that specific deal. Suggest something a rep can actually do today, like re-confirming the close date with the champion or booking a call, not generic advice to follow up. Write in Slack mrkdwn, which uses single asterisks for bold and angle-bracket links, not standard Markdown.
Finally, post one aggregate summary to the sales leadership channel: how many deals were flagged, the total value at risk, the breakdown by owner, and the handful of deals that most need a manager to step in. This is a roll-up for pattern spotting, not a repeat of every DM.
The workflow must stay quiet on good days. An owner with nothing flagged gets no DM at all, not an empty or all-clear message. If nothing is flagged anywhere in the pipeline, skip the leadership post too and end the run silently. Treat the deal data as read-only throughout: never edit deals, change stages, or update close dates in Dynamics 365. Pace the Slack messages so you stay within its roughly one message per second per channel limit, and if Dynamics 365 returns a rate-limit response, honor the Retry-After delay and resume rather than dropping owners from the run.
What does this prompt do?
- Reviews every open deal in your Dynamics 365 pipeline at 8am each weekday, before the selling day starts
- Applies judgement rather than one blunt rule: deals that have gone quiet, deals closing in the next few days that are still stuck in an early stage, deals whose close date has already passed, and big deals that have slipped backwards
- Sends each owner a private Slack message with a short ranked list of only their at-risk deals, each with a one-line reason and a suggested next step
- Posts one roll-up to your sales leadership channel so managers see the whole picture without opening the CRM
- Stays completely silent for anyone whose deals all look healthy, so the nudge keeps its meaning
What do I need to use this?
- A Microsoft Dynamics 365 account with permission to read your sales pipeline
- A Slack workspace connected to the agent, with permission to send direct messages
- Deal owners recorded in Dynamics 365 with the same email address they use in Slack, so the agent can match them up
- A Slack channel for the leadership summary
How can I customize it?
- Change the schedule: run it Monday only, shift it to 7am, or move it to a Friday afternoon wrap-up
- Tune the thresholds: how many days of silence counts as stale, how wide the closing-soon window is, and the value at which a deal counts as high value
- Adjust the tone and length of the DMs, or cap each one at the top three deals so nobody gets a wall of text
- Change who receives the leadership roll-up, or have it post an all-clear on clean days instead of staying silent
FAQs
What makes a deal count as stale?
Will my reps get a message every single day?
Does this change anything in Dynamics 365?
What if someone's Dynamics 365 email does not match their Slack email?
Can I get this in Microsoft Teams instead of Slack?
Do I need a specific Dynamics 365 plan?
Related templates
Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.
Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.
Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.
Every weekday morning, every appointment that fell through yesterday gets a personal text or email inviting them to rebook, plus a task for the right rep.
Pick any date range up to 120 days and see return volume, refund versus exchange mix, and the products behind every number, recalculated each time you open it.
Every newsletter gets read, checked and signed off in one place, so nothing goes out with a broken link or a half-filled greeting.
Stop letting good deals go quiet.
Put a second pair of eyes on your pipeline every morning, so the deals drifting toward a slow no get caught while there is still time to save them.