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.

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

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.

Developer setup

Auth setup and mcp.json for Claude Code and Cursor
  • HubSpot: Sign in with OAuth in your client (run /mcp in Claude Code). Do it once interactively, and the client stores and refreshes the token.
  • Slack: Sign in with OAuth in your client (run /mcp in 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

  1. 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.
  2. Look up each deal owner in Slack by their email address. List anyone you can't match exactly, and skip them.
  3. 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.
  4. 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)

Where this goes wrong

Gotchas

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

Vendor sites: HubSpot · Slack. If we join an affiliate program, these links will be labeled as affiliate links.