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
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every Tuesday we pull your best new reviews, draft social captions, email testimonials and product page quotes, then stage them in Notion for approval.
Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.
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.