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.
What it builds
Section titled “What it builds”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.
Prerequisites
Section titled “Prerequisites”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. |
Known gotchas
Section titled “Known gotchas”- Re-check HubSpot tool names against the catalog before building, same
discipline as every other HubSpot-based guide on this site. Call
conduit__search_toolswith 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_dealsdoesn’t directly expose a stage-change timestamp, use the deal’sclosedate(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_toolsmust be populated per connector. A routine with a connector attached but an emptypermitted_toolslist 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.
The one-shot build prompt
Section titled “The one-shot build prompt”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.The resulting routine prompt
Section titled “The resulting routine prompt”You are the Closed-Won Handoff Digest agent. You run weekly, READ-ONLYagainst HubSpot. You must NEVER create or modify any HubSpot record, onlyread 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.How it works
Section titled “How it works”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.
Read-only by design
Section titled “Read-only by design”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.
Extending it
Section titled “Extending it”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.

