CRM hygiene sweep: send each rep their own fix-it list in Slack
HubSpot + Slack
Who it's for
Sales leaders and RevOps who want stale deals cleaned up before forecast calls, without editing anyone's records for them.
What you get
One rep's Slack message, drafted for your approval. Sample output: every company and person in it is fictional.
To: @alex (Alex Rivera, fictional) Hi Alex, quick CRM tidy-up before Thursday's forecast. 4 of your open deals need a look: - Quarry Lane Analytics (fictional), $48K: close date passed on Oct 10. Still on track? - Fernhill Software (fictional), $22K: no next step set - Larkspur Freightworks (fictional), $15K: no contacts on the deal - Mossgate Labs (fictional), $9K: no activity in 31 days, and no next step No changes have been made in HubSpot. Reply here if any of these are wrong. --- Sweep summary: 38 open deals checked, 11 need fixes across 4 owners. 3 drafts ready. 1 owner (Sam) has no matching Slack user, so that one is skipped. Reply 'send all' or 'send 1, 3' to approve.
Time and cost
Estimate About 10–15 minutes, most of it reviewing the drafts.
Assumptions: One weekly sweep over about 40 open deals and 4 deal owners.
- HubSpot: Reads only: open deals, their owners and associated contacts. Credit use not confirmed by HubSpot.
- Slack: A user lookup per owner, plus one direct message per owner after you approve it. Credit use not confirmed by Slack.
Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.
MCP servers
Every server is confirmed in: Claude
-
ClaudeChatGPTRead + writeCredits not confirmed
https://mcp.hubspot.com -
ClaudeClaude CodeCursorRead + writeCredits not confirmed
https://mcp.slack.com/mcp
Set up in a chat app
Every server in this recipe is confirmed for Claude. Connect each one, then paste the prompts below into one conversation.
- Connect HubSpot without code (Claude, ChatGPT)
- Connect Slack without code (Claude)
Developer setup
Auth setup and mcp.json for Claude Code and Cursor
- HubSpot: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token. - Slack: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token.
Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.
{
"mcpServers": {
"hubspot": {
"url": "https://mcp.hubspot.com"
},
"slack": {
"url": "https://mcp.slack.com/mcp"
}
}
}
Step-by-step prompts
- Find all open HubSpot deals and flag any with a close date in the past, no next step, no associated contacts, or no activity in 21 days. Group them by deal owner and show me a table. Don't change any records.
- Look up each deal owner in Slack by their email address. List anyone you can't match exactly, and skip them.
- For each matched owner, draft one short direct message listing only their flagged deals, one line per deal with what's missing. Show me all the drafts.
- Send each direct message only after I approve it. Then give me a one-line summary I can post in #revops: how many deals were checked and how many need fixes, with no deal names.
Run it on a schedule (optional)
- Run it weekly, a day before forecast or pipeline review, so reps have time to fix things.
- In a scheduled run, stop at the drafts: send them to yourself or save them as a canvas, and approve before anything reaches the reps.
- Both HubSpot and Slack use OAuth, and Slack needs a workspace admin to approve the integration first. Test one manual run before you schedule it.
Where this goes wrong
- Message goes to the wrong person. The deal owner's HubSpot email may not match a Slack user (different domain, nickname, contractor account). Match on email first, list any owner without an exact match, and skip them instead of guessing.
- Closed deals flagged as stale. A past close date is normal on won or lost deals. Make sure the sweep only reads open deals, and check the deal count against a HubSpot view once.
- Rules that don't fit your process. 'No next step' only works if your team uses that field. If a rule flags most deals, drop it or swap in a field your reps actually fill in.
- Deal details in the wrong place. Amounts and customer names belong in direct messages, not a public channel. If you post a summary, keep it to counts.
Gotchas
- HubSpot only returns deals the connected user can see. Connect with an account that can see the whole pipeline, or the sweep will miss deals.
- Slack's MCP server needs a workspace admin to approve it before anyone can connect.
- Messages are sent through the Slack account you connected, so reps may see them as coming from you. Send yourself a test message first so you know how they'll look.
Download
Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.
Download crm-hygiene-sweep-slack.md
New recipe and breakage notes every week
Vendor sites: HubSpot · Slack. If we join an affiliate program, these links will be labeled as affiliate links.