Skip to content
ConduitConduit

Closed-Won Handoff Digest

A worked example of an advanced workflow: a Claude-managed scheduled agent that, once a week, reads the HubSpot CRM for deals that moved to Closed Won since the last run, and posts a handoff summary (client name, deal value, key contacts) to Slack so the delivery team has a clean trigger instead of hearing about a new client secondhand. There are no servers and no code to deploy: the agent is a saved prompt plus a schedule plus two MCP connectors, running in Claude’s cloud.

This is the sales-to-delivery bridge companion to Sales Pipeline Pulse — that workflow reads the same HubSpot deal data to track pipeline health across every open stage; this one reads it to catch the moment a deal crosses into Closed Won and hand it off cleanly.

The finished workflow runs unattended on a weekly cron. Each run it lists HubSpot deals, filters to ones that moved to Closed Won stage within the trailing week, pulls each deal’s associated company and contact records, and publishes a handoff digest to Slack so the onboarding or delivery team has everything they need to start without chasing sales for details.

Before building, your Claude account needs all of the following:

Requirement Notes
Conduit connector Connected in claude.ai (https://conduit.wyre.ai/v1/mcp). Provides the vendor tools. See Connecting an AI Client.
HubSpot connected in Conduit The HubSpot vendor connection must be able to read deals, companies, and contacts. Verify with conduit__search_tools (query: “hubspot”). This guide reuses hubspot__hubspot_list_deals and hubspot__hubspot_list_companies, the same tools Sales Pipeline Pulse already confirms are live — but always re-verify tool names against the catalog before building, they can change.
Slack connector The first-party Slack connector connected in claude.ai (https://mcp.slack.com/mcp). Provides slack_send_message.
Scheduled routines access Created via the /schedule capability; managed at claude.ai/code/routines.
A destination Slack channel e.g. #delivery or #onboarding, plus its channel ID. The Slack connector must have access to it.
  • Re-check HubSpot tool names against the catalog before building, same discipline as every other HubSpot-based guide on this site. Call conduit__search_tools with query "hubspot" first and use whatever names the catalog actually returns, don’t assume the names below are still current.
  • Filter by stage transition, not just current stage. A deal that has been sitting in Closed Won for months is not a new handoff. The routine needs the date the deal entered Closed Won, not just its current stage. If hubspot__hubspot_list_deals doesn’t directly expose a stage-change timestamp, use the deal’s closedate (or equivalent close-date field, name may vary) as the practical proxy and confirm at build time that this reliably tracks with recent closures rather than an old deal that was edited for an unrelated reason.
  • Resolve company and contact details from the deal’s associations, not a second full CRM sweep. Pull only the company/contact records associated with each newly-closed deal via hubspot__hubspot_list_companies, not a full re-list of every company in the CRM.
  • A weekly cadence can miss the “handoff should happen today” urgency for a fast-moving deal. If your team wants same-day handoff instead of a weekly batch, this same routine pattern can run daily, weigh that against the added HubSpot read volume before shortening the cadence.
  • permitted_tools must be populated per connector. A routine with a connector attached but an empty permitted_tools list runs with no tools and silently does nothing.
  • A routine reaches only its attached connectors. Notifications must go through the Slack connector’s tools, not an outbound webhook.
  • Faster-than-hourly cadences are rejected. A weekly cron is well within that limit.
Build me a scheduled Closed-Won Handoff Digest agent. Do all of this end to end:
1. Confirm the Conduit connector works and HubSpot is reachable. Call
conduit__search_tools with query "hubspot" and confirm the exact tool
names for listing deals and listing/resolving companies (expected to be
hubspot__hubspot_list_deals and hubspot__hubspot_list_companies, matching
the convention already confirmed in the Sales Pipeline Pulse guide, but
verify against the live catalog before proceeding).
2. Call the deals-list tool and inspect one Closed Won deal's actual fields.
Confirm which field tracks the close/stage-change date (commonly
closedate on a HubSpot deal, but confirm the exact field name returned by
this tool) and which fields carry the associated company and contact
references.
3. Confirm a Slack connector is connected. Note the destination channel name
and ID (e.g. #delivery). If Slack does not show in the /schedule
connector list, read its connector_uuid and url from an existing routine
that already uses Slack (RemoteTrigger list -> get -> mcp_connections).
4. Create a Claude-managed scheduled routine named "Closed-Won Handoff Digest":
- Schedule: weekly, cron "0 13 * * 1" (Monday 09:00 America/New_York =
13:00 UTC). Faster-than-hourly cadences are rejected.
- Attach TWO connectors, each with permitted_tools populated:
* Conduit: the confirmed HubSpot deals-list and companies-list tools
(READ only)
* Slack: slack_send_message
An empty permitted_tools list = the routine runs with no tools.
- Routine prompt: every run, list deals, filter to ones that closed won
in the trailing 7 days, resolve each deal's company and primary
contact, build a handoff summary, post it to Slack. Use the routine
prompt below, substituting the exact tool names and field names
confirmed in steps 1-2.
5. Trigger a manual run and verify: the Slack message lists real, recently
closed-won deals (spot-check one against HubSpot directly), and no
older/stale deal appears in the digest.
You are the Closed-Won Handoff Digest agent. You run weekly, READ-ONLY
against HubSpot. You must NEVER create or modify any HubSpot record, only
read and report.
1. Call <confirmed HubSpot deals-list tool> to list deals. Filter to deals
whose current stage is Closed Won and whose close/stage-change date (the
exact field confirmed at build time) falls within the last 7 days. Do not
include deals that closed earlier than that window even if they are still
marked Closed Won.
2. For each newly-closed deal, resolve the associated company via
<confirmed HubSpot companies-list tool> to get the company name and any
primary contact on record.
3. Build a handoff summary. For each deal report: client/company name, deal
value, primary contact (name and any available email), the deal's close
date, and a link back to the deal in HubSpot if the tool response
includes one.
4. slack_send_message to the destination channel with the digest. If more
than a handful of deals closed this week, format as a numbered list, one
entry per deal, so delivery can scan and claim handoffs quickly.
5. If a deal has no resolvable company or contact record, include it in the
digest anyway with a note ("company/contact not found, check CRM
directly") rather than skipping it silently, a handoff that goes
unmentioned is worse than an incomplete one.
6. If no deals closed won in the trailing week, post a short message saying
so plainly rather than staying silent, silence is indistinguishable from
a broken routine.

The sales-to-delivery bridge, specifically

Section titled “The sales-to-delivery bridge, specifically”

This workflow reads the exact same HubSpot deal data Sales Pipeline Pulse already reads weekly, filtered to a different slice: not the whole open pipeline, just the deals that just crossed the finish line. Sales Pipeline Pulse answers “how healthy is the pipeline”; this routine answers “what just landed and who owns picking it up.”

Filtered by stage-change timing, not current stage alone

Section titled “Filtered by stage-change timing, not current stage alone”

A deal sitting in Closed Won since last quarter isn’t a new handoff. The routine’s whole job depends on catching the transition into Closed Won within the reporting window, not just the deals that happen to currently sit in that stage, which is why the build prompt spends a step confirming exactly which field tracks that transition before the routine prompt is finalized.

The routine only ever calls list/read tools against HubSpot and never attempts to write back to the CRM. The handoff record of truth stays in HubSpot; this routine’s only write action is the Slack message.

The natural pairing, beyond Sales Pipeline Pulse, is the delivery side of onboarding: once a client is handed off here, a project-tracking workflow (see the Project Manager workflows on this site) can pick up the actual onboarding checklist. This routine’s job ends at the handoff, it deliberately doesn’t try to own onboarding itself.

For delivery variations, posting to a DM instead of a channel, or routing by deal owner, see the delivery adapters guide.

Questions or a workflow you’d like documented? See Getting support.