Daily stalled Salesforce deals nudge in Slack

Every morning, find Salesforce opportunities that have gone quiet, research the account's latest news, and DM each rep a Slack nudge with a suggested next step.

Agentic Task
SalesforceSlackInternet SearchSalesNotifications & AlertsDaily DigestsResearch & Monitoring

Build me an agent workflow that runs every weekday at 8:00am in my local timezone. Its job is to find stalled deals in Salesforce, do quick research on each account, and send the deal owner a personalized Slack nudge.

Step 1. Pull stalled opportunities from Salesforce. Use a SOQL query against Opportunity for records where IsClosed = false, LastActivityDate is older than 14 days ago (or LastActivityDate is null and CreatedDate is older than 14 days ago), and CloseDate is within the current quarter. For each opportunity, return Id, Name, StageName, Amount, CloseDate, LastActivityDate, OwnerId, and AccountId. Skip opportunities that were already nudged by this workflow in the last 3 days (track this in workflow memory keyed by opportunity Id).

Step 2. For each unique AccountId, look up the Account in Salesforce to get the account Name, Website, and Industry. Then run a web search for recent news about that company. Use queries like "<Account Name> funding", "<Account Name> product launch", "<Account Name> hiring OR layoffs", and "<Account Name> news". Only keep results from the last 60 days. If nothing relevant turns up, note that explicitly instead of stretching weak signals.

Step 3. Group stalled opportunities by OwnerId. For each owner, look up the Salesforce User to get their email, then resolve that email to a Slack user. If no Slack user matches, skip that rep and add them to a run summary.

Step 4. For each rep, compose one Slack DM that lists their stalled deals, one short paragraph per deal. Each paragraph should include the deal name, amount, stage, days since last activity, close date, the most relevant fresh signal from the web search (with a source link), and a suggested next step grounded in that signal. Keep the tone direct and useful, not pushy. If there was no recent news for the account, just suggest a clean check-in based on stage and time elapsed. Open a DM to that Slack user and send the message.

Step 5. After all DMs are sent, post a short run summary to the #revops or #pipeline-hygiene channel (let me pick when I configure it): how many opportunities were flagged, how many reps were nudged, and any reps that were skipped because no Slack match was found.

Constraints: do not write anything back to Salesforce. Do not invent news. Always cite source URLs for any signal you reference. If the SOQL query returns more than 200 stalled opportunities, cap per-rep deal count at 5 (the most overdue) and mention the cap in the DM.

Additional information

What does this prompt do?
  • Queries Salesforce each morning for open opportunities with no activity in the last 14 days and a close date inside the current quarter.
  • For each stalled deal, pulls the related account and looks up the company's latest news, funding, and product launches on the open web.
  • Drafts a short, account-specific nudge with a suggested next step grounded in the news it found.
  • Sends each nudge as a Slack DM to the deal's owner so reps see a tailored prompt instead of a generic stale-deals report.
What do I need to use this?
  • A Salesforce account with read access to Opportunities, Accounts, and Users (and the standard LastActivityDate field populated).
  • A Slack workspace where the agent can send DMs, with rep email addresses matching their Salesforce User records.
  • Web search enabled so the agent can pull recent account news.
  • Optional: a definition of stalled that matches your team (default is 14 days no activity).
How can I customize it?
  • Adjust the stalled threshold (7, 14, or 30 days) and the close-date window (this quarter, next 60 days, etc.).
  • Filter to a specific stage range, deal size, or owner team so only the deals worth nudging on get pinged.
  • Change the delivery channel from DM to a per-rep thread in a shared #pipeline-hygiene channel, or send a manager rollup as well.
  • Tune the nudge tone and the kinds of signals the agent should prioritize (funding rounds, leadership changes, product launches, layoffs).

Frequently asked questions

What counts as a stalled deal?
By default, any open Salesforce opportunity whose LastActivityDate is more than 14 days ago and whose CloseDate is within the current quarter. You can tighten or loosen both thresholds when you adapt the prompt.
Where does the account news come from?
The agent runs targeted web searches for each account (company name plus terms like funding, launch, hiring, layoffs, leadership) and only includes results from the last 60 days. If nothing recent shows up, it says so instead of inventing a hook.
How does it know which Slack user to DM?
It reads the opportunity's OwnerId from Salesforce, looks up the user's email, and resolves that email to a Slack user before opening a DM. Reps with no matching Slack account are skipped and listed in the run summary.
Will reps get spammed every day?
Each rep gets one DM per day that bundles all their stalled deals into a single message, with one short paragraph per deal. Deals that were already nudged in the last 3 days are deduped so the same opportunity does not get pinged twice in a row.
Does this update Salesforce?
Not by default. The agent only reads from Salesforce and writes to Slack. You can extend the prompt to log a Task or add a Note on each nudged opportunity if you want an audit trail in the CRM.

Stop letting deals quietly slip past close date.

Connect Salesforce and Slack once, and Geni surfaces stalled opportunities with fresh account context every morning before standup.