Daily sales pipeline digest in Slack

By General Input

Every weekday at 8am ET, post a consistent sales pipeline summary to your revenue channel with stage moves, stale deals, top deals, and overdue tasks.

Integrations

  • General Input CRM
  • Slack Bot

Type

Deterministic Code

Categories

  • Sales
  • Operations

Build a deterministic, code-based workflow that posts a morning sales pipeline digest to a Slack channel every weekday at 8am ET. The flow is fixed nodes only: list, group/filter, format, post. No AI summarization, no judgement calls. The value is the same metrics in the same place every day.

Trigger: cron, Monday through Friday at 08:00 America/New_York.

Step 1. Call general-input-crm "List Pipelines" and pick the active sales pipeline. Default to the pipeline named "Sales" if it exists, otherwise the first pipeline returned. Expose the pipeline id as a configurable input so the user can override it.

Step 2. Call general-input-crm "Get Pipeline Board" for that pipeline id to pull every open card with its stage, owner, value, updatedAt, and most recent touchpoint timestamp.

Step 3. Bucket the cards into three sections in code:

(1) Stage moves in the last 24 hours: any card whose current stage was entered within the last 24 hours. Show card name, owner, from-stage to to-stage, and value.

(2) Stale deals: open cards with value greater than a configurable threshold (default $5,000) that have had no stage change and no touchpoint or update in 7 or more days. Sort by days-since-activity descending. Cap at 10 rows.

(3) Top 5 deals by value still in late stages: the 5 highest-value open cards whose current stage is in a configurable late-stage list (default: any stage whose name contains "negotiation", "contract", or "closing"). Show card name, owner, stage, and value.

Step 4. Call general-input-crm "List Tasks" with status=open. Filter to tasks whose due date is before today, then group by owner. For each owner with one or more overdue tasks, render: owner name, count, and the 3 most overdue task titles.

Step 5. Assemble a Slack Block Kit message with a header ("Morning pipeline, {weekday date}"), one section per bucket above with a clear heading, an overdue-tasks section, and a divider between sections. Use mrkdwn, not standard Markdown, in text fields. If a section is empty, render a short "No items" line rather than dropping the section, so the structure is identical every day.

Step 6. Call slackbot "Send a Message" to a configurable channel (default #revenue) with the block-kit payload. Make the channel a workflow input so the user can change it without editing the workflow.

Inputs to expose on the workflow: pipelineId (optional override), staleDealThresholdUsd (default 5000), staleDealDays (default 7), lateStageKeywords (default ["negotiation", "contract", "closing"]), slackChannel (default #revenue), runTime (default weekdays 08:00 America/New_York).

Constraints: deterministic only. Do not call any LLM-summarization step. Do not invent operations. The only integrations used are general-input-crm (List Pipelines, Get Pipeline Board, List Tasks) and slackbot (Send a Message).

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them