Scale · Automation & Workflow Design
Design a Slack-CRM Deal Update Automation
Push real-time deal moves to Slack and let reps update the CRM with a slash command — no tab-switching, no after-hours data entry.
managerfounderAdvanced⏱ 20-40 min/day per rep + sharply higher CRM update compliance
When to use
Use when your team lives in Slack but neglects the CRM, or when deal stage changes get lost in 1:1 DMs instead of the system of record. Especially useful for distributed teams where Slack is the de facto operating layer.
The prompt
You are a sales-ops automation engineer for digital marketing agencies — every workflow you build is paste-ready into Zapier/Make/HubSpot Workflows and uses production-grade error handling. Agency: [AGENCY_NAME] — [SERVICES] | CRM: [CRM_TOOL] | Automation tool: [AUTOMATION_TOOL] | Slack workspace: [SLACK_WORKSPACE] | Channels: [CHANNELS] | Trigger events: [TRIGGER_EVENTS] | Slash command: [SLASH_COMMAND] | Stakeholders to notify: [STAKEHOLDERS] Design a two-way Slack-CRM integration that (a) posts real-time deal updates (stage change, new high-value deal, deal lost, deal won) to the right channel with context, and (b) lets reps run a slash command to update a deal field, log a note, or change a stage without leaving Slack. - Every step has action, tool, inputs, outputs, conditions - Inbound (CRM → Slack): real-time, channel routing by deal size and pipeline - Outbound (Slack → CRM): slash command must require deal selection (modal picker), validate field input, write back, and confirm - Include audit log: who updated what from Slack, when - Include rate limiting to avoid Slack channel spam (batch updates if >5 events in 60s) - Include error / fallback path if CRM write fails (return error in modal, do not silently drop) - No actions that expose deal data in public channels Output as: Inbound Trigger Map | Outbound Slash Command Spec | Step 1..N (per direction) | Conditional Branches | Error Handling | Audit Schema | Sample Slack Card. Paste-ready into [AUTOMATION_TOOL].
Variables
- [AGENCY_NAME] — Your agency name
- [SERVICES] — Service lines
- [CRM_TOOL] — Your CRM
- [AUTOMATION_TOOL] — Workflow platform (Zapier, Make, or Slack workflow builder + custom)
- [SLACK_WORKSPACE] — Workspace name
- [CHANNELS] — Channel routing rules
- [TRIGGER_EVENTS] — CRM events that push to Slack
- [SLASH_COMMAND] — Command name (e.g., /deal)
- [STAKEHOLDERS] — Rep, manager, founder per event
Example input
Agency: Crestline Digital — SEO + paid + analytics | CRM: HubSpot | Automation tool: Make + HubSpot custom app | Slack workspace: crestline.slack.com | Channels: #wins (won), #pipeline (stage changes), #leadership-private (>$10k MRR moves) | Trigger events: stage change, deal won, deal lost, new deal >$10k MRR | Slash command: /deal | Stakeholders: deal owner, manager, founder
Example output
INBOUND TRIGGER MAP: - Deal Won → #wins (everyone) - Deal Lost → DM owner + manager - Stage Change → #pipeline (deal owner @-mentioned) - New Deal >$10k MRR → #leadership-private OUTBOUND SLASH COMMAND SPEC: /deal opens modal → step 1 deal search by company/contact → step 2 action picker (update stage / log note / change amount / set close date) → step 3 input fields → submit. INBOUND Step 1 — HubSpot webhook 'deal.propertyChange' → Make scenario. Step 2 — Route based on property + value to channel mapping. Step 3 — Rate limit: aggregate >5 events in 60s into a single 'pipeline pulse' card. Step 4 — Post Slack Block Kit card with company, value, stage, owner, deal link, 'Quick Update' button. OUTBOUND Step 1 — Slack /deal command → Make webhook. Step 2 — Open modal, query HubSpot for deal options matching user input. Step 3 — On submit, validate field (e.g., stage must be in pipeline enum). Step 4 — HubSpot PATCH deal; on success, ephemeral confirmation + Slack thread post for visibility. ERROR HANDLING: CRM write fail → return modal error with retry; no silent drops. Slack post fail → push to dead letter queue, alert ops. AUDIT SCHEMA: timestamp, slack_user, slack_user_email, deal_id, field, old_value, new_value, source = 'slack_slash'. SAMPLE SLACK CARD: 'New Deal — Acme Co — $12k MRR — Stage: Discovery — Owner: @maya — [View in HubSpot] [Quick Update]'
Pro tips
- Channel routing by deal value > by service line — founders care about $$, not service mix, and you'll get less mute fatigue
- Rate limiting matters more than you think — five stage changes in a minute is noise that trains the team to ignore the channel
- Audit every Slack-originated CRM update — when a deal stage gets 'wrong', you need to trace it back without a witch hunt
Works with
ClaudeChatGPTGemini
Done with prompts? Time to install the system
Book a STAOS callRelated prompts