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

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task

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.