Kick off new customers in Coda when a HubSpot deal closes won

When a HubSpot deal closes won, draft a Coda kickoff brief, log it on your projects tracker, and post a Slack handoff to implementation.

Agentic Task
HubSpotCodaSlack BotSalesOperationsOnboarding AutomationNotifications & AlertsContent Generation
PromptCreate

Build me an agent workflow that turns every closed-won HubSpot deal into a ready-to-go customer kickoff in Coda, plus a handoff message in Slack for the implementation team.

Trigger: HubSpot webhook on deal property change. Only run when the deal's stage changes to closed won (in whichever pipeline I configure). Ignore other stage changes.

When the agent fires, it should:

1. Call HubSpot Get Deal for the deal id from the webhook, with associations to company and contacts and with the properties I care about (deal name, amount, close date, pipeline, stage, owner, deal notes / description, any custom scope fields). Resolve the company name and the primary contact's name, title, and email. Resolve the deal owner's name and email.

2. Synthesize a kickoff brief from the HubSpot data. Don't just field-map. Read the deal notes and infer scope and risk. The brief should have these sections: Background (what we sold and why they bought, in 2-4 sentences); Stakeholders (the company, the primary contacts with roles, and the AE who closed it); Scope (what implementation needs to deliver, inferred from the notes); Suggested first-week agenda (kickoff call agenda, intros, success criteria, technical discovery); Open questions for the AE (anything ambiguous in the notes that implementation will need clarified). Use plain prose, not JSON or code blocks. If a section has no signal, say so explicitly instead of inventing detail.

3. Call Coda Create Page inside my customer projects doc (I'll pick the doc id during setup). Page title should be "Kickoff: <Company Name> - <Deal Name>". Page body is the brief from step 2, formatted with markdown headings for each section.

4. Call Coda Insert or Upsert Rows on my projects tracker table inside that same doc. Use keyColumns set to the deal id column, so if the same deal fires again the row updates instead of duplicating. Columns to set: Deal ID, Company, Deal Name, Amount, Close Date, AE / Deal Owner, Primary Contact, Kickoff Doc (the URL of the page created in step 3), Status (set to "Kickoff scheduled").

5. Call Slack Bot Send a Message to my #customer-handoffs channel (I'll pick the channel at setup). Message should be short and scannable: a one-line win headline with the company, amount, and AE; a 2-3 bullet TL;DR of scope; and a link to the new Coda kickoff page. Use Slack mrkdwn formatting (single asterisks for bold, <url|text> for links).

Make the Coda doc id, the tracker table id, the closed-won stage id (or label) I want to watch for, and the Slack channel all configurable inputs so I can set them once during setup. The agent should be idempotent on re-fires for the same deal: same Coda page (update if it exists, otherwise create), same tracker row (upsert on deal id), and re-post the Slack message so the team sees the latest state.

What does this prompt do?

  • The moment a deal moves to closed won in HubSpot, you get a kickoff brief in Coda built from the real deal notes, contacts, amount, close date, and owner.
  • A new row lands on your projects tracker, keyed to the deal so re-runs update the same record instead of creating duplicates.
  • Your handoff channel in Slack gets a clean win summary with a direct link to the kickoff doc, so implementation knows exactly what to pick up.
  • No more AEs pasting half-written notes in a channel and tagging customer success to figure out the rest.

What do I need to use this?

  • A HubSpot account with deals enabled and permission to read deals, companies, and contacts.
  • A Coda doc you use as your customer projects workspace, with a projects tracker table inside it.
  • A Slack workspace and the channel you want handoffs posted to, for example a customer handoffs channel.

How can I customize it?

  • Point it at whichever Coda doc and tracker table your team already uses for customer projects.
  • Change the Slack channel, or send to a private channel for sensitive or enterprise deals.
  • Reshape the kickoff brief sections (background, stakeholders, scope, first-week agenda, open questions for the AE) to match how your implementation team likes to receive context.
  • Add a filter so only deals above a certain amount, or in a specific pipeline, trigger the kickoff.

FAQs

Does this work with HubSpot Free, or do I need a paid tier?
It works on HubSpot Free and every paid tier. As long as you have deals enabled and the person connecting can view them, the workflow can read the deal, company, and contacts.
What if a deal reopens and then closes won a second time?
The Coda tracker row is keyed by the HubSpot deal id, so the second run updates the existing row instead of creating a duplicate. The kickoff brief and Slack handoff still fire so the team sees the latest state.
Can I post the handoff to more than one Slack channel?
Yes. Tell the workflow which channels you want and it will send the same handoff to each. Common setups post once to a public wins channel and once to a private implementation channel.
What happens if the deal notes are thin or messy?
The brief leans on the structured fields it does have (company, contacts, amount, close date, owner) and explicitly lists open questions for the AE, so the gaps are surfaced instead of hidden.
Do I have to use a specific Coda template for the projects doc?
No. Point it at any Coda doc and any tracker table, and the workflow will use your existing structure. It does not impose a template.

Related templates

A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App
LiveKit live operations console for room moderation

Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.

LiveKit
Slack Bot
General Input Database
App
Wake up dormant Keap leads with a researched reason

Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.

Keap
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop hand-writing customer kickoffs after every closed won.

Connect HubSpot, Coda, and Slack once, and Geni builds the brief, updates the tracker, and pings implementation the moment the deal closes.