# CRM hygiene sweep: send each rep their own fix-it list in Slack

Source: https://mcpforgtm.com/recipes/crm-hygiene-sweep-slack (StackMCP, independent directory of official MCP servers)

## Goal

Sales leaders and RevOps who want stale deals cleaned up before forecast calls, without editing anyone's records for them.

## Connected tools

- HubSpot: https://mcp.hubspot.com (setup: https://mcpforgtm.com/tools/hubspot)
- Slack: https://mcp.slack.com/mcp (setup: https://mcpforgtm.com/tools/slack)

## Guardrails

- Read only in HubSpot. Don't edit, reassign or close any deal.
- Only include open deals.
- Match deal owners to Slack users by email, and skip anyone without an exact match.
- Show me every draft and send only the ones I approve.
- Put deal details in direct messages only. Any channel post gets counts only.

## Steps

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.

## Expected output

One rep's Slack message, drafted for your approval. Example (all names 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.
```

## Watch for

- 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.
